diff --git a/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/ClassBlankLine.java b/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/ClassBlankLine.java new file mode 100644 index 00000000000..a1585fe069c --- /dev/null +++ b/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/ClassBlankLine.java @@ -0,0 +1,7 @@ + +package checks.FileHeaderCheck; + +public class ClassBlankLine { +} +// Compliant + diff --git a/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/ClassNoBlankLine.java b/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/ClassNoBlankLine.java new file mode 100644 index 00000000000..006c957bfc8 --- /dev/null +++ b/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/ClassNoBlankLine.java @@ -0,0 +1,5 @@ +package checks.FileHeaderCheck; + +public class ClassNoBlankLine { +} +// Compliant diff --git a/java-checks/src/main/java/org/sonar/java/checks/FileHeaderCheck.java b/java-checks/src/main/java/org/sonar/java/checks/FileHeaderCheck.java index a9bd6d7ec8b..9212668213f 100644 --- a/java-checks/src/main/java/org/sonar/java/checks/FileHeaderCheck.java +++ b/java-checks/src/main/java/org/sonar/java/checks/FileHeaderCheck.java @@ -67,14 +67,18 @@ public void setContext(JavaFileScannerContext context) { } } } else { - expectedLines = headerFormat.split("(?:\r)?\n|\r"); + if (headerFormat.isEmpty()) { + expectedLines = new String[] {}; + } else { + expectedLines = headerFormat.split("(?:\r)?\n|\r"); + } } visitFile(); } private String getHeaderFormat() { String format = headerFormat; - if(format.charAt(0) != '^') { + if (format.charAt(0) != '^') { format = "^" + format; } return format; diff --git a/java-checks/src/test/java/org/sonar/java/checks/FileHeaderCheckTest.java b/java-checks/src/test/java/org/sonar/java/checks/FileHeaderCheckTest.java index 33036f91e98..fef5df2fa44 100644 --- a/java-checks/src/test/java/org/sonar/java/checks/FileHeaderCheckTest.java +++ b/java-checks/src/test/java/org/sonar/java/checks/FileHeaderCheckTest.java @@ -98,6 +98,18 @@ void test() { .onFile(mainCodeSourcesPath("checks/FileHeaderCheck/Class3.java")) .withCheck(check) .verifyNoIssues(); + + check = new FileHeaderCheck(); + CheckVerifier.newVerifier() + .onFile(mainCodeSourcesPath("checks/FileHeaderCheck/ClassBlankLine.java")) + .withCheck(check) + .verifyNoIssues(); + + check = new FileHeaderCheck(); + CheckVerifier.newVerifier() + .onFile(mainCodeSourcesPath("checks/FileHeaderCheck/ClassNoBlankLine.java")) + .withCheck(check) + .verifyNoIssues(); } @Test diff --git a/sonar-java-plugin/src/test/java/org/sonar/plugins/java/JavaSensorTest.java b/sonar-java-plugin/src/test/java/org/sonar/plugins/java/JavaSensorTest.java index 04695b3f062..839e6f8c393 100644 --- a/sonar-java-plugin/src/test/java/org/sonar/plugins/java/JavaSensorTest.java +++ b/sonar-java-plugin/src/test/java/org/sonar/plugins/java/JavaSensorTest.java @@ -374,19 +374,6 @@ void custom_performance_measure_file_path_can_be_empty() throws IOException { assertThat(new String(Files.readAllBytes(defaultPerformanceFile), UTF_8)).contains("\"JavaSensor\""); } - /*@Test - void test_java_version_automatically_accepts_enablePreview_flag_when_maximum_version() throws IOException { - MapSettings settings = new MapSettings(); - settings.setProperty("sonar.java.source", JavaVersionImpl.MAX_SUPPORTED); - settings.setProperty("sonar.java.enablePreview", "True"); - Path workDir = tmp.newFolder().toPath(); - executeJavaSensorForPerformanceMeasure(settings, workDir); - assertThat(logTester.logs(Level.WARN)).isEmpty(); - List infoLogs = logTester.logs(Level.INFO); - assertThat(infoLogs).contains("Configured Java source version (sonar.java.source): " + JavaVersionImpl.MAX_SUPPORTED + - ", preview features enabled (sonar.java.enablePreview): true"); - }*/ - @Test void test_java_version_automatically_disables_enablePreview_flag_when_version_is_less_than_maximum_version() throws IOException { MapSettings settings = new MapSettings(); @@ -397,8 +384,7 @@ void test_java_version_automatically_disables_enablePreview_flag_when_version_is executeJavaSensorForPerformanceMeasure(settings, workDir); assertThat(logTester.logs(Level.WARN)).contains( "sonar.java.enablePreview is set but will be discarded as the Java version is less than the max supported version (" + - version + " < " + JavaVersionImpl.MAX_SUPPORTED + ")" - ); + version + " < " + JavaVersionImpl.MAX_SUPPORTED + ")"); List infoLogs = logTester.logs(Level.INFO); assertThat(infoLogs).contains("Configured Java source version (sonar.java.source): " + version + ", preview features enabled (sonar.java.enablePreview): false"); @@ -412,8 +398,7 @@ void getJavaVersion_does_not_try_to_check_consistency_when_sonar_java_source_is_ Path workDir = tmp.newFolder().toPath(); executeJavaSensorForPerformanceMeasure(settings, workDir); assertThat(logTester.logs(Level.WARN)).noneMatch( - log -> log.startsWith("sonar.java.enablePreview is set but will be discarded as the Java version is less than the max supported version") - ); + log -> log.startsWith("sonar.java.enablePreview is set but will be discarded as the Java version is less than the max supported version")); List infoLogs = logTester.logs(Level.INFO); assertThat(infoLogs).noneMatch(log -> log.startsWith("Configured Java source version (sonar.java.source):")); } @@ -429,15 +414,12 @@ void do_not_filter_checks_when_no_autoscan() throws IOException { "CustomRepository:CustomMainCheck", "CustomRepository:CustomJspCheck", "CustomRepository:CustomTestCheck", - // not in SonarWay (FileHeaderCheck) - "java:S1451", // main check in SonarWay (DefaultPackageCheck) "java:S1220", // main check in SonarWay, not supported by autoscan (CombineCatchCheck) "java:S2147", // test check in SonarWay (NoTestInTestClassCheck) - "java:S2187" - ); + "java:S2187"); } @Test @@ -451,16 +433,15 @@ void filter_checks_when_autoscan_true() throws IOException { // main check in SonarWay "java:S1220", // test check in SonarWay - "java:S2187" - ).doesNotContain( - "CustomRepository:CustomMainCheck", - "CustomRepository:CustomJspCheck", - "CustomRepository:CustomTestCheck", - // main check in SonarWay, not supported by autoscan (CombineCatchCheck) - "java:S2147", - // not in SonarWay (FileHeaderCheck) - "java:S1451" - ); + "java:S2187") + .doesNotContain( + "CustomRepository:CustomMainCheck", + "CustomRepository:CustomJspCheck", + "CustomRepository:CustomTestCheck", + // main check in SonarWay, not supported by autoscan (CombineCatchCheck) + "java:S2147", + // not in SonarWay (FileHeaderCheck) + "java:S1451"); } @Test