LoginSignup
1
1

More than 1 year has passed since last update.

CppUTestでカバレッジを測定する

Posted at

Cpputestでカバレッジ測定をしてみたので、そのやり方を記載する。

#Makefile
cpputest-*.*\build内のMakefileWorker.mkの下記定義がデフォルトNとなっているために、gcovが使えないみたい。

# Use gcov, off by default
ifndef CPPUTEST_USE_GCOV
	CPPUTEST_USE_GCOV = N
endif

#解決策
プロジェクト内のMakefileに上記定義をYにした一文を追加する。

#Set this to @ to keep the makefile quiet
SILENCE = @

#---- Outputs ----#
COMPONENT_NAME = Project
#Set this to @ to keep the makefile quiet
SILENCE = @

#--- Inputs ----#
PROJECT_HOME_DIR = .
ifeq "$(CPPUTEST_HOME)" ""
    CPPUTEST_HOME = ../CppUTest
endif
CPP_PLATFORM = Gcc

SRC_DIRS = \
    src\
    src/*

# to pick specific files (rather than directories) use this:    
SRC_FILES = 

TEST_SRC_DIRS = \
    tests \
    tests/*

MOCKS_SRC_DIRS = \
    mocks \

INCLUDE_DIRS =\
  .\
  include \
  include/* \
  $(CPPUTEST_HOME)/include/ \
  $(CPPUTEST_HOME)/include/Platforms/Gcc\
  mocks

CPPUTEST_WARNINGFLAGS = -Wall -Werror -Wswitch-default 
CPPUTEST_WARNINGFLAGS += -Wconversion -Wswitch-enum 

# gcovを使う場合'Y'に
CPPUTEST_USE_GCOV = Y

include $(CPPUTEST_HOME)/build/MakefileWorker.mk

変更後に下記コマンドを実行すると。

make -B gcov
lcov -c -d . -o (任意の名前).info
genhtml -o . (上記と同じ名前).info 

ビルドが成功したら、プロジェクトフォルダにindex.htmlが生成される。
■index.html
キャプチャ.PNG
■評価対象のファイルのカバレッジ状況
キャプチャ1.PNG

プラスα

さらにC1(条件網羅)カバレッジまで測定する方法を下記に示す。

make -B gcov
lcov -c -d --rc lcov_branch_coverage=1 . -o (任意の名前).info
genhtml --branch-coverage -o . (上記と同じ名前).info

キャプチャ2.PNG
※分岐のないファイルはBrancheが-で表示されるため、分岐のあるテスト対象で試してみてほしい。
■分岐のあるテストファイルの結果
キャプチャ3.PNG
赤色のdefault文のパスはこの評価で一度も通っていないことが示されている。
キャプチャ4.PNG

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1