From 7e254695f8c495e47cb68d848d9090ddb6a490f2 Mon Sep 17 00:00:00 2001 From: Kurt Alfred Kluever Date: Thu, 2 Jul 2026 07:39:19 -0700 Subject: [PATCH] Ignore Markdown Javadoc in `UnescapedEntity` check. Instead of trying to parse complex Markdown structures to avoid false positives for unescaped entities, this change proposes to simply ignore Markdown Javadoc (`///`) comments entirely for this check. This is a simpler workaround for b/530215233. PiperOrigin-RevId: 941694985 --- .../bugpatterns/javadoc/UnescapedEntity.java | 7 ++++++- .../javadoc/UnescapedEntityTest.java | 18 ++---------------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/core/src/main/java/com/google/errorprone/bugpatterns/javadoc/UnescapedEntity.java b/core/src/main/java/com/google/errorprone/bugpatterns/javadoc/UnescapedEntity.java index 9d7b3c0f129..367ccc00d5c 100644 --- a/core/src/main/java/com/google/errorprone/bugpatterns/javadoc/UnescapedEntity.java +++ b/core/src/main/java/com/google/errorprone/bugpatterns/javadoc/UnescapedEntity.java @@ -36,6 +36,7 @@ import com.google.errorprone.bugpatterns.BugChecker.VariableTreeMatcher; import com.google.errorprone.fixes.SuggestedFix; import com.google.errorprone.matchers.Description; +import com.google.errorprone.util.ErrorProneComment.ErrorProneCommentStyle; import com.sun.source.doctree.DocTree; import com.sun.source.doctree.EndElementTree; import com.sun.source.doctree.ErroneousTree; @@ -109,9 +110,13 @@ private Description handle(@Nullable DocTreePath path, VisitorState state) { if (path == null) { return NO_MATCH; } + Comment comment = ((DCDocComment) path.getDocComment()).comment; + if (ErrorProneCommentStyle.from(comment.getStyle()) == ErrorProneCommentStyle.JAVADOC_LINE) { + // TODO(b/530215233): Add support for Markdown Javadocs + return NO_MATCH; + } RangesFinder rangesFinder = new RangesFinder(state); rangesFinder.scan(path, null); - Comment comment = ((DCDocComment) path.getDocComment()).comment; Matcher matcher = GENERIC_PATTERN.matcher(comment.getText()); RangeSet generics = TreeRangeSet.create(); while (matcher.find()) { diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/javadoc/UnescapedEntityTest.java b/core/src/test/java/com/google/errorprone/bugpatterns/javadoc/UnescapedEntityTest.java index 4e0fd3d24a3..2ed5b308473 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/javadoc/UnescapedEntityTest.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/javadoc/UnescapedEntityTest.java @@ -353,7 +353,6 @@ interface Test {} @Test public void markdownJavadoc() { assume().that(Runtime.version().feature()).isAtLeast(23); // Markdown Javadoc is JDK 23+ - // TODO(b/530215233): This should be unchanged. refactoring .addInputLines( "Test.java", @@ -361,19 +360,13 @@ public void markdownJavadoc() { /// A command-line flag that parses arguments into a byte size represented as a `Flag`. interface Test {} """) - .addOutputLines( - "Test.java", - """ - /// A command-line flag that parses arguments into a byte size represented as a `{@code Flag}`. - interface Test {} - """) + .expectUnchanged() .doTest(); } @Test public void markdownJavadocCodeBlock() { assume().that(Runtime.version().feature()).isAtLeast(23); // Markdown Javadoc is JDK 23+ - // TODO(b/530215233): This should be unchanged. refactoring .addInputLines( "Test.java", @@ -383,14 +376,7 @@ public void markdownJavadocCodeBlock() { /// ``` interface Test {} """) - .addOutputLines( - "Test.java", - """ - /// ```java - /// {@code List} list; - /// ``` - interface Test {} - """) + .expectUnchanged() .doTest(); } }