メインコンテンツ

Polyspace Access Web インターフェイスでの Bug Finder の結果の解釈

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

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

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

  • [結果のリスト] の列ヘッダーをクリックし、その列の内容に基づいてリストを並べ替えます。たとえば、[グループ] または [ファイル] で並べ替えることができます。

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

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

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

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

場合によって、特定の結果に関する追加のヘルプが必要なことがあります。More help アイコンをクリックすると、選択した結果に関するヘルプ ページが開きます。結果を示すコード例を確認します。問題の修正に関する追加の根拠を提供する CERT-C などの外部標準をチェックします。欠陥に対する修正の提案が利用可能な場合には、Propose fix アイコンをクリックすると、その提案が表示されます。

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

結果の根本原因の検出

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

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

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

Result Details pane showing a Non-initialized variable defect and an event traceback

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

  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.
    関数呼び出しから関数定義への移動が必要なことがあります。関数を右クリックし、[定義に移動] を選択します。

[ソース コード] ペインで現在選択している結果から移動した後に、[ソース コード] ペインでのその結果の場所に戻るには、[結果の詳細] ペインで Highlight result in Source Code アイコンをクリックします。

[ソース コード] ペインから別の結果を選択するには、Ctrl キーを押しながらその結果をクリックするか、または右クリックして [結果の選択] サブメニューから結果を選択します。[結果の詳細] ペインは更新されますが、[結果のリスト] ペインでは、選択した結果が強調表示されません。[結果のリスト] で結果をクリックすると、[結果の詳細] ペインと [ソース コード] ペインが更新されます。

[ソース コード] ペインでのナビゲーションと Polyspace アクションの保存

Polyspace の [ナビゲーション履歴] ペインには、特定のレビュー ワークフロー アクションが表示されます。

[ナビゲーション履歴] ペインでアクションをクリックすると、[結果の詳細] ペインにそのアクションに関連する結果が表示されます。次に [ソース コード] ペイン内で、そのアクションに関連付けられているコードの場所に移動します。結果のレビュー プロセスを進める際、[ナビゲーション履歴] ペインを使用して以前の結果を再び参照し、[ソース コード] ペインで関連するコードを見つけます。

Polyspace が記録するアクションには以下が含まれます。

  • [結果のリスト] ペインでの結果の選択

  • [ソース コード] ペインの右クリック メニューからの [ナビゲーション履歴で位置を保持] の選択

  • [エラー呼び出しグラフ][変数アクセス グラフ] などのグラフ内でのノードの選択

  • [コード検索][呼び出し階層][グローバル変数の使用]、または [グローバル変数アクセス] ペインでの行の選択

[ナビゲーション履歴] ペインで重要なアクションにフラグを設定するには、そのアクションの行番号をクリックします。

Clear all actions アイコンをクリックすると、[ナビゲーション履歴] ペインからすべてのアクションが削除されます。

Navigation History pane

参考

トピック