String.repeat() 메서드(Java 11부터 이용 가능) 하나로 대체 가능한 루프를 보고합니다.
예:
void append(StringBuilder sb, int count, Object obj) {
for (int i = 0; i < count; i++) {
sb.append(obj);
}
}
빠른 수정을 적용한 후:
void append(StringBuilder sb, int count, Object obj) {
sb.append(String.valueOf(obj).repeat(Math.max(0, count)));
}
기본적으로 이 검사는 count가 음수임을 정적으로 증명할 수 없을 경우 count를 Math.max(0, count)로 래핑합니다. 이는 String.repeat()가 음수를 거부하여 발생하는 잠재적 의미 변경을 방지하기 위해 수행됩니다.
필요한 경우 이 동작을 비활성화하려면 가능한 의미 변경을 방지하기 위해 Math.max(0, count)를 추가 옵션을 사용합니다.
마찬가지로, 반복하려는 문자열이 null일지 여부를 알 수 없는 경우, 잠재적 NullPointerException를 방지하기 위해 해당 문자열을 String.valueOf로 래핑할 수도 있습니다.
이 검사는 프로젝트 또는 모듈의 언어 수준이 11 이상인 경우에만 보고합니다.
2019.1의 새로운 기능