このセクションの内容:
違反エクスプローラーは、静的解析違反をシステマティックにレビューし、簡単に修正することができるインターフェースです。すべての静的解析違反ウィジェットから、項目をクリックして違反エクスプローラーに移動できます。
同じラン コンフィギュレーションを使って複数のブランチに静的解析を実行する場合、複数のビルドにまたがって、違反の同じインスタンスが新規違反としてレポートされます。そのため、違反の数の変化を表すウィジェットのデータが不正確になります。この動作は 静的解析の設定 で変更できます。 |
違反エクスプローラーは 4 種類の主要パーツから構成されます。
DTP の違反は、パラメーターを使って検索できます。検索エリアを使って特定の種類の違反に絞り込みます。検索エリアで条件を変更して、開発プロジェクト全体で違反を探すことができます。
[検索条件] をクリックして検索オプション画面を表示します。以下の検索条件を利用できます。
フィルター ビルド | フィルターおよびビルド ID は違反を検索するための最低条件です。デフォルトではフィルターを変更するときに最新のビルドが選択されますが、ドロップダウン メニューから別のビルドを選択できます。ベースライン ビルドが選択されるときに、選択したビルドはターゲット ビルドとして機能します。詳細については以下のセクションを参照してください。 |
---|---|
ベースライン ビルド ステータス | ベースライン ビルドは、他のビルドとの比較に使用される履歴ビルドです。ドロップダウン メニューからベースライン ビルドを選択して、ベースライン ビルドからフィルターで選択されたビルドにレポートされた違反を検索します。 [ステータス] ドロップダウン メニューからステータスを選択して、新規、修正済、または既存の違反を検索できます。 |
重要度 | 1 つ以上の重要度レベルを指定して検索を実行できます。重要度はテスト コンフィギュレーションで決定されます。ルール マップを作成して、ルールに設定された重要度レベルをカスタマイズできます。詳細については「コード解析ルールの設定」を参照してください。 |
優先度 | 1 つ以上の優先度を指定して検索を実行できます。優先度は REST API でカスタマイズできます。 |
作成者 | 1 人以上のコード作成者を指定して検索を実行できます。作成者は、コード解析ツールの設定から決定されます。 |
担当者 | 1 人以上の担当者を指定して検索を実行できます。 |
アクション | 1 つ以上の割り当てられたアクションを指定して検索を実行できます。アクションは REST API でカスタマイズできます。 |
種類 | 通常の違反、抑制された違反、またはすべての違反を検索できます。 |
リソース グループ | リソース グループは、1 個以上の Ant ファイル パターンによって定義されたリソース (ファイルあるいはフォルダー) の集合です。1 つ以上のリソース グループを指定して検索を実行できます。リソース グループは REST API で定義できます。 |
包含ファイル パターン 除外ファイル パターン | Ant パターンを指定して、検索範囲を広げたり狭めたりすることができます。ファイル パターンの設定については「ファイル単位で違反を検索する」を参照してください。 |
リスク/影響度 | 1 つ以上のリスク/影響度を指定して検索を実行できます。リスク/影響度は、違反がビジネスに与える度合いです。リスク/影響度は REST API でカスタマイズできます。 |
参照番号 | 特定の参照番号に検索を制限することができます。参照番号は、手動で追加するか、REST API で自動化することができます。 |
カテゴリ | 1 つ以上の静的解析カテゴリを指定して検索を実行できます。静的解析ルールはカテゴリに分類されますが、ルール マップを作成して、ルールとカテゴリを定義したりマッピングを変更したりすることができます。詳細については「コード解析ルールの設定」を参照してください。 |
モジュール | 1 つ以上のモジュールを指定して検索を実行できます。 |
ルール | テスト コンフィギュレーションで有効になっている 1 つ以上のコード解析ルールで検索できます。 |
最大数 | 違反エクスプローラーに表示する違反の数を制限できます。 |
ファイルを検索してそのファイル中で発見された違反を返すことができます。以下の表は、ファイル パスの設定方法の例です。
値 | 結果 |
---|---|
test | 文字列 "Test" を含むファイル パスで発見されたすべての違反を返します。例:
しかし、以下は返しません。
|
com/ex | 文字列 "com/ex" を含むファイル パスで発見されたすべての違反を返します。例:
しかし、以下は返しません。
|
com/parasoft/** | "com/parasoft" ディレクトリ ツリーで発見されたすべての違反を返します。例:
しかし、以下は返しません。
|
**/test/*.java | ディレクトリ ツリー中の任意の test ディレクトリにある、接尾辞が ".java" のファイルで発見されたすべての違反を返します。例:
しかし、以下は返しません。
|
検索結果の表で違反をクリックすると、その違反があるコード部分が表示されます。
DTP を設定して、ソース管理システムからソースを表示するか、あるいはコード解析/テスト実行の最中に接続した Parasoft ツールから送られたソースを表示することができます。ソースをどのように表示するかを DTP で指定する方法については「ソース コード ビューの設定」を参照してください。
検索パラメーターに従って発見された違反は、検索結果パネルに表示されます。
違反をクリックして、ソース ファイルの内容を参照したり、違反の詳細を確認したり、修正のためのアクションを有効にします。違反を選択すると、ファイル名とそのファイルを開いたコンポーネントがコード パネルに表示されます。
データをソートしたり表をカスタマイズしたりして、ニーズに合わせて違反データを見やすくすることもできます。詳細については「エクスプローラー ビューの使用方法」を参照してください。
デフォルトでは、最大で 1000 件の違反が表示されます。URL に &limit=[number] パラメーターを追加して上限を変更できます。たとえば以下の URL の場合、最大で 2000 件まで違反を表示できます。
[DTP_HOME]/grs/dtp/explorers/violations?filterId=11&limit=2000
limit パラメーターには任意の値を設定できます。ただし、非常に大きな値を指定すると、違反エクスプローラーのパフォーマンスに影響する場合があります。
ソース パネルでは、コード中の違反を参照することができます。Report Center エクスプローラー ビューでソースを参照するには適切な権限が必要です (詳細については 「ユーザー権限とグループの設定」 を参照してください)。
行番号の横のマーカー上にマウス ポインタを置くと、違反のエラー メッセージについてのツールチップが表示されます。
情報アイコンにマウス ポインタを置くと、ソースがどこから表示されているかが示されます。
フロー解析トレース機能を使用する場合、コード パネルでその違反の原因になったコードのパスを参照することもできます。
違反エクスプローラーでコードを参照する方法の詳細については 「フロー解析トレースの参照」を参照してください。
違反エクスプローラーには、組織のポリシー、ニーズ、目的に合わせて違反を処理するのに役立つツールが用意されています。[優先度] パネルからソフトウェア品質ワークフローに違反を置くことができます。
違反の優先度を設定する権限だけでなく、ソースを参照するための権限も必要です。違反に優先度を設定するための権限は、そのユーザーが所有するすべての違反か、あるいは一部の違反だけに許可されます。以下の表は、プロジェクトのメンバーシップの状況とどのように権限が割り当てられるかを示したものです (詳細については 「権限」 を参照してください)。
|
DTP のプロジェクトを、次の要件/課題トラッキング システムのプロジェクトに接続できます。
DTP との統合によって、優先度パネルの違反から ALM システムで課題を作成できます。
プロジェクト | 新しい課題が作成される ALM プロジェクトの名前が [プロジェクト] フィールドに表示されます。DTP プロジェクトと外部の ALM プロジェクトとの関連付けは、DTP 管理者が定義します。詳細については次のセクションを参照してください。 |
---|---|
種類 | 作成するアイテムの種類をドロップダウン メニューから選択します。用語は ALM によって異なりますが、DTP はデフォルトで次のタイプの作業アイテムをサポートしています。
|
タイトル/サマリー | デフォルトでは、違反のヘッダーが課題タイトル (VersionOne) または サマリー (Jira、Jama Connect、Polarion ALM、codeBeamer ALM、TeamForge) の値として使用されますが、必要な変更を加えることができます。 |
説明 | ファイル、行、メッセージ、重要度などの違反に関する詳細は、デフォルトで課題の説明に追加されますが、さらに変更を加えることもできます。説明には、外部アプリケーション構成ページの [Display URL] フィールドの設定に基づいて DTP に戻るリンクも含まれます。 |
DTP の違反にリンクする課題が外部システムに作成されます。さらに、課題へのリンクが [優先度] タブに表示され、DTP と外部システムの間に双方向のパスが作成されます。
他の作成者、またはフィルターに関連付けられたプロジェクトのメンバーに違反を割り当てることができます。
DTP が違反を初めて受信したとき、担当者フィールドの値は作成者フィールドからコピーされます。作成者フィールドの値は、ツールの .properties 設定ファイルの作成者設定、あるいはソース管理 (SCM) システムから決定されます。作成者設定がない場合、解析を実行したマシンにログインしているユーザーが作成者に設定されます。詳細についてはツールのドキュメントを参照してください。
別の開発者が違反を含むコードを変更し、解析を DTP に送信すると、作成者の情報が変更される場合があります。しかし担当者のフィールドは、違反エクスプローラー ビューで担当者を手動で再割り当てしないかぎり、そのままです。
DTP REST API を使用して担当者を null
にリセットすることもできます。担当者をリセットすると、違反を含むレポートを新たに受信したとき、DTP が新しい担当者を設定できるようになります。
/resetViolationMetadata
エンドポイントに POST リクエストを送信し、ビルドのすべての優先度メタデータ フィールドをデフォルト値にリセットします。API エンドポイントを使用するには、認証が必要です。ユーザーは管理者権限を持っている必要があります。次の CURL の例は、エンドポイントの呼び出し方法を示しています。
curl -X POST -u <USERNAME>:<PASSWORD> "<PROTOCOL>://<HOST>:<PORT>/grs/api/v1.5/admin/staticAnalysis/resetViolationMetadata?buildId=<BUILD_ID>" |
ビルドの違反の担当者フィールドは、データーベースで null
に設定されます。違反にユーザーが割り当てられるまでは、[優先度] タブで変更を行うことができなくなります。次回 Data Collector が違反のレポートをロードすると、ユーザーが自動的に割り当てられます。
Parasoft はいくつかの違反抑制方法をサポートしています。DTP または「サーバーサイド」の抑制は、違反エクスプローラー ビューの [優先度] タブから適用します。DTP の抑制は DTP に保存され、違反が Parasoft ツール ユーザーの IDE に指摘事項としてインポートされたときにも、ソース コードに影響を与えません。
DTP の抑制は、ツールのユーザーによって適用され、ローカルで保存される入力ファイル抑制およびコード内の抑制とは異なります。入力ファイルおよびコード内で抑制を適用する方法の詳細については、ツールのドキュメントを参照してください。
コード内または入力ファイルによって抑制された違反には、[優先度] タブおよび [Details] タブでラベルが付けられます。抑制タイプ列を検索結果の表に追加することもできます。エクスプローラー ビューの列を追加および削除する方法については、「エクスプローラー ビューの使用方法」を参照してください
アクションは、レポートされた違反を修正する方法を定義するためのメタデータの文字列です。DTP には、定義済みのアクションが用意されています。[なし]、[修正]、[再割当て]、[レビュー]、[抑制]、および [その他] です。/staticAnalysisViolations/metadata
API エンドポイントを使用して、[なし] 以外の定義済みアクション タイプを編集または削除することができます。アクションの設定の詳細については、Report Center のナビゲーション バーの [ヘルプ] ドロップダウン メニューから [API ドキュメント] を参照してください。
[アクション] フィールドは機械学習機能の重要な部分でもあります。詳細については「機械学習機能の使用」を参照してください。
違反エクスプローラーでは、リスクをもたらす違反や、アプリケーションに関連するポリシー目標に影響する違反に目印を付けて警告することができます。
違反を更新する場合、違反の 1 つのインスタンスに変更を適用するか、あるいは違反が発生しているすべてのソース管理ブランチ中の違反に変更を適用できます。変更を適用すると、確認メッセージが表示されます。
違反に適用されたすべての変更は、アクション パネルで参照することができます。アクション パネルには、選択した違反に関連する詳細な履歴情報が表示されます。選択した違反についてのルールの説明も参照できます。
アクション パネルの [変更履歴] タブをクリックすると、選択した違反に対する優先度の変化のサマリー (再割当て、影響度レベルの変更など) が表示されます。複数の違反の変更履歴を参照することはできません。
[コメントだけを表示] オプションをクリックして、コメント ログを除いたすべての更新を表示/非表示にすることができます。
アクション パネルの [違反の履歴] タブをクリックすると、静的解析の実行および選択した違反の検出日が表示されます。複数の違反について違反の履歴を参照することはできません。
[違反の履歴] タブには、違反に関連するソース管理の履歴も表示されます。異なる違反 ID で、同じ違反が複数のブランチに出現する場合があります。[Violations in Branch] ドロップダウン メニューからブランチを選択し、選択した違反の履歴を他のブランチで確認します。
別のブランチに切り替えると、[違反の履歴] タブの表がリフレッシュされます。ただし、違反エクスプローラーの他のエリアは、選択した違反のインスタンスについての情報を表示し続けます。
DTP からビルド情報が削除された場合 (つまり定期的なデータベースの最適化が実施されたか、手動でビルド情報を削除した場合)、違反の履歴の表は空になります。
フロー解析または CDD (重複コードの検出) を実行した場合、[トレース] タブをクリックしてそれらの実行結果を確認できます。
データ フロー解析 (動的解析) を実行した場合、違反に到達するまでのパスが [トレース] タブに表示されます。フロー解析を使用すると、コードがどのように構成されるかを決定したり、なぜ違反が発生したのかを理解したり、違反の重要性を判断したりするのに役立ちます。
トレースをクリックすると、コード パネルに違反のパスが表示されます。
ソース コードを参照するための権限が必要です。詳細については「権限」を参照してください。
DTP がバージョン 10.4.1 以降の C++test/dotTEST/Jtest からフロー解析レポートを受け取る場合、フロー解析トレースには注釈が含まれます。注釈はフロー解析トレースのコードについての追加情報を提供します。注釈は緑のテキストで表示され、フロー解析トレースのアイコンで示されます。また、色分けされたコードがエラーに関してのフローの詳細情報を提供します。
トレース上のポイントをクリックすると、対応するソース コードがソース パネルに表示されます。ソース パネルにも注釈が表示されます。コードが色分けされて表示され、どのようにコード フローがエラーになったかが明確に示されます。詳細については、特定のフロー解析違反に対するルール ドキュメントを参照してください。
CDD (重複コードの検出) 解析ルールで違反が検出された場合、[トレース] タブでそれらの違反を参照できます。重複コードの存在は、アプリケーション設計が良くないことを示している可能性があるだけでなく、保守のコストが増大する可能性も示している可能性があります。違反エクスプローラーの検索結果パネルで CDD 違反をクリックすると、違反のパスが開きます。
このパネルには、ファイル名、行番号、および重複コードの各インスタンスのパスが表示されます。ソース パネルには、重複コードがあるソースも表示されます。
ソース コードを参照するための権限が必要です。詳細については「権限」を参照してください。
[重複コードの検出] パネルでエントリをクリックして、重複コードのインスタンスを確認します。
優先度の設定や開発者への違反の割り当てなど、通常の違反修正アクションを実行できます。「違反の対応」を参照してください。
[ヘルプ] タブをクリックすると、コードが違反している静的解析ルールの説明が表示されます。複数の違反についてルールの説明を参照することはできません。
アクション パネルの [詳細] タブをクリックすると、選択した違反の場所、所有者、ルール ID、およびメッセージについての現在の情報が表示されます。
検索結果の中から違反を選択している場合、[違反 ID] フィールドが表示されます。違反 ID のリンクは、その違反と選択したフィルターに直接リンクします。このリンクを共有すると、他の開発者が DTP でこの違反に直接アクセスすることができます。
違反が抑制されている場合、[詳細] タブに抑制情報が表示されます (「違反を抑制する」を参照)。
静的解析違反の重要度を見極め、違反の修正にリソースを割く必要があるかどうかを判断することは、ソフトウェア開発ライフサイクルを停滞させる場合があります。機械学習機能は、修正すべき静的解析違反を認識する方法を DTP に学習させるためのインターフェイスです。新しいコード解析データが DTP にレポートされたときに、どの違反を誰が修正するべきか DTP が予測できるようになるため、違反の修正プロセスがスピードアップします。
修正する違反の予測機能は、[優先度] タブの [アクション] フィールドで [修正] および [抑制] として分類された違反を分析し (「違反にアクションを割り当てる」を参照)、検出したパターンに基づいて予測モデルを作成します。モデルが作成された後、DTP はビルド内のどの違反に修正アクションを割り当てるかを予測します。予測モデルを作成するには、少なくとも 20 件の違反を修正と抑制に分類する必要があります。違反のレビューとアクションの割り当てを続けることで、予測モデルは徐々に改善されます。
推奨される担当者機能は、過去のビルドで修正および抑制された違反を分析し、予測モデルを構築します。モデルが構築されると、DTP は、過去に違反に対応した人物を基に、そのビルドで違反に対応すべき人物を予測します。
ビルドに送られた新しい違反に対して予測アクションを実行する必要があります。さらに、フィルターを切り替える場合は、違反について確認して DTP に学習させる必要があります。
機械学習機能を使用するには、ライセンスが必要です。詳細については Parasoft 製品テクニカル サポート センターまでお問い合わせください。
機械学習インターフェイスは、管理者ユーザーまたはチーム リーダーが利用できます。チームおよびリーダー権限については「チーム メンバーシップ」を参照してください。
機械学習機能は、条件のセットを使ってコード解析レポートを解析し、取るべきアクションを判断します。詳細な解析を可能にする追加のメタデータを含めるよう、コード解析ツールを設定できます。追加のメタデータは、アクションの予測に使われるセット機能を拡張するため、予測がより正確になります。
詳細なメタデータは、テスト コンフィギュレーションで有効化します。DTP でテスト コンフィギュレーションを管理している場合、テスト コンフィギュレーション エディターでオプションを有効化できます (「テスト コンフィギュレーションの編集」を参照)。
ツールに付属のテスト コンフィギュレーション エディターを使用して、ローカル コード解析の詳細メタデータ オプションを有効化することもできます。詳細については、ご使用のツールのドキュメントを参照してください。
この機能は、[優先度] タブの [アクション] フィールドで [修正] および [抑制] として分類された違反を分析し (「違反にアクションを割り当てる」を参照)、検出したパターンに基づいて予測モデルを作成します。モデルが作成された後、DTP はビルド内のどの違反に修正アクションを割り当てるかを予測します。予測モデルを作成するには、少なくとも 20 件の違反を修正と抑制に分類する必要があります。違反のレビューとアクションの割り当てを続けることで、予測モデルは徐々に改善されます。
このウィザードは、以下の操作をガイドします。
[履歴に基づいて違反を分類] オプションを有効にすると、DTP はデータベース中の修正または抑制された違反を分類します。次のいずれかの結果になります。
DTP が信頼できる予測を行うには、健全な予測モデルが不可欠です。分類プロセスの結果、モデルが "不良" または "中" になる場合は、モデルの状態が改善するまで違反の分類を続ける必要があります。 詳細については「予測の精度について」を参照してください。[最高速] または [通常] モードを使用してモデルをトレーニングしたが、モデルの品質に満足できない場合は、モデルを再トレーニングして、[深く] または [最も深く] トレーニング モード オプションを選択します。
DTP は、次のアルゴリズムを使用してモデルをトレーニングします。
[最高速] および [深く] トレーニング モード オプションでは、静的解析データを処理するのに最も高速なアルゴリズムとして知られているk-NNとNaive Bayesアルゴリズムを使用します。ただし、実行されるアルゴリズムは 2 つだけであるため、最適なトレーニング モデルを DTP が決定する際の選択肢が少なくなります。
[通常] および [最も深く] トレーニング モードはすべてのアルゴリズムを使用するため、データ処理に他のオプションよりも時間がかかります。しかし、すべてのアルゴリズムを使用することで、DTP は最適なトレーニング モデルを決定するために最も多くの情報を得ることができます。
[最高速] および [通常] トレーニング モード オプションでは、モデルのトレーニングに使用される違反回数が 1000 回に制限されます。これにより、特に分類された違反が大量にある場合に、DTP のトレーニングを高速化できます。ただし、データ サンプルのサイズを減らすと、モデルの全体的な品質に影響する可能性があります。
[深く] および [最も深く] トレーニングでは、モデルのトレーニングに使用できるすべての分類された違反を使用します。その結果、最良のモデルが生成される可能性があります。ただし、分類された違反がプロジェクトに非常に多くある場合、トレーニング プロセスが完了するまで数分かかります。
違反を分類し、予測モデルをトレーニングして適用した後、[優先度] タブに [予測されたアクション] フィールドが表示されます。違反を修正する必要があると DTP が予測した場合、フィールドに "修正" の値と、予測されたアクションがモデルに基づいて正しいことを DTP がどの程度確信しているかを示す値が表示されます。
違反に対して修正アクションが予測されていない場合、[予測されたアクション] フィールドには "利用不可" と表示されます。
検索結果テーブルの [予測アクション] 列を見て、DTP の推奨事項に従って違反をソートできます。
テーブル内の最適な位置に列をドラッグできます。違反エクスプローラー ビューのカスタマイズの詳細については「エクスプローラー ビューの使用方法」を参照してください。
DTP が行う予測の精度は、処理される違反の数と提供されるデータの品質に依存します。DTP では、少なくとも 20 件の違反にアクションを割り当てる必要がありますが、違反をさらに処理すると予測の精度が向上します。ユーザーが十分なデータを提供していない場合、DTP は予測を行うことができません。DTP に予測を通知するモデルは、提供されるデータの正確性と一貫性にも依存します。DTP は、高度なアルゴリズムを使用して各違反に関連するデータを分析しますが、品質の入力に基づいて品質の予測のみを行うことができます。1 つのタイプのアクションの割り当てが多すぎると、予測結果にも影響します。予測の精度を高めるために、修正および抑制アクションを同じ数だけ割り当てる必要があります。
API を使用して機械学習データを取得し、データを Parasoft に送信することで、Parasoft のシステムの改善を支援できます。ユーザー名やプロジェクト名などの機密情報は、レスポンスで難読化されます。 以下の API エンドポイントからの出力を保存して、機械学習データを取得できます。
このエンドポイントは、モデルと予測結果のトレーニングに使用される静的解析違反を返します。
リクエストを送信するときと同じように、ユーザー名とパスワードを渡します。「例」を参照してください。
http:<host>:<port>/grs/api/v1.7/ml/staticAnalysis/classificationResultsSets
GET
以下の表は、このエンドポイントで利用できるパラメーターの一覧です。
パラメーター | 説明 | 型 | 必須 |
---|---|---|---|
sortOrder | ID によってデータが返される順序を指定します。データには ID が順番に割り当てられるため、新しいデータほど ID 番号が大きくなります。以下の値を指定できます。
| string | 任意 |
limit | 返す結果セットの最大数を指定します。デフォルトは無制限です。 | integer | 任意 |
| レスポンスでスキップする結果セットの数を指定します。デフォルトは データベースに 3 つの結果セットがあり、 | integer | 任意 |
curl -X GET -u username:password "http://dtp.mycompany.com:8443/grs/api/v1.7/ml/staticAnalysis/classificationResultSets?sortOrder=desc&limit=10" > myResultSets.json |
このエンドポイントは、モデルのトレーニングに使用された違反に割り当てられたアクションを返します。
http:<host>:<port>/grs/api/v1.7/ml/staticAnalysis/violationActionHistory
GET
なし。
curl -X GET -u username:password "http://dtp.mycompany.com:8443/grs/api/v1.7/ml/staticAnalysis/violationActionHistory" > myViolationActionHistory.json |
このウィザードは、以下の操作をガイドします。
予測モデルを適用して担当者を推薦すると、検索結果に [推奨される担当者] 列が表示されます。 この列には「DTP がこの違反を処理するよう推薦するユーザー」と「モデルに基づいて推薦された担当者が正しいことを DTP がどの程度確信しているかを示す値」が表示されます。 なお、この列はソート可能であるため、DTP の推奨に従って違反をソートできます。