Jenkins で解析結果を可視化する

Parasoft Jtest/dotTEST の静的解析、単体テストを Jenkins で自動化した際、どのように結果を確認されていますか。専用のダッシュボードツール Parasoft DTP に結果をパブリッシュして WEB ブラウザから閲覧していますか?それとも、出力される HTML レポートファイルを開いて確認していますか?
今回は、Parasoft 製品の解析結果を可視化するための Jenkins 用のプラグイン Parasoft Findings for Jenkins を利用した結果の確認方法をご紹介します。
なお、Jenkins を利用した CI 環境で Parasoft Jtest/dotTEST を利用する方法やそのメリットについては以下の記事でご紹介しています。ぜひ、ご一読ください。

Parasoft Findings for Jenkins とは

Parasoft Findings for Jenkins は Jenkins ジョブで実行された Parasoft 製品の静的解析、単体テストの実行、コードカバレッジ計測の結果を可視化するための Jenkins プラグインです。
プラグインを利用するとトレンドグラフによる結果の推移やビルドごとの結果の詳細を Jenkins 上で確認できるようになります。Freestyle、Maven、および Pipeline ジョブで使用できます。
プラグインの詳細な情報は以下のドキュメントをご確認ください。
Parasoft Jtest は Javaコードに潜むさまざまなセキュリティ脆弱性を早期発見
ソースコードの品質向上を実現します。

>> Parasoft Jtest の詳細はこちら <<

インストール

プラグインは、Jenkins の [Jenkinsの管理] > [Plugins] > [Available plugins] からインストールすることができます。
インストール後、プラグインの有効化と Jenkins の再起動が必要です。

インストールしたプラグインが有効化されていること

設定

解析した結果を確認するための事前設定を行います。

静的解析結果確認用の設定

Maven と Freestyle ジョブ
  • Build Steps > ビルド手順の追加 で静的解析を実行するコマンドを追加します。
  • ビルド後の処理 > ビルド後のアクションの追加 で Record compiler warnings and static analysis results を選択します。

    ビルド後の処理に Record compiler warnings and static analysis results を追加する。
  • 追加した Record compiler warnings and static analysis results で以下の項目を設定します。
    • Tool : [Parasoftの指摘事項] を選択
    • Report File Pattern : 静的解析の実行後に自動生成される report.xml ファイルのパス
    • Skip symbolic links when searching for files : シンボリックリンクを含めたくない場合はチェックボックスを ON
    • Encoding of Report Files : report.xml のエンコーディング文字セット
    • Settings : Parasoft ツールの settings.properties ファイルの場所を指定
    • Custom ID : ツールのカスタム ID とカスタム名を指定
    • Custom Name : ツール名を変更する場合に指定
  • 「適用」をクリックします。

実行環境に合わせて Record compiler warnings and static analysis results を設定する。

単体テスト実行結果確認用の設定

Maven と Freestyle ジョブ
    • Build Steps > ビルド手順の追加 で単体テストを実行するコマンドを追加します。
    • ビルド後の処理 > ビルド後のアクションの追加 で Publish xUnit test result report を選択します。

      ビルド後の処理に Publish xUnit test result report を追加する。
    • 追加された Publish xUnit test result report で以下の項目を設定します。
      • Report Type : [ParasoftAnalyzers-10.x] を選択
      • Includes Pattern : 単体テスト実行後に自動生成される report.xml ファイルのパス
    • 「適用」をクリックします。

      実行環境に合わせて Publish xUnit test result report を設定する。

    単体テストカバレッジ確認用の設定

    Maven と Freestyle ジョブ
      • Build Steps > ビルド手順の追加 で単体テストの実行、カバレッジ計測を行うコマンドを追加します。
      • ビルド後の処理 > ビルド後のアクションの追加 で Record Parasoft code coverage results を選択します。

        ビルド後の処理に Record Parasoft code coverage results を追加する。
      • 追加された Record Parasoft code coverage results で以下の項目を設定します。
        • Report File Pattern : 動的解析の実行後に自動生成される coverage.xml ファイルのパス
        • Reference Job : 参照ジョブフィールドに使用するジョブの名前を設定
        • Reference Build : 参照ビルドフィールドに参照ジョブのビルド番号を設定
        • Quality gates (オプション)  :ビルド後に評価する Quality gates を追加
        • Source Code Encoding : ソース ファイルの正しいエンコーディングを選択
      • 「適用」をクリックします。

        実行環境に合わせて Record Parasoft code coverage results を設定する。

      静的解析の結果を確認する

      ジョブのトップ画面に Parasoft Warnings Trend トレンドグラフが追加され、グラフ内の任意の場所にマウスポインターを合わせると該当のビルドにおける静的解析結果が表示されます。

      トレンドグラフ:任意のポイントにマウスポインターをあてるとその地点での検出結果を表示する。

      ポイントをクリックすると該当ビルドの Parasoft Warnings ページに遷移して静的解析の詳細な結果を確認できます。
      Overview ウィジェットでは、検出している違反を重要度別にドーナツグラフで表示します。

      Overview ウィジェット:検出した重要度の割合を可視化する。

      History ウィジェットではこれまでに実行された静的解析違反の変化をさまざまな側面から表示します。合計違反モードでは検出数の推移を表示し、重要度モードでは重要度で分類した検出数の推移を確認できます。

      History ウィジェット (合計違反モード):解析違反数の推移を表示する。

      History ウィジェット (重要度モード):解析違反数の推移を重要度別に表示する。

      Details レポートでは上部にある項目 (Packages、Files、Categories、Types、Issues) を選択して一覧の表示軸を変更し、一覧に表示された内容をドリルダウンしていくことで違反の詳細を表示できます。

      Details レポート (Package 表示):パッケージ毎の検出した違反数を表示する。

      Details レポート:ドリルダウンしてコードベースで違反詳細を確認する。

      単体テストの結果を確認する

      Jtest で単体テストの実行、カバレッジ計測を行っている場合、テストの実行結果は テスト結果の推移 、カバレッジ計測結果は Parasoft Coverage で確認します。

      テストの実行結果

      ジョブのトップ画面に テスト結果の推移 トレンドグラフが表示され、グラフ内の任意の場所にマウスポインターを合わせると該当のビルドにおける単体テスト実行結果が表示されます。
      トレンドグラフ:任意のポイントにマウスポインターをあてるとその地点での実行結果を表示する。
      トレンドグラフの任意のポイントをクリックすると該当するビルドの テスト結果 ページに遷移します。
      ビルド内で実行したテスト、失敗したテスト、実行時間など実行されたテストの概要を表示します。
      失敗したテストの情報としてテスト実行時に出力されたスタックトレースを表示し、失敗の詳細を確認できます。
      失敗したすべてのテスト:失敗したテストのスタックトレースを表示する。
      テスト結果 ページの情報はドリルダウンして任意のクラスにおけるテスト実行結果、任意のテストメソッドに関する過去のビルド実行履歴を追跡することができます。  
      テスト結果 (任意のクラス) :選択した特定クラスにおけるテストの実行結果を表示する。
       
      テスト結果 (任意のテストメソッド) :選択したテストメソッドに関する情報を過去ビルドの実行結果も含めて表示する。

      カバレッジ

      ジョブのトップ画面に Parasoft Coverage Trend トレンドグラフが追加され、グラフ内の任意の場所にマウスポインターを合わせると該当のビルドで計測された行カバレッジの情報が表示されます。
      トレンドグラフ:任意のポイントにマウスポインターをあてるとその地点で計測したカバレッジ情報を表示する。
      任意のポイントをクリックすると該当するビルドの Parasoft Coverage ページに遷移して計測したカバレッジの詳細を確認できます。
      Parasoft Coverage (Overview) : ビルド内で計測したカバレッジの概要とジョブにおけるカバレッジの推移を表示する。
      Parasoft Coverage (Overview) : ビルド内で計測したクラスごとのカバレッジ情報を表示する。

      Quality gates を設定する

      Parasoft Findings for Jenkins を利用するとビルド中に実行した静的解析、カバレッジの結果を元にした Quality gates を設定して静的解析の違反数やカバレッジが任意の条件を満たさない場合に、ビルドを "不安定(Unstable)" または "失敗(Failed)" としてマークできます。
      ジョブの設定:静的解析の結果で 'severity high' (Jtest/dotTESTの 重要度が 1, 2)  のルールで違反を検出した場合に、ビルドを 'Failed' にします。
      Quality gates の結果はビルドの 状態 タブで確認します。
      ジョブのステータス:Quality gates で '失敗(Failed)' 判定された要因を表示する。

      まとめ

      Jenkins 用のプラグイン Parasoft Findings for Jenkins を利用した Jtest/dotTEST の解析結果の確認方法、品質ゲートの設定についてご紹介しました。
      Jenkins で静的解析、単体テストを自動化したものの、結果の共有や確認方法にお困りでしたら、ぜひ一度 Parasoft Findings for Jenkins をお試しください。

      Parasoft Jtestについて

       

      Jtestは、テスト工数の大幅削減とセキュアで高品質なJavaシステムの開発を強力にサポートするJava対応テストツールです。2,000個以上のコーディング規約をもとにソースコードを静的に解析し、プログラムの問題点や処理フローに潜む検出困難なエラーを検出します。さらに、JUnitを用いた単体テストについて、作成、実行、テストカバレッジ分析、テスト資産の管理といった単体テストに係る作業をサポートし、単体テストの効率化を促進します。

      Parasoft dotTEST について

      dotTEST は、C#言語VB.NET言語対応した静的解析・動的解析テストツールです。製造業・医療・金融など幅広い業界において、Windows アプリケーション・Web アプリケーションなどのさまざまな.NET アプリケーションの開発に用いられています。

      Top