From 210e8ff41584e06c98cc0295af2453d32034da82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christophe=20Z=C3=BCrn?= <36889251+christophe-zurn-sonarsource@users.noreply.github.com> Date: Mon, 5 Dec 2022 15:37:54 +0100 Subject: [PATCH] Update parent pom and pre-release cleanup (#234) --- pom.xml | 2 +- .../java/org/sonar/plugins/html/HtmlPlugin.java | 4 +--- .../comments/AvoidCommentedOutCodeCheck.java | 9 ++++----- .../sonar/DeprecatedAttributesInHtml5Check.java | 4 +--- .../IndistinguishableSimilarElementsCheck.java | 3 +-- .../html/checks/sonar/InputWithoutLabelCheck.java | 2 +- .../html/checks/sonar/LinkToImageCheck.java | 4 +--- .../checks/sonar/UnsupportedTagsInHtml5Check.java | 6 ++---- .../plugins/html/checks/sonar/VideoTrackCheck.java | 6 ++---- .../sonar/plugins/html/lex/ElementTokenizer.java | 6 ++---- .../org/sonar/plugins/html/rules/CheckClasses.java | 3 +-- .../org/sonar/plugins/html/checks/TestHelper.java | 4 ++-- .../scripting/UnifiedExpressionCheckTest.java | 8 ++++---- .../html/lex/NormalElementTokenizerTest.java | 14 ++++++++------ .../org/sonar/plugins/html/node/TagNodeTest.java | 1 + .../org/sonar/plugins/html/node/TextNodeTest.java | 1 + .../resources/checks/UnifiedExpressionCheck.jsp | 1 + 17 files changed, 34 insertions(+), 44 deletions(-) diff --git a/pom.xml b/pom.xml index 92a861b92..4fb9aee3d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.sonarsource.parent parent - 60.0.52 + 64.0.211 org.sonarsource.html diff --git a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/HtmlPlugin.java b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/HtmlPlugin.java index 2ad07bc3f..1973fe340 100644 --- a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/HtmlPlugin.java +++ b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/HtmlPlugin.java @@ -17,7 +17,6 @@ */ package org.sonar.plugins.html; -import java.util.Arrays; import java.util.List; import org.sonar.api.Plugin; import org.sonar.api.config.PropertyDefinition; @@ -62,8 +61,7 @@ public void define(Context context) { } private static List pluginProperties() { - return Arrays.asList( - + return List.of( PropertyDefinition.builder(HtmlConstants.FILE_EXTENSIONS_PROP_KEY) .name("HTML File suffixes") .description("List of file suffixes that will be scanned.") diff --git a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/comments/AvoidCommentedOutCodeCheck.java b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/comments/AvoidCommentedOutCodeCheck.java index bc17548b9..a356578cf 100644 --- a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/comments/AvoidCommentedOutCodeCheck.java +++ b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/comments/AvoidCommentedOutCodeCheck.java @@ -17,9 +17,8 @@ */ package org.sonar.plugins.html.checks.comments; -import java.util.Arrays; -import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.regex.Pattern; import org.sonar.check.Rule; import org.sonar.plugins.html.checks.AbstractPageCheck; @@ -35,14 +34,14 @@ public class AvoidCommentedOutCodeCheck extends AbstractPageCheck { private static final Pattern COPYRIGHT_CASE_INSENSITIVE = Pattern.compile("copyright", Pattern.CASE_INSENSITIVE); private static final double THRESHOLD = 0.9; - private static final LanguageFootprint LANGUAGE_FOOTPRINT = () -> new HashSet<>(Arrays.asList( + private static final LanguageFootprint LANGUAGE_FOOTPRINT = () -> Set.of( new ContainsDetector(0.7, "=\"", "='"), new ContainsDetector(0.8, "/>", ""), - new EndWithDetector(0.9, '>'))); + new EndWithDetector(0.9, '>')); private static final CodeRecognizer CODE_RECOGNIZER = new CodeRecognizer(THRESHOLD, LANGUAGE_FOOTPRINT); - private static final List IGNORED_COMMENT_ANNOTATIONS = Arrays.asList("@thymesVar", "@elvariable"); + private static final List IGNORED_COMMENT_ANNOTATIONS = List.of("@thymesVar", "@elvariable"); @Override public void comment(CommentNode node) { diff --git a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/DeprecatedAttributesInHtml5Check.java b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/DeprecatedAttributesInHtml5Check.java index f034d1e80..245ec7157 100644 --- a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/DeprecatedAttributesInHtml5Check.java +++ b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/DeprecatedAttributesInHtml5Check.java @@ -17,9 +17,7 @@ */ package org.sonar.plugins.html.checks.sonar; -import java.util.Arrays; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; @@ -111,7 +109,7 @@ public class DeprecatedAttributesInHtml5Check extends AbstractPageCheck { } private static void put(String key, String... values) { - DEPRECATED.put(key, new HashSet<>(Arrays.asList(values))); + DEPRECATED.put(key, Set.of(values)); } @Override diff --git a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/IndistinguishableSimilarElementsCheck.java b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/IndistinguishableSimilarElementsCheck.java index 2de5e835e..7c2b3fcd3 100644 --- a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/IndistinguishableSimilarElementsCheck.java +++ b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/IndistinguishableSimilarElementsCheck.java @@ -17,7 +17,6 @@ */ package org.sonar.plugins.html.checks.sonar; -import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.Locale; @@ -32,7 +31,7 @@ @Rule(key = "S5255") public class IndistinguishableSimilarElementsCheck extends AbstractPageCheck { - private static final List LANDMARK_ROLES = Arrays.asList( + private static final List LANDMARK_ROLES = List.of( "BANNER", "COMPLEMENTARY", "CONTENTINFO", "FORM", "MAIN", "NAVIGATION", "SEARCH", "APPLICATION" ); diff --git a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/InputWithoutLabelCheck.java b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/InputWithoutLabelCheck.java index 80f8e3a07..a29d82c0b 100644 --- a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/InputWithoutLabelCheck.java +++ b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/InputWithoutLabelCheck.java @@ -36,7 +36,7 @@ @Rule(key = "InputWithoutLabelCheck") public class InputWithoutLabelCheck extends AbstractPageCheck { - private static final Set EXCLUDED_TYPES = new HashSet<>(Arrays.asList("SUBMIT", "BUTTON", "IMAGE", "HIDDEN")); + private static final Set EXCLUDED_TYPES = Set.of("SUBMIT", "BUTTON", "IMAGE", "HIDDEN"); private final Set labelFor = new HashSet<>(); private final Map inputIdToNode = new HashMap<>(); diff --git a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/LinkToImageCheck.java b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/LinkToImageCheck.java index 1bf927e5e..7757ca08c 100644 --- a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/LinkToImageCheck.java +++ b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/LinkToImageCheck.java @@ -17,8 +17,6 @@ */ package org.sonar.plugins.html.checks.sonar; -import java.util.Arrays; -import java.util.HashSet; import java.util.Locale; import java.util.Set; import org.sonar.check.Rule; @@ -28,7 +26,7 @@ @Rule(key = "LinkToImageCheck") public class LinkToImageCheck extends AbstractPageCheck { - private static final Set IMG_SUFFIXES = new HashSet<>(Arrays.asList(".GIF", ".JPG", ".JPEG", ".PNG", ".BMP")); + private static final Set IMG_SUFFIXES = Set.of(".GIF", ".JPG", ".JPEG", ".PNG", ".BMP"); @Override public void startElement(TagNode node) { diff --git a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/UnsupportedTagsInHtml5Check.java b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/UnsupportedTagsInHtml5Check.java index a9c48d56f..0e7f45fee 100644 --- a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/UnsupportedTagsInHtml5Check.java +++ b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/UnsupportedTagsInHtml5Check.java @@ -17,8 +17,6 @@ */ package org.sonar.plugins.html.checks.sonar; -import java.util.Arrays; -import java.util.HashSet; import java.util.Locale; import java.util.Set; import org.sonar.check.Rule; @@ -29,7 +27,7 @@ @Rule(key = "UnsupportedTagsInHtml5Check") public class UnsupportedTagsInHtml5Check extends AbstractPageCheck { - private static final Set UNSUPPORTED_TAGS = new HashSet<>(Arrays.asList( + private static final Set UNSUPPORTED_TAGS = Set.of( "ACRONYM", "APPLET", "BASEFONT", @@ -54,7 +52,7 @@ public class UnsupportedTagsInHtml5Check extends AbstractPageCheck { "SPACER", "STRIKE", "TT", - "XMP")); + "XMP"); @Override public void startElement(TagNode node) { diff --git a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/VideoTrackCheck.java b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/VideoTrackCheck.java index fe89632df..5b7d00250 100644 --- a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/VideoTrackCheck.java +++ b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/checks/sonar/VideoTrackCheck.java @@ -17,8 +17,6 @@ */ package org.sonar.plugins.html.checks.sonar; -import java.util.Arrays; -import java.util.HashSet; import java.util.Set; import org.sonar.check.Rule; import org.sonar.plugins.html.checks.AbstractPageCheck; @@ -27,11 +25,11 @@ @Rule(key = "S4084") public class VideoTrackCheck extends AbstractPageCheck { - private static final Set ACCESSIBILITY_TRACK_KINDS = new HashSet<>(Arrays.asList( + private static final Set ACCESSIBILITY_TRACK_KINDS = Set.of( "captions", "descriptions", "subtitles" - )); + ); @Override public void startElement(TagNode node) { diff --git a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/lex/ElementTokenizer.java b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/lex/ElementTokenizer.java index b815546f5..f9fc820b1 100644 --- a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/lex/ElementTokenizer.java +++ b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/lex/ElementTokenizer.java @@ -18,9 +18,7 @@ package org.sonar.plugins.html.lex; import java.util.ArrayDeque; -import java.util.Arrays; import java.util.Deque; -import java.util.HashSet; import java.util.List; import java.util.Set; import org.sonar.plugins.html.node.Attribute; @@ -198,14 +196,14 @@ public boolean match(int character) { } private static final class EndUnquotedAttributeMatcher implements EndMatcher { - private static final Set FORBIDDEN = new HashSet<>(Arrays.asList( + private static final Set FORBIDDEN = Set.of( '"', '\'', '=', '<', '>', '`' - )); + ); @Override public boolean match(int character) { diff --git a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/rules/CheckClasses.java b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/rules/CheckClasses.java index a6a702e9e..cef198cbc 100644 --- a/sonar-html-plugin/src/main/java/org/sonar/plugins/html/rules/CheckClasses.java +++ b/sonar-html-plugin/src/main/java/org/sonar/plugins/html/rules/CheckClasses.java @@ -17,7 +17,6 @@ */ package org.sonar.plugins.html.rules; -import java.util.Arrays; import java.util.List; import org.sonar.plugins.html.checks.attributes.IllegalAttributeCheck; import org.sonar.plugins.html.checks.attributes.RequiredAttributeCheck; @@ -87,7 +86,7 @@ public final class CheckClasses { - private static final List> CLASSES = Arrays.asList( + private static final List> CLASSES = List.of( AbsoluteURICheck.class, AvoidHtmlCommentCheck.class, ChildElementRequiredCheck.class, diff --git a/sonar-html-plugin/src/test/java/org/sonar/plugins/html/checks/TestHelper.java b/sonar-html-plugin/src/test/java/org/sonar/plugins/html/checks/TestHelper.java index 3ee1b9589..97159f022 100644 --- a/sonar-html-plugin/src/test/java/org/sonar/plugins/html/checks/TestHelper.java +++ b/sonar-html-plugin/src/test/java/org/sonar/plugins/html/checks/TestHelper.java @@ -21,7 +21,7 @@ import java.io.FileNotFoundException; import java.io.FileReader; import java.nio.charset.StandardCharsets; -import java.util.Arrays; +import java.util.List; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.plugins.html.analyzers.ComplexityVisitor; @@ -55,7 +55,7 @@ public static HtmlSourceCode scan(File file, DefaultNodeVisitor visitor) { .build() ); - HtmlAstScanner walker = new HtmlAstScanner(Arrays.asList(new PageCountLines(), new ComplexityVisitor())); + HtmlAstScanner walker = new HtmlAstScanner(List.of(new PageCountLines(), new ComplexityVisitor())); PageLexer lexer = file.getName().endsWith(".vue") ? new VueLexer() : new PageLexer(); walker.addVisitor(visitor); walker.scan( diff --git a/sonar-html-plugin/src/test/java/org/sonar/plugins/html/checks/scripting/UnifiedExpressionCheckTest.java b/sonar-html-plugin/src/test/java/org/sonar/plugins/html/checks/scripting/UnifiedExpressionCheckTest.java index c0480086a..aa897acfb 100644 --- a/sonar-html-plugin/src/test/java/org/sonar/plugins/html/checks/scripting/UnifiedExpressionCheckTest.java +++ b/sonar-html-plugin/src/test/java/org/sonar/plugins/html/checks/scripting/UnifiedExpressionCheckTest.java @@ -46,8 +46,8 @@ public void custom() { checkMessagesVerifier.verify(sourceCode.getIssues()) .next().atLine(2).withMessage("Fix this expression: Unknown function \"myMethod1\".") - .next().atLine(5).withMessage("Fix this expression: Error Parsing: ${}") - .next().atLine(9).withMessage("Fix this expression: Error Parsing: ${{'one':1,}"); + .next().atLine(6).withMessage("Fix this expression: Error Parsing: ${}") + .next().atLine(10).withMessage("Fix this expression: Error Parsing: ${{'one':1,}"); } @Test @@ -58,8 +58,8 @@ public void should_not_detect_unknown_functions_with_empty_list() { HtmlSourceCode sourceCode = TestHelper.scan(new File("src/test/resources/checks/UnifiedExpressionCheck.jsp"), check); checkMessagesVerifier.verify(sourceCode.getIssues()) - .next().atLine(5) - .next().atLine(9); + .next().atLine(6) + .next().atLine(10); } } diff --git a/sonar-html-plugin/src/test/java/org/sonar/plugins/html/lex/NormalElementTokenizerTest.java b/sonar-html-plugin/src/test/java/org/sonar/plugins/html/lex/NormalElementTokenizerTest.java index 956541065..b47cbac85 100644 --- a/sonar-html-plugin/src/test/java/org/sonar/plugins/html/lex/NormalElementTokenizerTest.java +++ b/sonar-html-plugin/src/test/java/org/sonar/plugins/html/lex/NormalElementTokenizerTest.java @@ -99,22 +99,24 @@ public void is_valid_surrogate_pair_name_start_char() { * Helper test method: returns true if all invocations to {@link NormalElementTokenizer#isValidSingleCharCodeNameStartChar} returns true for the given character range. */ private static boolean isValidRangeForFirstCharacter(char startInclusive, char endInclusive) { - boolean allValid = true; for (int i = startInclusive; i <= endInclusive; i++) { - allValid = allValid && isValidSingleCharCodeNameStartChar((char) i); + if (!isValidSingleCharCodeNameStartChar((char) i)) { + return false; + } } - return allValid; + return true; } /** * Helper test method: returns true if all invocations to {@link NormalElementTokenizer#isValidSingleCharCodeNameStartChar} returns false for the given character range. */ private static boolean isInvalidRangeForFirstCharacter(char startInclusive, char endInclusive) { - boolean allInvalid = true; for (int i = startInclusive; i <= endInclusive; i++) { - allInvalid = allInvalid && !isValidSingleCharCodeNameStartChar((char) i); + if (isValidSingleCharCodeNameStartChar((char) i)) { + return false; + } } - return allInvalid; + return true; } } diff --git a/sonar-html-plugin/src/test/java/org/sonar/plugins/html/node/TagNodeTest.java b/sonar-html-plugin/src/test/java/org/sonar/plugins/html/node/TagNodeTest.java index 78c0d6f79..8871b2d4d 100644 --- a/sonar-html-plugin/src/test/java/org/sonar/plugins/html/node/TagNodeTest.java +++ b/sonar-html-plugin/src/test/java/org/sonar/plugins/html/node/TagNodeTest.java @@ -49,6 +49,7 @@ public void property() { assertThat(node.getAttribute("attr.name4")).isEqualTo("value4"); assertThat(node.getPropertyValue("attr.name4")).isEqualTo("value4"); assertThat(node.hasProperty("attr.name4")).isTrue(); + assertThat(node.hasProperty("name4")).isTrue(); assertThat(node.getAttribute("name3")).isNull(); assertThat(node.getPropertyValue("name3")).isEqualTo("value3"); diff --git a/sonar-html-plugin/src/test/java/org/sonar/plugins/html/node/TextNodeTest.java b/sonar-html-plugin/src/test/java/org/sonar/plugins/html/node/TextNodeTest.java index 93d47d26f..ab823520b 100644 --- a/sonar-html-plugin/src/test/java/org/sonar/plugins/html/node/TextNodeTest.java +++ b/sonar-html-plugin/src/test/java/org/sonar/plugins/html/node/TextNodeTest.java @@ -28,6 +28,7 @@ public void emptyTextNode() { TextNode textNode = new TextNode(); assertThat(textNode.isBlank()).isTrue(); assertThat(textNode.getCode()).isEmpty(); + assertThat(textNode.toString()).isEmpty(); } } diff --git a/sonar-html-plugin/src/test/resources/checks/UnifiedExpressionCheck.jsp b/sonar-html-plugin/src/test/resources/checks/UnifiedExpressionCheck.jsp index 547989b67..340900a06 100644 --- a/sonar-html-plugin/src/test/resources/checks/UnifiedExpressionCheck.jsp +++ b/sonar-html-plugin/src/test/resources/checks/UnifiedExpressionCheck.jsp @@ -1,6 +1,7 @@ +