break 또는 continue가 사용된 경우를 보고합니다.
break 및 continue 키워드는 항상 실제 루프(for, while, do-while)에 적용됩니다. break 및 continue는 함수에 적용되지 않습니다. 예를 들어, break 및 continue는 forEach, filter, map에 적용되지 않습니다.
루프 같은 함수(예: forEach) 내에서 break 또는 continue를 사용하면 혼동될 수 있습니다.
이 검사는 라벨을 추가하여 어떤 구문에 break 또는 continue가 적용되는지 명확히 하도록 제안합니다.
Kotlin에는 루프 같은 함수의 개념이 없으므로 이 검사는 경험적 지식을 사용합니다. callsInPlace(EXACTLY_ONCE) 또는 callsInPlace(AT_LEAST_ONCE) 컨트랙트 중 하나가 없는 함수는 루프 같은 함수라고 가정합니다.
예:
for (file in files) {
file.readLines().forEach { line ->
if (line == commentMarkerLine) continue
println(line)
}
}
빠른 수정에서는 명확히 구분 짓는 라벨을 추가합니다.
loop@ for (file in files) {
file.readLines().forEach { line ->
if (line == commentMarkerLine) continue@loop
println(line)
}
}