Jenkins統合

前提条件と注意事項

  • このガイドは、Jenkins とフリースタイル プロジェクトの構成に精通していることを前提に記述されています。
  • Jenkins 内でレポートを表示するには、次をインストールしておく必要があります HTML Publisher プラグイン
  • CppDepend GUI を使用して、後で分析するための CppDepend プロジェクト ファイルを作成しました
  • CppDepend プロジェクトが処理するアセンブリをすでに正常にチェックアウトおよびコンパイルしている既存のフリースタイルプロジェクトが利用可能です
  • CppDepend は、Jenkins ビルド エージェントとして使用されるすべてのコンピューターにインストールする必要があります。バージョン 6 と 7 で問題なくテストしました
  • 既定の Jenkins コンテンツセキュリティポリシーにより、埋め込まれた CppDepend レポートが正しく表示されません。このガイドには、ポリシーを再設定する手順が含まれています

トップへ

CppDependの呼び出し

現時点では、CppDepend 専用の Jenkins プラグインはないため、統合できる範囲は多少制限されています。

最初のステップは CppDepend を呼び出すことです。次を追加することで実現できます Windowsバッチコマンドを実行 ステップをプロジェクトに追加し、を設定 コマンド 呼び出すフィールド CppDepend.Console.exe プロジェクトのファイル名を渡します。

CppDepend.Console.exe "%WORKSPACE%\myproject\source\Applications\WebCopy\WebCopy.cdproj"

CppDepend.Console.exe では、プロジェクトファイル名を完全修飾する必要があります。%WORKSPACE% 環境変数を使用してエージェントワークスペースの完全修飾パスを取得し、そこにプロジェクトファイル名を追加できます

ビルドで使用される CppDepend やその他の同様のツールを SVN にチェックインして、ビルドエージェントのワークスペースに自動的にチェックアウトされるようにしています。そのため、私の場合は次を指す相対パスを使用できます CppDepend.Console.exe または、CppDepend のバイナリの場所が OS のパスに含まれている場合は、パスを完全に省略できます。

CppDepend Jenkins

CppDepend プロジェクトでの絶対パスまたは相対パスの使用

既定では、CppDepend プロジェクト内のすべてのパスとファイル名は絶対パスです。Jenkins ビルドは一時的なワークスペースで実行され、その場所はエージェントごとに異なる場合があります。このようなシナリオでは、絶対パスの使用は、完全な失敗または古い/予期しない結果のいずれかをもたらす可能性があります。

これを回避するには 2 つの方法があります。1 つ目はコマンドラインスイッチを使用してプロジェクト内のパスを上書きする方法、2 つ目はパスを相対パスにする方法です。

絶対パスの上書き

この InDirsOutDir 引数を使用してオーバーライド パスを指定できます。 InDirs 分析対象のすべてのソース ファイルの場所を制御し OutDir レポートの書き込み先を指定します。注意: InDirs 必要に応じて複数のパスを指定できます。

CppDepend.Console.exe "%WORKSPACE%\myproject\source\Applications\WebCopy\WebCopy.cdproj" /InDirs "%WORKSPACE%\myproject\source\Applications\WebCopy" /OutDir "%WORKSPACE%\myproject\source\Applications\WebCopy\CppDependOut"

相対パスを使用するCppDependの設定

これらの手順はスタンドアロン ツール向けですが、Visual Studio 拡張機能からも機能するはずです。

  • 開く CppDependプロジェクトプロパティ エディタ
  • 選択 参照パス タブ
  • パス リストで、相対パスにする各パスを選択します
  • 右クリックして選択 相対パスとして設定(CppDepend プロジェクト ファイルの場所に対して)
  • 変更を保存

トップへ

ビルドを失敗させる

その場合 Windowsバッチを実行 コマンドがゼロ以外を返す場合、デフォルトで Jenkins はビルドを失敗させます。CppDepend が正常に実行され、 クオリティゲートが失敗 期待されるゼロを返します。ただし、それ以外は正常に実行された場合でも、Quality Gate が失敗した場合はゼロ以外を返します。

ニーズに応じて、この動作を無効にしたい場合があります。たとえば、既存のコードベースで CppDepend を使用している場合、調査すべき本物の違反や誤検出がある可能性があります。

ビルドを不安定としてマークするか、エラーを抑制することで対処できます。

ビルドを不安定としてマーク

この Windowsバッチコマンドを実行 には追加パラメータがあります (の背後に隠れています 詳細 ボタン) ビルドを不安定にするERRORLEVEL。このフィールドの値をに設定すると 1 (重大な違反が検出された場合に CppDepend が返す終了コード)の場合、ビルド結果は Unstable になりますが、実行は継続されます。

エラーの抑制

ステップ名として、 Windowsバッチコマンドを実行が示すように、これは単一のコマンドの実行ではありません。Jenkins は Command フィールドの内容に基づいてバッチファイルを作成し、それを実行します。したがって、エラーを抑制するには、バッチファイルを自分で終了させ、独自の終了コードを提供するだけで済みます。

これを行うには追加 exit /b 0 の新しい行として コマンド フィールド。既存のエラー コードは無視されます。

これを行い、CppDepend が他の理由で実行に失敗した場合、ログファイルを確認しない限りそれを知ることはできません。ビルドを unstable としてマークするだけでよいでしょうが、コマンドを変更して ERRORLEVEL 値を手動で確認し、それに応じて対処することもできます。

HTMLの公開

CppDepend 分析が完了すると、HTML レポートが生成されます。このレポートは、CppDepend の GUI で結果を表示するほどの機能レベルは提供しませんが、多くの有用なデータを提供します。

これをJenkinsに組み込むには、を追加 HTMLレポートを公開 ビルド後ステップ。

  • 設定 アーカイブするHTMLディレクトリ フィールドを CppDepend レポートが保存された場所に設定します。デフォルトでは、これは次の名前のフォルダーです CppDependOut CppDepend プロジェクトと同じフォルダーにあります。
  • 設定 インデックスページ フィールドをレポート名に設定します。レポート名は常に CppDependReport.html
  • 最後に設定 レポートタイトル フィールドは任意の値に設定できます。これは Jenkins のナビゲーション リンクのラベルに使用されます
CppDepend Jenkins 2b

レポートの表示

この記事の冒頭で述べたように、Jenkins には埋め込みリソースを制限するセキュリティポリシーがあります。このポリシーは CppDepend レポートを著しく制限するため、次のように制限を少し緩和する必要があります 前の投稿の通り.

Jenkins ジョブが実行され正常に完了すると、レポートを表示するための新しいナビゲーションオプションがジョブのサイドバーに表示され、ステータス概要から CppDepend レポートにアクセスできるようになります。

CppDepend Jenkins 2

重複を避けるために外部リソース ファイルを使用

CppDepend のもう 1 つの既定動作は、すべてのルールをプロジェクトファイルに保存することです。これらの標準ルールは CppDepend プロジェクトのサイズを大幅に増加させ、変更しないのであれば、それらを何度も重複させる意味は実際にはありません。

幸い、CppDepend ではルールを外部ファイルに保存できるため、CppDepend GUI を使用してルールファイルを作成しました。これで各プロジェクトは組み込みルールがすべて削除され、外部ファイルを参照するだけになりました。便利です!

プロジェクトが絶対パスを使用している場合は、単純に /RuleFiles/KeepProjectRuleFiles パラメータ CppDepend.Console.exe 必要に応じて絶対バージョンをオーバーライドするため。

同様に、CppDepend バージョン 2017 ではプロジェクトの負債に関する新しい設定が導入され、これらを外部ファイルに保存する機能も提供されます。残念ながら、次には上書きスイッチが用意されていないようです CppDepend.Console.exe、ただし、技術的負債の機能をまだテストしていないため、これが問題になるかどうかは不明です。 (CppDepend チーム注:この点に関するユーザーのフィードバックを歓迎します)

今すぐCppDependを試す

ドキュメントの全機能にアクセスできる14日間無料トライアル。クレジットカード不要。