이 검사는 배치 모드(코드 | 코드 검사 또는 코드 | 코드 분석 | 이름별로 검사 실행)일 때와 에디터에서 즉시 사용할 때 다르게 동작합니다.
return 문이 있으며, 상위 메서드가 없고 재정의가 되지 않는 메서드만 보고합니다. 메서드가 메서드를 재정의하거나 구현하는 경우, 해당 메서드가 특정 상수를 반환하도록 컨트랙트에서 요구할 수 있으며, 이때 여러 종료점을 두는 것이 좋습니다. 메서드가 재정의될 수 있는 경우 하위 클래스에서 다른 값이 반환될 수도 있습니다.
예:
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;
}
}