EN JP CN

STRONG.TYPE.ASSIGN.RETURN

STRONG.TYPE.ASSIGN.RETURN

不明瞭な戻り値を持つ強い型の割り当て

チェッカーの STRONG.TYPE ファミリーは、プログラマーが行う強い型指定 (型が定義された抽象型) が違反または無視され、基礎となる ANSI 型セマンティックスが優先される状況を検出します。

STRONG.TYPE.ASSIGN.RETURN チェッカーは、強い型が期待されるものの存在しない関数の return ステートメントを検出します。

脆弱性とリスク

ANSI 規格対応のコンパイラは、表面の (プログラマーが定義する) 型ではなく、基底型をチェックするだけであるため、このような指摘に関する警告を報告しません。この結果、論理エラーが発生する可能性があります。

脆弱コード例

1 typedef float Speed;
2 
3 Speed getTurtleSpeed()
4 {
5   return 1.0;
6 }

Klocwork 戻り値が、期待される強い型 Speed ではないことを示す 5 行目にフラグを立てます。

修正コード例

1 typedef float Speed;
2 
3 Speed getTurtleSpeed()
4 {
5   return (Speed)1.0;
6 }

戻り値が強い型 Speed に明示的にキャストされる場合は、レポートは生成されません。