Hudsonの使い方21 Hudsonでユニットテスト網羅率測定(C言語)
C言語プロジェクトでも、
ユニットテストの網羅率(カバレッジ)測定をしてみます。
ど〜でもいいことですけど・・・
丸数字って、①〜⑳までしかないのね(;´Д`)
Slave端末にgcovをインストールします。
gccが入っていればgcov入っていると思います。
Slave端末にlcovをインストールします。
lcovでgcovが出力したカバレッジをHTMLに変換します。
Ubuntuでは以下のコマンドでインストールします。
sudo apt-get install lcov
gcov、lcovをmakeから実行できるようにMakefileを変更します。
ついでにMakefileを少し整理してみました。
TARGET=TEST_sort SRCS=$(shell ls *.c) OBJS=$(SRCS:.c=.o) CC=gcc CFLAGS=-L/usr/local/lib LDFLAGS=-lcunit ############################################################################## # コンパイル all: $(TARGET) $(TARGET): $(OBJS) $(CC) $(CLFAGS) $(LDFLAGS) -o $@ $^ %.o: %.c $(CC) $(CFLAGS) -c $< # コンパイル(カバレッジ測定) coverage: make CFLAGS="$(CFLAGS) -fprofile-arcs -ftest-coverage" LDFLAGS="$(LDFLAGS) -fprofile-arcs -ftest-coverage" ############################################################################## # ユニットテスト実行 run: ./$(TARGET) xsltproc cunit-to-junit.xsl CUnitAutomated-Results.xml > UnitTestResults.xml # ユニットテスト実行(カバレッジ測定) run-coverage: make run lcov -c -d . -o lcov.info lcov -r lcov.info *.h -o lcov-temp.info lcov -r lcov-temp.info TEST_*.c -o lcov-html.info genhtml -o html lcov-html.info ############################################################################## # ディレクトリクリア clean: rm -f $(TARGET) *.o core *.xml *.log *.gcno *.gcda *.info rm -r -f html temp # 静的解析 analysis: mkdir temp mv TEST_*.c temp /usr/local/bin/splint.sh -weak -I /usr/local/include *.c > splint.log mv temp/* .
# コンパイル(カバレッジ測定)
coverage: で、「-fprofile-arcs -ftest-coverag」をつけてコンパイルします。
# ユニットテスト実行(カバレッジ測定)
run-coverage:で、lcovを実行してHTMLを生成します。
lcov -r でテストソースとヘッダファイルをカバレッジ対象外にしています。
プロジェクトの設定でシェルの実行を変更します。(赤枠の部分です)
HTML Publisher pluginをインストールします。
ジョブの設定でPublish HTML reportsをチェック
lcovの出力結果ファイルを指定します。(赤枠の部分です)