null の this ポインターを呼び出すメソッド チェックのレビューと修正
このトピックでは、Polyspace® Code Prover™ で [null の this ポインターを呼び出すメソッド] チェックの結果を体系的にレビューする方法を説明します。
[null の this ポインターを呼び出すメソッド] チェックの修正を判断するまでこれらの手順の 1 つ以上に従います。チェックおよびコードの例については、null の this ポインターを呼び出すメソッド
を参照してください。
特にオレンジ チェックに対して、チェックが実際のエラーを表すのではなく、コードに該当しない Polyspace 前提条件を表していると判定できます。前提条件を緩和するのに解析オプションを使用できる場合、そのオプションを使用して検証を再実行します。それ以外の場合は、結果またはコードにコメントおよび正当化情報を追加できます。
すべてのチェックに適用される一般的なワークフローについては、Polyspace デスクトップ ユーザー インターフェイスでの Code Prover の結果の解釈またはPolyspace Access Web インターフェイスでの Code Prover の結果の解釈 (Polyspace Access)を参照してください。
手順 1: チェック情報の解釈
[結果のリスト] ペインで、チェックを選択します。[結果の詳細] ペインに、チェックに関する詳細が表示されます。
以下を表示できます。
チェックの直接の原因。
この例では、メソッド
addNewClient
の呼び出しに使用されているポインターがNULL
になる可能性があります。チェックの考えられる根本原因 (示されている場合)。
この例では、スタブ関数
returnPointer
に関連している可能性があります。
手順 2: チェックの根本原因の判定
ポインターに NULL
値が代入されている、あるいは未定義の関数または不明な関数入力から値が代入されている実行パスを探します。後者の場合、ポインターが NULL
になる可能性があると想定されます。
[結果のリスト] ペインで、チェックを選択します。
[結果の詳細] ペインでチェックにつながる命令の順序が表示される場合、各命令を選択し、根本原因へとトレースします。
[結果の詳細] ペインでチェックに対して考えられる原因の行番号が表示される場合、Polyspace ユーザー インターフェイスの [ソース] ペインで右クリックします。[行に移動] を選択します。
[結果の詳細] ペインに根本原因が示されない場合、Polyspace ユーザー インターフェイスの [ソース] ペインで、メソッドの呼び出しに使用されているポインターが
NULL
になる状況を確認します。ポインターを右クリックし、[すべての参照を検索] を選択します。
ポインターにアドレスが割り当てられているそれぞれの前のインスタンスを検索します。
インスタンスごとに、[ソース] ペインでカーソルをポインターの上に置きます。ツールヒントは、ポインターが
NULL
である可能性があるかどうかを示します。考えられる解決方法: ポインターが
NULL
の可能性がある場合、割り当ての直後にNULL
へのチェックを付けます。if(ptr==NULL) /* Error handling*/ else { . . }
ポインターが
NULL
ではない場合、割り当てが条件付きステートメントの分岐でのみ発生するのかどうかを確認します。分岐が実行されないときは調べます。考えられる解決方法: 条件付きステートメントのすべての分岐で有効なアドレスをポインターに割り当てます。