diff --git a/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/Class4.java b/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/Class4.java new file mode 100644 index 00000000000..ccc88d466cc --- /dev/null +++ b/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/Class4.java @@ -0,0 +1,7 @@ + +package checks.FileHeaderCheck; + +public class Class4 { +} +// Compliant + diff --git a/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/Class5.java b/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/Class5.java new file mode 100644 index 00000000000..33df8514723 --- /dev/null +++ b/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/Class5.java @@ -0,0 +1,5 @@ +package checks.FileHeaderCheck; + +public class Class5 { +} +// Compliant diff --git a/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/Regex5.java b/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/Regex5.java new file mode 100644 index 00000000000..470b095a858 --- /dev/null +++ b/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/Regex5.java @@ -0,0 +1,6 @@ + +package checks.FileHeaderCheck; + +public class Regex5 { +} +// Compliant diff --git a/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/Regex6.java b/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/Regex6.java new file mode 100644 index 00000000000..e61c9a45031 --- /dev/null +++ b/java-checks-test-sources/default/src/main/java/checks/FileHeaderCheck/Regex6.java @@ -0,0 +1,5 @@ +package checks.FileHeaderCheck; + +public class Regex6 { +} +// 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..49d6062803a 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 @@ -58,16 +58,21 @@ public List nodesToVisit() { @Override public void setContext(JavaFileScannerContext context) { super.context = context; - if (isRegularExpression) { - if (searchPattern == null) { - try { - searchPattern = Pattern.compile(getHeaderFormat(), Pattern.DOTALL); - } catch (IllegalArgumentException e) { - throw new IllegalArgumentException("[" + getClass().getSimpleName() + "] Unable to compile the regular expression: " + headerFormat, e); + if (headerFormat.isEmpty()) { + expectedLines = new String[]{}; + isRegularExpression = false; + } else { + if (isRegularExpression) { + if (searchPattern == null) { + try { + searchPattern = Pattern.compile(getHeaderFormat(), Pattern.DOTALL); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException("[" + getClass().getSimpleName() + "] Unable to compile the regular expression: " + headerFormat, e); + } } + } else { + expectedLines = headerFormat.split("(?:\r)?\n|\r"); } - } else { - expectedLines = headerFormat.split("(?:\r)?\n|\r"); } visitFile(); } @@ -114,7 +119,6 @@ private static boolean matches(String[] expectedLines, List lines) { } else { result = false; } - return result; } 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..ea34652c6fd 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/Class4.java")) + .withCheck(check) + .verifyNoIssues(); + + check = new FileHeaderCheck(); + CheckVerifier.newVerifier() + .onFile(mainCodeSourcesPath("checks/FileHeaderCheck/Class5.java")) + .withCheck(check) + .verifyNoIssues(); } @Test @@ -139,6 +151,20 @@ void regex() { .onFile(mainCodeSourcesPath("checks/FileHeaderCheck/Regex4.java")) .withCheck(check) .verifyIssues(); + + check = new FileHeaderCheck(); + check.isRegularExpression = true; + CheckVerifier.newVerifier() + .onFile(mainCodeSourcesPath("checks/FileHeaderCheck/Regex5.java")) + .withCheck(check) + .verifyNoIssues(); + + check = new FileHeaderCheck(); + check.isRegularExpression = true; + CheckVerifier.newVerifier() + .onFile(mainCodeSourcesPath("checks/FileHeaderCheck/Regex6.java")) + .withCheck(check) + .verifyNoIssues(); } @Test