Java 8에서 "Files.exists"는 사용되선 안됩니다.

 

Files.exists 메서드는 JDK 8에서 성능이 현저히 떨어지는것으로 알려져있습니다. 실제로 존재하지 않는 파일을 검사하는 데 이 메소드를 사용할 경우, 애플리케이션의 속도가 상당히 느려질 수 있습니다.

java.nio.file 패키지 아래에 있는 Files.notExists, Files.isDirectoryFiles.isRegularFile도 마찬가지입니다.

참고: 이 규칙은 프로젝트의 sonar.java.source의 값이 8보다 낮은 경우(java8) 검사하지 않습니다.

규칙을 어긴 코드

Path myPath;
if(java.nio.file.Files.exists(myPath)) {  // 규칙을 어긴 코드
  // do something
}

규칙을 준수한 해결책

Path myPath;
if(myPath.toFile().exists())) {
  // do something
}

같이보면 좋은 자료

  • https://bugs.openjdk.java.net/browse/JDK-8153414
  • https://bugs.openjdk.java.net/browse/JDK-8154077

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

원문으로 바로가기

Star This Project