Primitive 배열에는 "Arrays.stream"이 사용되어야 합니다

 

String::replaceAll의 기본 구현은 java.util.regex.Pattern.compile()을 매번 호출하도록 되어있습니다. (첫번째 인수 값이 정규표현이 아닌 경우에도) 이는 굉장히 큰 성능 문제를 야기하기 때문에, 사용에 매우 주의해야합니다.

String::replaceAll을 사용하는 경우라면, 첫 번째 인수는 실제 정규식이어야 합니다. 그렇지 않다면, String::replace이 정규식으로 인한 성능 저하 없이 String::replaceAll과 정확히 동일한 작업을 수행하니 이를 사용하는 것이 좋습니다.

이 규칙은 각 String::replaceAll의 첫 번째 인수가 특수 정규식 문자나 패턴을 포함하지 않는 경우에 알림을 울립니다.

규칙을 어긴 코드

String init = "Bob is a Bird... Bob is a Plane... Bob is Superman!";
String changed = init.replaceAll("Bob is", "It's"); // 규칙을 어긴 코드
changed = changed.replaceAll("\\.\\.\\.", ";"); // 규칙을 어긴 코드

규칙을 준수한 해결책

String init = "Bob is a Bird... Bob is a Plane... Bob is Superman!";
String changed = init.replace("Bob is", "It's");
changed = changed.replace("...", ";");

regex를 사용하고 싶다면 아래와 같이 사용합니다.

String init = "Bob is a Bird... Bob is a Plane... Bob is Superman!";
String changed = init.replaceAll("\\w*\\sis", "It's");
changed = changed.replaceAll("\\.{3}", ";");

같이보면 좋은 자료

  • {rule:java:S4248} - Regex patterns should not be created needlessly

If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project