From 31cd07cef6c84202ad9b0c0cf6c315231763149c Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 15 Aug 2024 15:43:11 +0200 Subject: [PATCH] Java: avoid exceptions on bad javadoc html (IJ-CR-142291) GitOrigin-RevId: 40fe350fab9354863141929cd135a5f2d0393fc2 --- ...umentationCommentsMigrationInspection.java | 6 ++++-- ...nDocumentationCommentsMigration.after.java | 15 ++++++++++++++- ...arkdownDocumentationCommentsMigration.java | 19 ++++++++++++++++++- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/java/java-analysis-impl/src/com/siyeh/ig/migration/MarkdownDocumentationCommentsMigrationInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/migration/MarkdownDocumentationCommentsMigrationInspection.java index f1f23b6ddff8..75eebfcf74a1 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/migration/MarkdownDocumentationCommentsMigrationInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/migration/MarkdownDocumentationCommentsMigrationInspection.java @@ -153,13 +153,15 @@ final class MarkdownDocumentationCommentsMigrationInspection extends BaseInspect continue; } else if (c == '>') { - String name = html.substring(tag + (endTag ? 2 : 1), (html.charAt(i-1) == '/') ? i - 1 : i).trim().toLowerCase(Locale.ENGLISH); + int start = tag + (endTag ? 2 : 1); + int end = (!endTag && html.charAt(i - 1) == '/') ? i - 1 : i; + String name = html.substring(start, end).trim().toLowerCase(Locale.ENGLISH); if ("li".equals(name)) { if (endTag) { inList = false; } else { - if (" ".equals(result.substring(result.length() - 4))) { + if (result.length() > 4 && " ".equals(result.substring(result.length() - 4))) { result.delete(result.length() - 4, result.length()); } result.append(" - "); diff --git a/java/java-tests/testData/ig/com/siyeh/igtest/migration/markdown_documentation_comments_migration/MarkdownDocumentationCommentsMigration.after.java b/java/java-tests/testData/ig/com/siyeh/igtest/migration/markdown_documentation_comments_migration/MarkdownDocumentationCommentsMigration.after.java index a2f5dbd34eaa..2bf048edec95 100644 --- a/java/java-tests/testData/ig/com/siyeh/igtest/migration/markdown_documentation_comments_migration/MarkdownDocumentationCommentsMigration.after.java +++ b/java/java-tests/testData/ig/com/siyeh/igtest/migration/markdown_documentation_comments_migration/MarkdownDocumentationCommentsMigration.after.java @@ -347,4 +347,17 @@ interface Nothing {} /// If **at least** one element has priority, elements would be prioritized. No priority will be used otherwise /// /// @author Ilya.Kazakevich -final class LookupWithIndentsBuilder {} \ No newline at end of file +final class LookupWithIndentsBuilder { + + /// # + /// Returns a hash code value for the object. This method is + /// supported for the benefit of hash tables such as those provided by + /// [java.util.HashMap]. + public int hashCode() { + return 1; + } + + /// - one + /// - two + void x() {} +} diff --git a/java/java-tests/testData/ig/com/siyeh/igtest/migration/markdown_documentation_comments_migration/MarkdownDocumentationCommentsMigration.java b/java/java-tests/testData/ig/com/siyeh/igtest/migration/markdown_documentation_comments_migration/MarkdownDocumentationCommentsMigration.java index f146ed9606cb..d3c9bede8076 100644 --- a/java/java-tests/testData/ig/com/siyeh/igtest/migration/markdown_documentation_comments_migration/MarkdownDocumentationCommentsMigration.java +++ b/java/java-tests/testData/ig/com/siyeh/igtest/migration/markdown_documentation_comments_migration/MarkdownDocumentationCommentsMigration.java @@ -363,4 +363,21 @@ interface Nothing {} * * @author Ilya.Kazakevich */ -final class LookupWithIndentsBuilder {} \ No newline at end of file +final class LookupWithIndentsBuilder { + + /** + *

+ * Returns a hash code value for the object. This method is + * supported for the benefit of hash tables such as those provided by + * {@link java.util.HashMap}. + */ + public int hashCode() { + return 1; + } + + /** + *
  • one
  • + *
  • two
  • + */ + void x() {} +}