switch 문 내 '폴스루'를 보고합니다.
폴스루는 case 라벨 뒤에 오는 일련의 실행 가능한 구문이 다음 case 라벨 앞에서 제어를 전달하도록 보장되지 않는 경우 발생합니다. 예를 들어, 이는 브랜치에 break 문이 누락된 경우 발생할 수 있습니다.
그러한 경우, switch 식이 폴스루된 라벨의 값과 같지 않더라도 제어는 해당 switch 라벨 뒤에 오는 구문으로 폴스루합니다. 이러한 구문은 의도된 경우도 있으나 혼란스러울 수 있으며 보통 오타가 난 결과입니다.
이 검사는 정규식 패턴 (?i)falls?\s*thro?u과 일치하는 텍스트로 된 주석이 추가된 모든 폴스루를 무시합니다.
다음 브랜치로 폴스루할 수 있는 브랜치에 break를 추가하는 수정이 있습니다.
예:
switch(x) {
case (4):
if (condition) {
System.out.println("3");
// break 없음
} else {
break;
}
case (6):
System.out.println("4");
}
빠른 수정을 적용한 후:
switch(x) {
case (4):
if (condition) {
System.out.println("3");
} else {
break;
}
break;
case (6):
System.out.println("4");
}