EN JP CN

JD.CAST.SUSP

JD.CAST.SUSP

JD.CAST.SUSP は、オブジェクトが型 A に対する演算子のインスタンスでチェックされた後、型 A と型 B が無関係であるにもかかわらず、型 A に変換される場合に起動されます。すなわち、Klocwork は、A が B の派生型であることや、B が A の派生型であることを調べることができません。

脆弱性とリスク

型変換は安全でないため、通常、これはエラーです。実際にはオブジェクトは B 以外の型である可能性があります。場合によっては、instanceof から cast へのパスに矛盾があると、このエラーは偽陽性を生じる可能性があります。

軽減と防止

実際に使用する型 (A または B) を選択し、A に型変換するか、B への instanceof をチェックしてください。

例 1

10   void setValue(Object a, Object value) {
11     if (a instanceof String) {
12       StringBuffer b = (StringBuffer) a;
13       b.append("=");
14       b.append(value);
15     }
16   }

JD.CAST.SUSP が 12 行目の型変換に対して報告されています。'String' から 'StringBuffer' への 'a' の型変換は疑わしい型変換です。無関係な型です。-> 11: a instanceof String-> 12:(StringBuffer)a

関連チェッカー