このセクションの内容:
修正する違反を推奨する理由
違反を評価する際に開発者が最初に行う決定の 1 つは、違反を修正するか抑制するかです。検出された違反のほとんどは真陽性ですが、違反が偽陽性である場合や、チームが特定の種類の違反を修正しないことに決めた場合など、違反を抑制することが賢明な場合もあります。
DTP は、同様の違反が修正されたか抑制されたかの履歴データに基づいて、違反を修正するかどうかを推奨します。この推奨は、修正率で示されます。高いパーセンテージ (たとえば 80% 以上) は、同様の違反が過去に修正されたことを示し、低いパーセンテージ (たとえば 20% 未満) は、同様の違反が過去に抑制されたことを意味します。
開発者は、違反の評価とトリアージの補助として DTP の推奨事項を利用できます。
推奨の取得
推奨を取得するには、まずモデルをトレーニングする必要があります。トレーニングには、[優先順度] タブの [アクション] フィールドで ”修正” または ”抑制” として分類された違反が必要です (「違反にアクションを割り当てる」を参照)。
以前から違反を修正している場合は、履歴に基づいて違反を分類できます。これが推奨される方法です。新しいユーザーで、違反を修正または抑制したことがない場合は、違反を手動で分類できます。機械学習ウィザードでは、両方の方法がサポートされています。
モデルをトレーニングするには、少なくとも 20 件の違反のバランスの取れたセットを ”修正” または ”抑制” として分類する必要があります。
より多くの違反を修正および抑制し続けるため、時々モデルを再トレーニングすることをお勧めします。
機械学習ウィザードを使用したモデルのトレーニング
このウィザードは、以下の操作をガイドします。
- 違反を分類する: 違反の分類とは、[優先度] タブの [アクション] フィールドに値を設定することです (「違反にアクションを割り当てる」を参照)。機械学習機能は、推奨モデルを作成するために少なくとも 20 件の違反を "修正" または "抑制" に分類する必要があります。
- モデルをトレーニングする: DTP は分類された違反を分析し、いくつかのデータ ポイントに基づいて推奨モデルを作成します。多くの違反 (たとえば 1000 件超) を分析した場合、予測モデルの作成に数分かかることがあります。作成されたモデルには、ヘルス スコアが割り当てられます。モデルのヘルス スコアが許容範囲を超えている場合、ウィザードにより、追加の違反をレビューして分類するように求められます。
違反を分類する
- 機械学習アイコンをクリックして [修正する違反の推奨] を選択し、ウィザードを起動します。
- 初めてウィザードを起動する場合、または既存のモデルではアクションを推奨するのに不十分な場合、モデルをトレーニングするように求められます。[次へ] をクリックします。
- 推奨モデルを構築するには、少なくとも 20 個の違反を分類する必要があります。[違反の分類] を選択して [次へ] をクリックします。
- DTP はフィルター内の既存のビルドを分析し、ユーザーに対して既に分類されている違反に基づいてモデルを作成するか、または手動で違反を分類するように求めます。
- 次のオプションのいずれかを選択して [確認] をクリックします。
- [履歴に基づいて違反を分類] を有効にし、[ビルド履歴] メニューから [すべて]、[6 か月]、または [12 か月] を選択します。DTP はすでに修正または抑制されている違反を検索し、[アクション] フィールドを ”修正" または "抑制" に設定します。詳細については「予想される分類結果」を参照してください。
- [手動で違反を分類] を有効にすると、DTP はレビューと分類のために現在のビルドから 20 の違反を提示します。違反を手動で分類する方法については、「違反にアクションを割り当てる」を参照してください。
- 十分な数の違反が分類された場合、モデルをトレーニングできるように、ウィザードのメイン ページに戻るように求められます (「モデルをトレーニングする」を参照)。
予想される分類結果
[履歴に基づいて違反を分類] を有効にすると、DTP はデータベース中の修正または抑制された違反を分類します。次のいずれかの結果になります。
- 十分な数の違反が分類された場合、モデルをトレーニングできるように、ウィザードのメイン ページに戻るように求められます (「モデルをトレーニングする」を参照)。
- 履歴からの違反が修正または抑制されていない場合、DTP は自動的にアクションを割り当てることができません。ウィザードのメイン ページに戻り、分類プロセスを再開するように求められます。[手動で違反を分類] を選択します。DTP はレビューと分類のために現在のビルドから 20 の違反を提示します。違反を手動で分類する方法については、「違反にアクションを割り当てる」を参照してください。
- DTP は、"修正" と "抑制" の比率のバランスを必要とします。非常に多くの違反が特定されて "修正" または "抑制" のいずれかに分類されている場合、バランスの取れた比率になるまで、さらに違反を手動で分類するように求められます。違反を手動で分類する方法については、「違反にアクションを割り当てる」を参照してください。
モデルをトレーニングする
- ウィザードがまだ開いていない場合、機械学習アイコンをクリックして [修正する違反の推奨] を選択し、ウィザードを起動します。
- [モデルのトレーニング] を選択し、[次へ] をクリックします。
- すでに 20 件以上の違反を分類している場合は、その分類に基づいてトレーニングを実行するよう促されます (まだ 20 件以上の違反を分類していない場合は、「違反の分類」を参照してください)。[トレーニングの実行] を有効にして [次へ] をクリックします。
- トレーニング モードを選択します。選択するオプションの詳細については「トレーニング モードについて」を参照してください。
- 違反の分類方法に関する推奨モデルのトレーニングを開始するように求められた場合、[確認] をクリックします。多くの違反 (たとえば 1000 件超) を分析した場合、予測モデルの作成に数分かかることがあります。
- モデルがトレーニングされると、ユーザーは推奨アクションを予測するように求められます (「修正する違反の推奨」を参照)。
DTP が信頼できる推奨を行うには、健全な推奨モデルが不可欠です。分類プロセスの結果、モデルが "不良" または "中" になる場合は、モデルの状態が改善するまで違反の分類を続ける必要があります。 詳細については「モデルの精度について」を参照してください。[最高速] または [通常] モードを使用してモデルをトレーニングしたが、モデルの品質に満足できない場合は、モデルを再トレーニングして、[深く] または [最も深く] トレーニング モード オプションを選択します。
トレーニング モードについて
DTP は、次のアルゴリズムを使用してモデルをトレーニングします。
- k-NN
- Naive Bayes (単純ベイズ)
- Adaptive Boost
- Random Forest (ランダムフォレスト)
[最高速] および [深く] トレーニング モード オプションでは、静的解析データを処理するのに最も高速なアルゴリズムとして知られているk-NNとNaive Bayesアルゴリズムを使用します。ただし、実行されるアルゴリズムは 2 つだけであるため、最適なトレーニング モデルを DTP が決定する際の選択肢が少なくなります。
[通常] および [最も深く] トレーニング モードはすべてのアルゴリズムを使用するため、データ処理に他のオプションよりも時間がかかります。しかし、すべてのアルゴリズムを使用することで、DTP は最適なトレーニング モデルを決定するために最も多くの情報を得ることができます。
[最高速] および [通常] トレーニング モード オプションでは、モデルのトレーニングに使用される違反回数が 1000 回に制限されます。これにより、特に分類された違反が大量にある場合に、DTP のトレーニングを高速化できます。ただし、データ サンプルのサイズを減らすと、モデルの全体的な品質に影響する可能性があります。
[深く] および [最も深く] トレーニングでは、モデルのトレーニングに使用できるすべての分類された違反を使用します。その結果、最良のモデルが生成される可能性があります。ただし、分類された違反がプロジェクトに非常に多くある場合、トレーニング プロセスが完了するまで数分かかります。
修正する違反の推奨
修正する違反についての推奨は、次の 2 つの場所から取得できます。
[優先度] タブから
また、[優先度] タブの [推奨の取得] をクリックしても、修正する違反の推奨を取得できます。
モデルをトレーニング した場合、推奨が [推奨事項] セクションに追加されます。1 つ以上の前提条件が満たされていない場合、[推奨事項] ラベルの左側に情報アイコンが表示され、マウスポインターを合わせると詳細が表示されます。
機械学習ウィザードの使用
- ウィザードがまだ開いていない場合、機械学習アイコンをクリックして [修正する違反を推奨] を選択し、ウィザードを起動します。
- [修正する違反を推奨] を有効にして [次へ] をクリックします。
- [修正する違反を推奨] が利用できない場合は、さらに違反を分類する必要があります。「違反の分類」を参照してください。
- 推奨の精度を上げたい場合は、モデルをさらにトレーニングする必要があります。「モデルをトレーニングする」を参照してください。
- [確認] をクリックします。DTP は機械学習モデルを使用して、フィルターの現在のビルドの静的解析違反を分類する方法について推奨を行います。[優先度] タブの [推奨されたアクション] フィールドが更新されます。推奨の確認の詳細については、「Viewing Recommendations」を参照してください。推奨結果の概要も表示されます。
- 違反に対して推奨されたアクションをレビューします。違反に推奨を割り当てるか (「違反にアクションを割り当てる」を参照)、推奨を無視することができます。推奨の確認の詳細については、「Viewing Recommendations」を参照してください。
推奨の確認
違反を修正するための推奨事項は、検索結果テーブルと [優先度] タブの 2 つの場所で確認できます。
検索結果テーブルでは、[推奨されるアクション] 列を確認します。DTP の推奨事項に従って違反をソートすることができます。
[優先度] タブでは、[推奨事項] セクションを確認します。
モデルの精度
DTP が使用するモデルの精度は、処理される違反の数と提供されるデータの品質に依存します。DTP では、少なくとも 20 件の違反を分類する必要がありますが、より多くの違反を分類すると、モデルの精度が向上します。十分なデータを提供していない場合、DTP はモデルを使用して推奨を作成できません。
DTP の推奨を通知するモデルは、提供されたデータの正確さと一貫性にも依存します。DTP は、高度なアルゴリズムを使用して各違反に関連するデータを分析しますが、品質の入力に基づいて品質の推奨のみを行うことができます。修正された違反の数と抑制された違反の数に不均衡がある場合 (または、アクションが ”修正” に設定された違反の数と、アクションが ”抑制” に設定された違反の数に不均衡がある場合)、DTP はモデルを適切にトレーニングできないことを示す場合があります。この場合、推奨の精度を高めるために、修正および抑制アクションを同じ数だけ割り当てる必要があります。
Parasoft への機械学習フィードバックの提供
API を使用して機械学習データを取得し、データを Parasoft に送信することで、Parasoft のシステムの改善を支援できます。ユーザー名やプロジェクト名などの機密情報は、レスポンスで難読化されます。 以下の API エンドポイントからの出力を保存して、機械学習データを取得できます。
/classificationResultSets
このエンドポイントは、モデルと推奨結果のトレーニングに使用される静的解析違反を返します。
認証
リクエストを送信するときと同じように、ユーザー名とパスワードを渡します。「例」を参照してください。
URL
http:<HOST>:<PORT>/grs/api/v1.7/ml/staticAnalysis/classificationResultsSets
メソッド
GET
パラメーター
以下の表は、このエンドポイントで利用できるパラメーターの一覧です。
パラメーター | 説明 | 種類 | Required (必須) |
---|---|---|---|
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