このセクションの内容:
概要
違反エクスプローラーは、静的解析違反をシステマティックにレビューし、簡単に修正することができるインターフェースです。すべての静的解析違反ウィジェットから、項目をクリックして違反エクスプローラーに移動できます。
同じラン コンフィギュレーションを使った複数のブランチでの静的解析の実行
同じラン コンフィギュレーションを使って複数のブランチに静的解析を実行する場合、複数のビルドにまたがって、違反の同じインスタンスが新規違反としてレポートされます。そのため、違反の数の変化を表すウィジェットのデータが不正確になります。この動作は 静的解析の設定 で変更できます。
違反エクスプローラーは 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 エクスプローラー ビューでソースを参照するには適切な権限が必要です (詳細については 「ユーザー権限とグループの設定」 を参照してください)。
行番号の横のマーカー上にマウス ポインタを置くと、違反のエラー メッセージについてのツールチップが表示されます。
情報アイコンにマウス ポインタを置くと、ソースがどこから表示されているかが示されます。
フロー解析トレース機能を使用する場合、コード パネルでその違反の原因になったコードのパスを参照することもできます。
違反エクスプローラーでコードを参照する方法の詳細については 「フロー解析トレースの参照」を参照してください。
違反の対応
違反エクスプローラーには、組織のポリシー、ニーズ、目的に合わせて違反を処理するのに役立つツールが用意されています。[優先度] パネルからソフトウェア品質ワークフローに違反を置くことができます。
違反の優先度を設定する権限だけでなく、ソースを参照するための権限も必要です。違反に優先度を設定するための権限は、そのユーザーが所有するすべての違反か、あるいは一部の違反だけに許可されます。以下の表は、プロジェクトのメンバーシップの状況とどのように権限が割り当てられるかを示したものです (詳細については 「権限」 を参照してください)。ユーザーの種類 追加権限 許可されるアクセス 管理者 リーダー メンバー 非メンバー 1 なし 非メンバー 2 project 非メンバー 3 project, prioritizeOwner 非メンバー 4 project, viewSources
サードパーティ システムでの課題の作成
DTP のプロジェクトを、次の要件/課題トラッキング システムのプロジェクトに接続できます。
- codeBeamer ALM - CodeBeamer ALM との統合
- Jama Connect - Jama Connect との統合
- Jira - Jira との統合
- Polarion ALM - Polarion ALM との統合
- TeamForge - TeamForge との統合
- VersionOne - VersionOne との統合
DTP との統合によって、優先度パネルの違反から ALM システムで課題を作成できます。
- 検索結果エリアで違反を選択し、[優先度] タブをクリックします。
- [作成] ボタンをクリックして、作成する作業アイテムに関する情報を指定します。
プロジェクト 新しい課題が作成される ALM プロジェクトの名前が [プロジェクト] フィールドに表示されます。DTP プロジェクトと外部の ALM プロジェクトとの関連付けは、DTP 管理者が定義します。詳細については次のセクションを参照してください。
種類 作成するアイテムの種類をドロップダウン メニューから選択します。用語は ALM によって異なりますが、DTP はデフォルトで次のタイプの作業アイテムをサポートしています。
- Jira および codeBeamer ALM の場合、バグ または タスク を選択します。
- Jama Connect の場合、欠陥 を選択します。
- VersionOne の場合、欠陥 または 課題 を選択します。
- Polarion ALM の場合、課題 または タスク を選択します。
- TeamForge の場合、欠陥 または タスク を選択します。
タイトル/サマリー デフォルトでは、違反のヘッダーが課題タイトル (VersionOne) または サマリー (Jira、Jama Connect、Polarion ALM、codeBeamer ALM、TeamForge) の値として使用されますが、必要な変更を加えることができます。
説明 ファイル、行、メッセージ、重要度などの違反に関する詳細は、デフォルトで課題の説明に追加されますが、さらに変更を加えることもできます。説明には、外部アプリケーション構成ページの [Display URL] フィールドの設定に基づいて DTP に戻るリンクも含まれます。 - [作成] をクリックします。
DTP の違反にリンクする課題が外部システムに作成されます。さらに、課題へのリンクが [優先度] タブに表示され、DTP と外部システムの間に双方向のパスが作成されます。
違反を開発者に割り当てる
他の作成者、またはフィルターに関連付けられたプロジェクトのメンバーに違反を割り当てることができます。
- 検索結果エリアで違反を選択します。コード ビュー パネルにファイル名が表示されます。
- [優先度] タブをクリックし、[担当] フィールドをクリックします。
- ユーザー名を入力します。入力を始めると、オートフィル機能が実行されます。
- 必要に応じて他の設定を行って、[適用] をクリックします。[すべてのブランチに適用] がデフォルトで有効化されています。選択した違反にだけ変更を適用したい場合、このオプションを無効化してください。「違反を開発者に割り当てる」を参照してください。
担当者と作成者
DTP が違反を初めて受信したとき、担当者フィールドの値は作成者フィールドからコピーされます。作成者フィールドの値は、ツールの .properties 設定ファイルの作成者設定、あるいはソース管理 (SCM) システムから決定されます。作成者設定がない場合、解析を実行したマシンにログインしているユーザーが作成者に設定されます。詳細についてはツールのドキュメントを参照してください。
別の開発者が違反を含むコードを変更し、解析を DTP に送信すると、作成者の情報が変更される場合があります。しかし担当者のフィールドは、違反エクスプローラー ビューで担当者を手動で再割り当てしないかぎり、そのままです。
DTP REST API を使用して担当者を null
にリセットすることもできます。担当者をリセットすると、違反を含むレポートを新たに受信したとき、DTP が新しい担当者を設定できるようになります。
REST API を使用した違反の担当者のリセット
/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 に学習させる必要があります。
機械学習を有効にする
機械学習機能を使用するには、ライセンスが必要です。詳細については Parasoft 製品テクニカル サポート センターまでお問い合わせください。
機械学習インターフェイスは、管理者ユーザーまたはチーム リーダーが利用できます。チームおよびリーダー権限については「チーム メンバーシップ」を参照してください。
詳細なメタデータ
機械学習機能は、条件のセットを使ってコード解析レポートを解析し、取るべきアクションを判断します。詳細な解析を可能にする追加のメタデータを含めるよう、コード解析ツールを設定できます。追加のメタデータは、アクションの予測に使われるセット機能を拡張するため、予測がより正確になります。
詳細なメタデータは、テスト コンフィギュレーションで有効化します。DTP でテスト コンフィギュレーションを管理している場合、テスト コンフィギュレーション エディターでオプションを有効化できます (「テスト コンフィギュレーションの編集」を参照)。
- DTP の設定メニュー (歯車のアイコン) から [テスト コンフィギュレーション] を選択します。
- サイドバー メニューからテスト コンフィギュレーションを選択し、[静的解析の設定] タブをクリックします。
- [詳細なメタデータを機械学習用に DTP に送信する] オプションをオンにして [保存] をクリックします。
ツールに付属のテスト コンフィギュレーション エディターを使用して、ローカル コード解析の詳細メタデータ オプションを有効化することもできます。詳細については、ご使用のツールのドキュメントを参照してください。
機械学習ウィザードの使用
このウィザードは、以下の操作をガイドしまう。
- 違反を分類する: 違反の分類とは、[優先度] タブの [アクション] フィールドに値を設定することです (違反にアクションを割り当てる を参照)。機械学習機能は、予測モデルを作成するために少なくとも 20 件の違反を "修正" または "抑制" に分類する必要があります。
- モデルをトレーニングする: DTP は分類された違反を分析し、いくつかのデータ ポイントに基づいて予測モデルを作成します。多くの違反 (たとえば 1000 件) を分析した場合、予測モデルの作成に数分かかることがあります。作成されたモデルには、ヘルス スコアが割り当てられます。モデルのヘルス スコアが許容範囲を超えている場合、ウィザードにより、追加の違反をレビューして分類するように求められます。
- アクションを予測する: モデルのヘルス スコアが許容範囲 ("良" と "最良" の間) である場合、フィルター内の未分類の違反にモデルを適用できます。これにより、違反のレビューに必要な時間が大幅に短縮され、チームは重要な違反の修正に迅速に取り組むことができます。
違反を分類する
- 機械学習のアイコンをクリックして、ウィザードを起動します。
- 初めてウィザードを起動する場合、または既存のモデルではアクションを予測するのに不十分な場合、違反を分類するように求められます。[次へ] をクリックします。
- DTP はフィルター内の既存のビルドを分析し、ユーザーに対して既に分類されている違反に基づいてモデルを作成するか、または手動で違反を分類するように求めます。
- 次のオプションのいずれかを選択して [確認] をクリックします。
- [履歴に基づいて違反を分類] オプションを有効にし、[ビルド履歴] ドロップダウンメニューから [すべて]、[6 か月]、または [12 か月] を選択します。DTP はすでに修正または抑制されている違反を検索し、[アクション] フィールドを ”修正" または "抑制" に設定します。詳細については「予想される分類結果」を参照してください。
- [手動で違反を分類] オプションを有効にすると、DTP はレビューと分類のために現在のビルドから 20 の違反を提示します。違反を手動で分類する方法については、「違反にアクションを割り当てる」を参照してください。
- 十分な数の違反が分類されると、モデルをトレーニングできるように、ウィザードのメイン ページに戻るように求められます (「モデルをトレーニングする」を参照)。
予想される分類結果
[履歴に基づいて違反を分類] オプションを有効にすると、DTP はデータベース中の修正または抑制された違反を分類します。次のいずれかの結果になります。
- 十分な数の違反が分類された場合、モデルをトレーニングできるように、ウィザードのメイン ページに戻るように求められます (「モデルをトレーニングする」を参照)。
- 履歴からの違反が修正または抑制されていない場合、DTP は自動的にアクションを割り当てることができません。ウィザードのメイン ページに戻り、分類プロセスを再開するように求められます。[手動で違反を分類] を選択します。DTP はレビューと分類のために現在のビルドから 20 の違反を提示します。違反を手動で分類する方法については、「違反にアクションを割り当てる」を参照してください。
- DTP は、"修正" と "抑制" の比率のバランスを必要とします。非常に多くの違反が特定されて "修正" または "抑制" のいずれかに分類されている場合、バランスの取れた比率になるまで、さらに違反を手動で分類するように求められます。違反を手動で分類する方法については、「違反にアクションを割り当てる」を参照してください。
モデルをトレーニングする
- ウィザードがまだ開いていない場合は、機械学習のアイコンをクリックしてウィザードを起動します。
- [モデルのトレーニング] を選択し、[次へ] をクリックします。
- トレーニング モードを選択します。選択するオプションの詳細については「トレーニング モードについて」を参照してください。
- 違反の分類方法に関する予測モデルのトレーニングを開始するように求められた場合、[確認] をクリックします。多くの違反 (たとえば 1000 件) を分析した場合、予測モデルの作成に数分かかることがあります。
- モデルがトレーニングされると、ユーザーはアクションを予測するように求められます (「予測されたアクション」を参照)。
DTP が信頼できる予測を行うには、健全な予測モデルが不可欠です。分類プロセスの結果、モデルが "不良" または "中" になる場合は、モデルの状態が改善するまで違反の分類を続ける必要があります。 詳細については「予測の精度について」を参照してください。[最高速] または [通常] モードを使用してモデルをトレーニングしたが、モデルの品質に満足できない場合は、モデルを再トレーニングして、[深く] または [最も深く] トレーニング モード オプションを選択します。
トレーニング モードについて
DTP は、次のアルゴリズムを使用してモデルをトレーニングします。
- k-NN
- Naive Bayes (単純ベイズ)
- Adaptive Boost
- Random Forest (ランダムフォレスト)
[最高速] および [深く] トレーニング モード オプションでは、静的解析データを処理するのに最も高速なアルゴリズムとして知られているk-NNとNaive Bayesアルゴリズムを使用します。ただし、実行されるアルゴリズムは 2 つだけであるため、最適なトレーニング モデルを DTP が決定する際の選択肢が少なくなります。
[通常] および [最も深く] トレーニング モードはすべてのアルゴリズムを使用するため、データ処理に他のオプションよりも時間がかかります。しかし、すべてのアルゴリズムを使用することで、DTP は最適なトレーニング モデルを決定するために最も多くの情報を得ることができます。
[最高速] および [通常] トレーニング モード オプションでは、モデルのトレーニングに使用される違反回数が 1000 回に制限されます。これにより、特に分類された違反が大量にある場合に、DTP のトレーニングを高速化できます。ただし、データ サンプルのサイズを減らすと、モデルの全体的な品質に影響する可能性があります。
[深く] および [最も深く] トレーニングでは、モードのトレーニングに使用できるすべての分類された違反を使用します。その結果、最良のモデルが生成される可能性があります。ただし、分類された違反がプロジェクトに非常に多くある場合、トレーニング プロセスが完了するまで数分かかります。
アクションの予測
- ウィザードがまだ開いていない場合は、機械学習のアイコンをクリックしてウィザードを起動します。
- [予測されたアクション] を選択して [次へ] をクリックします。
- [確認] をクリックします。DTP は機械学習モデルを使用して、フィルターの現在のビルドの静的解析違反を分類する方法について予測を行います。[優先度] タブの [予測されたアクション] フィールドが更新されます。詳細については「予測されたアクション」を参照してください。予測結果の概要も表示されます。
- 違反に対して予測されたアクションをレビューします。違反に予測を割り当てるか (「違反にアクションを割り当てる」を参照) 予測を無視することができます。予測されたアクションの詳細については「予測されたアクション」を参照してください。
予測されたアクション
違反を分類し、予測モデルをトレーニングして適用した後、[優先度] タブに [予測されたアクション] フィールドが表示されます。違反を修正する必要があると DTP が予測した場合、フィールドに "修正" の値と、予測されたアクションがモデルに基づいて正しいことを DTP がどの程度確信しているかを示す値が表示されます。
違反に対して修正アクションが予測されていない場合、[予測されたアクション] フィールドには "利用不可" と表示されます。
[予測アクション] 列を検索結果テーブルに追加して、DTP の推奨事項に従って違反をソートすることができます。
デフォルトでは、この列は表示されていません。縦の三点メニューをクリックし、[列] メニューから [予測アクション] を選択します。
テーブル内の最適な位置に列をドラッグできます。違反エクスプローラー ビューのカスタマイズの詳細については「エクスプローラー ビューの使用方法」を参照してください。
予測の精度について
DTP が行う予測の精度は、処理される違反の量と提供されるデータの品質に依存します。DTP では、少なくとも 20 件の違反にアクションを割り当てる必要がありますが、違反をさらに処理すると予測の精度が向上します。ユーザーが十分なデータを提供していない場合、DTP は予測を行うことができません。DTP に予測を通知するモデルは、提供されるデータの正確性と一貫性にも依存します。DTP は、高度なアルゴリズムを使用して各違反に関連するデータを分析しますが、品質の入力に基づいて品質の予測のみを行うことができます。1 つのタイプのアクションの割り当てが多すぎると、予測結果にも影響します。予測の精度を高めるために、修正および抑制アクションを同じ数だけ割り当てる必要があります。
Parasoft に機械学習フィードバックを提供する
API を使用して機械学習データを取得し、データを Parasoft に送信することで、Parasoft のシステムの改善を支援できます。ユーザー名やプロジェクト名などの機密情報は、レスポンスで難読化されます。 以下の API エンドポイントからの出力を保存して、機械学習データを取得できます。
/classificationResultSets
このエンドポイントは、モデルと予測結果のトレーニングに使用される静的解析違反を返します。
認証
リクエストを送信するときと同じように、ユーザー名とパスワードを渡します。「例」を参照してください。
URL
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
/violationActionHistory
このエンドポイントは、モデルのトレーニングに使用された違反に割り当てられたアクションを返します。
URL
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