このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
呼び出されていない関数チェックのレビューと修正
このトピックでは、Polyspace® Code Prover™ で [呼び出されていない関数] チェックの結果を体系的にレビューする方法を説明します。
[呼び出されていない関数] チェックの修正を判断するまでこれらの手順の 1 つ以上に従います。このチェックを修正する方法は複数あります。チェックおよびコードの例については、呼び出されない関数
を参照してください。
チェックが防御的コードまたはライブラリの一部である関数を表していると判断する場合、結果またはコードにコメントおよび正当化情報を追加し、コードを変更しなかった理由を説明しますPolyspace ユーザー インターフェイスでのバグ修正または正当化による結果への対処またはPolyspace Access でのバグ修正または正当化による結果への対処 (Polyspace Access)を参照してください。
メモ
このチェックは既定ではオンに設定されません。このチェックをオンにするには、適切な解析オプションを指定しなければなりません。詳細は、呼び出されない関数の検出 (-uncalled-function-checks)
を参照してください。
手順 1: チェック情報の解釈
[結果のリスト] ペインで、チェックを選択します。[ソース] ペインでは、関数の本体はグレーで強調表示されています。
手順 2: チェックの根本原因の判定
関数名を検索し、コード内の関数の呼び出しを検索できるか確認します。
[検索] ペインで関数名を入力します。検索フィールドの横のドロップダウン リストから、[ソース] を選択します。
考えられる解決方法: 関数の呼び出しが見つからない場合は、関数定義がコードに存在する理由を判断します。
関数の呼び出しが見つかる場合、別の呼び出されない関数の本体で発生するかを確認します。
考えられる解決方法: 後者の関数が呼び出されない理由を調べます。
関数がたとえば関数ポインターを介して間接的に呼び出されるかどうかを確認します。
間接参照が深すぎる場合、Polyspace は特定の関数が呼び出されていると判断できない場合があります。
考えられる解決方法: Polyspace で関数が間接的に呼び出されていると判断できない場合、これらの関数を個別に検証しなければなりません。こうした別の検証用に
main
関数を新たに作成する必要はありません。Polyspace は、ソースに関数を設定しない場合にmain
関数を生成することができます。必要に応じてmain
の生成オプションを変更できます。オプションの詳細については、Code Prover 検証を参照してください。
手順 3: チェックの一般的な原因の検索
次の [呼び出されていない関数] チェックの一般的な原因を確認します。
関数を呼び出すことを意図したが別の関数を代わりに使用したかどうかを判定します。
コードの一部を関数呼び出しで置き換えることを意図していたかどうか判定します。関数定義を記述したが、元のコードを関数呼び出しに置き換えるのを忘れている場合があります。
この状況が発生する場合、コードが重複している可能性があります。
まだ記述されていないコードから関数を呼び出すかどうかを確認します。該当する場合、関数定義を保持します。
マルチタスキングを対象としているコードについては、すべてのエントリ ポイント関数を指定したかどうか確認します。
結果で使用されるオプションを確認するには、[ダッシュボード] ペインでリンク [結果の構成を表示] を選択します。
詳細は、
タスク (-entry-points)
を参照してください。マルチタスキングを対象としているコードの場合、
main
関数に無限ループが含まれているかどうかを確認します。Polyspace Code Prover では、main
関数は他のエントリ ポイントが開始する前に実行を完了しなければなりません。詳細は、Polyspace マルチタスキング解析の手動設定を参照してください。