このインスペクションは、バッチモード (「コード | コードのインスペクション」と「コード | コードの解析 | インスペクション名を指定して実行」からアクセス) とエディターでオンザフライで実行する場合とでは動作が異なります。
return ステートメントがあり、super メソッドがなく、オーバーライドできないメソッドのみを報告します。 メソッドがメソッドをオーバーライドまたは実装する場合、契約が特定の定数を返すためにメソッドを必要とする可能性がありますが、同時に複数の終了ポイントを持つことをお勧めします。 メソッドをオーバーライドできる場合、異なる値がサブクラスで返される可能性があります。
例:
class X {
// バッチモードでのみ警告。
int xxx() { // メソッド 'xxx()' とそのすべてのオーバーライドメソッドは常に '0' を返します
return 0;
}
}
class Y extends X {
@Override
int xxx() {
return 0;
}
// バッチモードでのみ警告。
int yyy() { // メソッド 'yyy()' は常に '0' を返します
return 0;
}
// バッチモードとオンザフライの両方で警告。
final int zzz(boolean flag) { // メソッド 'zzz()' は常に '0' を返します
if (Math.random() > 0.5) {
return 0;
}
return 0;
}
}