2017-12-20 69 views
1

私は、CIパイプラインに組み込まれているGoogle Testユニットテストツールの使用を開始しました。シェル内で実行されるコードカバレッジツールがあり、しきい値を設定してパイプラインにジョブとして追加することができますか?私はNodeJS背景から来て、次のようにパイプラインを使用して参照するためターミナルのGoogleテストスイートからC++コードのオーバーヘッドを取得するにはどうすればよいですか?

  1. リンター(eslint)
  2. ユニットテスト(ジャスミン)
  3. コードカバレッジ(イスタンブールカバレッジ& &イスタンブールcheck-カバレッジ)

私が苦労しているのは第3のステップです。 NodeJSでは、受け入れ可能なしきい値を設定することができ、これらが満たされない場合、ジョブは失敗します。

私はこれを私のC++コードのために複製したいと考えていました。これも可能ですか?

+0

gcovがありますが、それはかなり限定されたツールです(たとえば、テンプレートや例外についてのヒントはありません)。また、適切に動作するリンター/コードスタイルチェック/コード書式設定ツールもありません。それは本当に可能ではありません。 C++の開発者が苦しんでいる... – VTT

答えて

1

コードカバレッジは、使用するテストフレームワークにリンクされていません。

LinuxではC++を使用するため、特別なフラグを使用してソフトウェアをコンパイルして、コードカバレッジを有効にする必要があります。 g ++では、引数--coverageを設定する必要があります(また、すべての最適化を無効にすることもお勧めします)。

テストプログラムを実行すると、カバレッジデータを含む多数のファイルが取得されます。これらは、例えば、 lcov
lcovは結果とともにHTMLページを作成できますが、カバレッジ分析の合計もstdoutに出力します。したがって、lcovを実行し、出力をフィルタリングし、測定されたパーセンテージに応じてエラーまたは失敗を報告するスクリプトを作成する必要があります。

Btwでは、lcovに制限を設定して、カバレッジが十分かどうかを定義できますが、これはHTML出力の背景色にのみ使用されます。

これらのトピックでは、ここでStackoverflowで複数のエントリを見つけることができます。これらのタスクはどのように達成できますか。

関連する問題