tweak(JavaDoc): Disable some inspections on older javadoc

Some inspections are pointless to check, related to javadoc tags.

GitOrigin-RevId: b7bb8bba4b51f1d90678705af3da8e5e5c4a4907
This commit is contained in:
Mathias Boulay
2024-09-02 15:32:44 +02:00
committed by intellij-monorepo-bot
parent b3d3481ecb
commit d4e45d6061
5 changed files with 33 additions and 5 deletions

View File

@@ -127,7 +127,7 @@ public final class DanglingJavadocInspection extends BaseInspection {
@Override
public void visitDocComment(@NotNull PsiDocComment comment) {
super.visitDocComment(comment);
if (JavaDocUtil.isDanglingDocComment(comment, ignoreCopyright)) {
if (JavaDocUtil.shouldRunInspectionOnOldMarkdownComment(comment) && JavaDocUtil.isDanglingDocComment(comment, ignoreCopyright)) {
registerError(comment.getFirstChild(), comment.isMarkdownComment());
}
}

View File

@@ -1,7 +1,11 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.siyeh.ig.javadoc;
import com.intellij.codeInspection.*;
import com.intellij.codeInsight.javadoc.JavaDocUtil;
import com.intellij.codeInspection.CleanupLocalInspectionTool;
import com.intellij.codeInspection.CommonQuickFixBundle;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.modcommand.ModCommand;
import com.intellij.modcommand.ModCommandQuickFix;
import com.intellij.openapi.editor.Document;
@@ -104,7 +108,7 @@ public final class HtmlTagCanBeJavadocTagInspection extends BaseInspection imple
public void visitDocToken(@NotNull PsiDocToken token) {
super.visitDocToken(token);
final IElementType tokenType = token.getTokenType();
if (!JavaDocTokenType.DOC_COMMENT_DATA.equals(tokenType)) {
if (!JavaDocTokenType.DOC_COMMENT_DATA.equals(tokenType) || !JavaDocUtil.shouldRunInspectionOnOldMarkdownComment(token)) {
return;
}
@NonNls final String text = token.getText();

View File

@@ -15,6 +15,7 @@
*/
package com.siyeh.ig.javadoc;
import com.intellij.codeInsight.javadoc.JavaDocUtil;
import com.intellij.codeInspection.CleanupLocalInspectionTool;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.options.OptPane;
@@ -226,7 +227,7 @@ final class MissingDeprecatedAnnotationInspection extends BaseInspection impleme
private static boolean hasDeprecatedComment(PsiJavaDocumentedElement documentedElement, boolean checkContent) {
final PsiDocComment comment = documentedElement.getDocComment();
if (comment == null) {
if (comment == null || !JavaDocUtil.shouldRunInspectionOnOldMarkdownComment(comment)) {
return false;
}
final PsiDocTag deprecatedTag = comment.findTagByName("deprecated");

View File

@@ -6,6 +6,7 @@ import com.intellij.openapi.project.IndexNotReadyException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.NlsSafe;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaFileCodeStyleFacade;
import com.intellij.psi.impl.source.javadoc.PsiDocMethodOrFieldRef;
@@ -16,6 +17,8 @@ import com.intellij.psi.templateLanguages.TemplateLanguageUtil;
import com.intellij.psi.util.*;
import com.intellij.util.ArrayUtil;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.ObjectUtils;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -434,4 +437,24 @@ public final class JavaDocUtil {
}
return true;
}
/**
* @return Whether the inspections should be run for the given comment
* Markdown format is allowed for java < 23. However, due to old (sometimes generated) code starting with 3 slashes,
* we should not run the inspections on dangling comments.
*/
@Contract("null -> false")
public static boolean shouldRunInspectionOnOldMarkdownComment(@Nullable PsiDocComment comment) {
if (comment == null) return false;
if (!comment.isMarkdownComment()) return true;
PsiJavaFile file = ObjectUtils.tryCast(comment.getContainingFile(), PsiJavaFile.class);
if (file == null) return false;
if (file.getLanguageLevel().isAtLeast(LanguageLevel.JDK_23)) return true;
return !isDanglingDocComment(comment, true);
}
public static boolean shouldRunInspectionOnOldMarkdownComment(@NotNull PsiElement element) {
return shouldRunInspectionOnOldMarkdownComment(PsiTreeUtil.getParentOfType(element, PsiDocComment.class, false, PsiMember.class));
}
}

View File

@@ -14,7 +14,7 @@ public class DanglingJavadocInspectionTest extends LightJavaInspectionTestCase {
@NotNull
@Override
protected LightProjectDescriptor getProjectDescriptor() {
return JAVA_9;
return JAVA_23;
}
public void testDanglingJavadoc() {