メインコンテンツ

値を返さない関数チェックのレビューと修正

このトピックでは、Polyspace® Code Prover™[値を返さない関数] チェックの結果を体系的にレビューする方法を説明します。

[値を返さない関数] チェックの修正を判断するまでこれらの手順の 1 つ以上に従います。チェックおよびコードの例については、値を返さない関数を参照してください。

すべてのチェックに適用される一般的なワークフローについては、Polyspace デスクトップ ユーザー インターフェイスでの Code Prover の結果の解釈またはPolyspace Access Web インターフェイスでの Code Prover の結果の解釈 (Polyspace Access)を参照してください。

手順 1: チェック情報の解釈

[結果のリスト] ペインで、チェックを選択します。[結果の詳細] ペインに、チェックに関する詳細が表示されます。

以下を表示できます。

  • チェックの直接の原因。

    この例では、非 void の戻り値の型の関数に return ステートメントがない可能性があると識別されています。

  • チェックの考えられる根本原因 (示されている場合)。

    この例では、パスに関連している可能性があると識別されています。関数の呼び出しが複数存在し、少なくとも 1 つの呼び出しでチェックがグリーンになっています。

手順 2: チェックの根本原因の判定

return ステートメントが特定の実行パスに存在しない理由を特定します。

  1. return ステートメントの関数本体を参照します。

  2. return ステートメントが見つかったら、以下を実行します。

    1. return ステートメントが関数内のブロックで発生するかどうかを確認します。

      たとえば、return ステートメントが if ブロック内で発生するとします。if ブロックに入らない実行パスでは、return ステートメントがバイパスされます。

    2. return ステートメントがバイパスされる実行パスを特定できるかどうかを確認します。

      たとえば、return ステートメントを含む if ブロックが特定の関数入力でバイパスされる場合があります。

    3. 関数がコードで複数回呼び出される場合、どの関数呼び出しが原因で return ステートメントがバイパスされるかを特定できます。オプション状況依存性を使用して、各関数呼び出しのチェックの色を確認します。

考えられる解決方法: 関数の戻り値の型が正しくない場合は変更します。それ以外の場合は、return ステートメントをすべての実行パスに追加します。たとえば、if-else if-else 条件の一部の分岐にしか return ステートメントがない場合は、残りの分岐に return ステートメントを追加します。あるいは、return ステートメントを if-else if-else 条件の外に追加します。