このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
誤ったオブジェクト指向プログラミング チェックのレビューと修正
このトピックでは、Polyspace® Code Prover™ で [誤ったオブジェクト指向プログラミング] チェックの結果を体系的にレビューする方法を説明します。
[誤ったオブジェクト指向プログラミング] チェックの修正を判断するまでこれらの手順の 1 つ以上に従います。チェックおよびコードの例については、誤ったオブジェクト指向プログラミング
を参照してください。
すべてのチェックに適用される一般的なワークフローについては、Polyspace デスクトップ ユーザー インターフェイスでの Code Prover の結果の解釈またはPolyspace Access Web インターフェイスでの Code Prover の結果の解釈 (Polyspace Access)を参照してください。
手順 1: チェック情報の解釈
[結果のリスト] ペインで、チェックを選択します。[結果の詳細] ペインに、チェックに関する詳細が表示されます。
以下を表示できます。
チェックの直接の原因。次に例を示します。
値が
NULL
であるか、無効なメンバー関数を指す関数ポインターをデリファレンスしている。引数または戻り値の型がポインターの引数または戻り値の型と一致しない場合、そのメンバー関数は無効となります。
クラスの純粋な
virtual
メンバー関数をクラスのコンストラクターまたはデストラクターから呼び出している。メンバー関数の呼び出しで使用している
this
ポインターが正しくない。this
ポインターが正しくならない理由を確認するには、誤ったオブジェクト指向プログラミング
を参照してください。
チェックの考えられる根本原因 (示されている場合)。
手順 2: チェックの根本原因の判定
チェック情報に基づいて根本原因を判定できない場合、ユーザー インターフェイスのナビゲーション ショートカットを用いて根本原因に移動します。
具体的なエラーに基づいて、次のいずれかの方法で根本原因を特定します。
エラー | 根本原因の検出方法 |
---|---|
値が NULL の関数ポインターをデリファレンスしている。 | 関数ポインターを右クリックし、[すべての参照を検索] を選択します。関数ポインターに |
無効なメンバー関数を指す関数ポインターをデリファレンスしている。 | 関数ポインターの引数および戻り値の型をその関数ポインターが指しているメンバー関数と比較します。
|
純粋な virtual メンバー関数をコンストラクターまたはデストラクターから呼び出している。 | メンバー関数の宣言を探し、意図的に
|
メンバー関数の呼び出しで使用している this ポインターが正しくない。 |
たとえば、レッドの [誤ったオブジェクト指向プログラミング] チェックが関数呼び出し
レッドの [誤ったオブジェクト指向プログラミング] チェックが関数呼び出し |