Main Content

Polyspace デスクトップ ユーザー インターフェイスでの Bug Finder の結果の解釈

このトピックでは、Polyspace デスクトップ製品のユーザー インターフェイスで Bug Finder の結果をレビューする方法を説明します。

Polyspace® Bug Finder™ 解析の結果を開くと、[結果のリスト] ペインにリストが表示されます。結果は、欠陥、コーディング ルール違反、またはコード メトリクスで構成されています。

まず、以下のようにしてレビューのフォーカスを絞り込むことができます。

  • 結果のリストの列にあるフィルターを使用してリストを絞り込みます。たとえば、影響度の高い欠陥にフォーカスできます。

  • 結果をファイルまたは結果ファミリ別に整理します。リストの上の アイコンを使用します。

リストを絞り込んだら、個別の結果のレビューを開始できます。このトピックでは、結果のレビュー方法を説明します。

レビューを開始するには、リスト内の結果を選択します。

結果の詳細のメッセージの解釈

メッセージの解釈

最初の手順は何が間違っているのかを理解することです。[結果の詳細] ペインのメッセージと、[ソース] ペインの関連するコード行を確認します。

追加のヘルプ リソースの検索

場合によって、特定の結果に関する追加のヘルプが必要なことがあります。 アイコンをクリックすると、選択した結果に関するヘルプ ページが開きます。結果を示すコード例を確認します。問題の修正に関する追加の根拠を提供する CWE や CERT-C などの外部標準をチェックします。

この時点で、問題を修正するかどうかの判断ができる可能性があります。解決策を特定したら、そのタイプのすべての結果をまとめてレビューすると役立つ可能性があります。

結果の根本原因の検出

場合によって、結果が表示された実際の場所から遠い場所に根本原因が存在することがあります。たとえば、初期化が到達不能であるために、読み取る変数が未初期化である場合があります。この欠陥は変数を読み取る際に表示されますが、その根本原因は、常に false となる以前の if 条件または while 条件である可能性があります。

関連するイベントへの移動

通常、[結果の詳細] ペインには、結果につながるイベントの順序が表示されます。[ソース] ペインでも、それらのイベントが強調表示されます。

上記のイベント トレースバックで、この順序は以下のように示されています。

  1. 変数 value が宣言される。

  2. 実行パスが if ステートメントをバイパスする。この情報は、変数が if ブロック内で初期化される場合に関係する可能性があります。

  3. 現在の欠陥の場所: 未初期化変数

通常、トレースバックには制御フローの主要なポイント (条件付きステートメントまたはループの開始やバイパス、関数の開始など) が示されます。特定の欠陥については、トレースバックにその欠陥に関連する他の種類のイベントが示されます。たとえば、[宣言の不一致] 欠陥の場合、トレースバックに競合する宣言がある 2 つの場所が示されます。

独自のナビゲーション パスの作成

イベント トレースバックを使用できない場合、他のナビゲーション ツールを使用してコード内の独自のパスをトレースします。

コード内の経路の移動を開始する前に、調査対象が何であるかを考えます。回答に基づいて、適切なナビゲーション ツールを選択します。次に例を示します。

  • [未初期化変数] 欠陥を調べるには、変数がまったく初期化されていないことの確認が必要な場合があります。変数の前のインスタンスを調査するには、[ソース] ペインでその変数を右クリックし、[すべての参照を検索] を選択します。または、その変数をダブルクリックします。これらのオプションを使用すると、特定の変数のインスタンスのみが表示され、スコープの異なる同名の他の変数は表示されません。

  • 以下の [MISRA C:2012 Rule 17.7] の違反を調査する場合、

    The value returned by a function having non-void return type shall be used.
    関数呼び出しから関数定義への移動が必要なことがあります。関数を右クリックし、[定義に移動] を選択します。

現在の結果から移動した後に戻るには、[結果の詳細] ペインの アイコンを使用します。

結果が含まれるソース コードのトークンをクリックしても、[結果のリスト] における前の結果の選択と [結果の詳細] ペインの詳細は変更されません。ソース コード内の移動中に、結果のリスト内の結果とピン留めした結果の詳細を維持できます。場合によっては、トークンに関連付けられている結果の確認が必要になります。結果の選択と詳細を更新するには、Ctrl キーを押しながらトークンをクリックするかトークンを右クリックして、[この位置における結果の選択] を選択します。

個別のウィンドウでの移動

結果のレビューのためにソース コード内をより深く移動することが必要な場合は、ソース コード ウィンドウの複製を作成し、元のソース コード ウィンドウ内を移動しながら、結果に焦点を当てていきます。

[ソース] ペインを右クリックして [複製コード ウィンドウの作成] を選択します。複製ファイル名 (-spawn 1 で終わる) を表示しているタブを右クリックして [New Vertical Group] を選択します。

欠陥が元のファイル ウィンドウに表示される間は、複製ファイル ウィンドウで移動の手順を実行します。調査が終わったら、複製ウィンドウを閉じます。

関連するトピック