はのは、最小限の作業例を見てみましょうカバレッジレポートから自動生成された例外コードを削除します。
main.cppに:は
[g++/clang++] -std=c++11 -g -Og --coverage -Wall -o main main.cpp
:私は以下のフラグを使用してこのコードをコンパイル
#include <iostream>
#include <string>
int main() {
std::cout << "hello " + std::to_string(42);
return 0;
}
clang 4.0.1
gcc 4.8.5。
in another stackoverflow questionのように、コンパイラは実行されない例外コードを生成するので、コードカバレッジは50%にすぎません。
-fno-exceptions
で例外を無効にすることは、私にとってはオプションではないという問題があります。私が単体テストを書いているコードは、例外を使用するので、それらをすべて無効にすることは選択肢ではありません。
レポートを生成するには、gcovr
、clang ++の場合はさらにllvm-cov gcov
を使用してレポートを生成してください。しかし、私はこれらのツールに縛られていないので、あなたがこの動作を示さない他のツールを持っているなら、それらを提案してください!
基本的には、このコードの単体テストをコンパイル/作成し、例外を有効にして100%分岐/条件付きカバレッジを取得する方法が必要です。方法はありますか?あなたは何のメモリを持っていないときbad_alloc
がスローされる -