mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Java: cleanup
GitOrigin-RevId: a8daaa353e0db7cc87c74955c60cdd7aac2ced0e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
44eeff4813
commit
be1496bc7a
+72
-79
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.codeInspection.javaDoc;
|
||||
|
||||
import com.intellij.codeInsight.intention.impl.AddJavadocIntention;
|
||||
@@ -158,7 +158,7 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
};
|
||||
}
|
||||
|
||||
private void checkFile(PsiJavaFile file, ProblemsHolder delegate, boolean isOnTheFly) {
|
||||
private void checkFile(PsiJavaFile file, ProblemsHolder holder, boolean isOnTheFly) {
|
||||
PsiPackage pkg = JavaDirectoryService.getInstance().getPackage(file.getContainingDirectory());
|
||||
if (pkg == null) return;
|
||||
|
||||
@@ -169,15 +169,15 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
if (!isJavadocRequired(PACKAGE_SETTINGS, pkg)) return;
|
||||
|
||||
if (docComment != null) {
|
||||
checkRequiredTags(docComment.getTags(), PACKAGE_SETTINGS, docComment.getFirstChild(), delegate);
|
||||
checkRequiredTags(docComment.getTags(), PACKAGE_SETTINGS, docComment.getFirstChild(), holder);
|
||||
}
|
||||
else {
|
||||
PsiElement toHighlight = notNull(file.getPackageStatement(), file);
|
||||
reportMissingJavadoc(toHighlight, delegate, isOnTheFly);
|
||||
reportMissingJavadoc(toHighlight, holder, isOnTheFly);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkModule(PsiJavaModule module, ProblemsHolder delegate, boolean isOnTheFly) {
|
||||
private void checkModule(PsiJavaModule module, ProblemsHolder holder, boolean isOnTheFly) {
|
||||
PsiDocComment docComment = module.getDocComment();
|
||||
if (IGNORE_DEPRECATED_ELEMENTS && isDeprecated(module, docComment)) {
|
||||
return;
|
||||
@@ -185,14 +185,14 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
if (!isJavadocRequired(MODULE_SETTINGS, module)) return;
|
||||
|
||||
if (docComment != null) {
|
||||
checkRequiredTags(docComment.getTags(), MODULE_SETTINGS, docComment.getFirstChild(), delegate);
|
||||
checkRequiredTags(docComment.getTags(), MODULE_SETTINGS, docComment.getFirstChild(), holder);
|
||||
}
|
||||
else {
|
||||
reportMissingJavadoc(module.getNameIdentifier(), delegate, isOnTheFly);
|
||||
reportMissingJavadoc(module.getNameIdentifier(), holder, isOnTheFly);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkClass(PsiClass aClass, ProblemsHolder delegate, boolean isOnTheFly) {
|
||||
private void checkClass(PsiClass aClass, ProblemsHolder holder, boolean isOnTheFly) {
|
||||
if (aClass instanceof PsiAnonymousClass || aClass instanceof PsiSyntheticClass || aClass instanceof PsiTypeParameter) {
|
||||
return;
|
||||
}
|
||||
@@ -206,19 +206,19 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
if (docComment != null) {
|
||||
PsiDocTag[] tags = docComment.getTags();
|
||||
|
||||
checkRequiredTags(tags, options, docComment.getFirstChild(), delegate);
|
||||
checkRequiredTags(tags, options, docComment.getFirstChild(), holder);
|
||||
|
||||
if (options.isTagRequired("param")) {
|
||||
checkMissingTypeParamTags(aClass, tags, docComment.getFirstChild(), delegate);
|
||||
checkMissingTypeParamTags(aClass, tags, docComment.getFirstChild(), holder);
|
||||
}
|
||||
}
|
||||
else {
|
||||
PsiElement toHighlight = notNull(aClass.getNameIdentifier(), aClass);
|
||||
reportMissingJavadoc(toHighlight, delegate, isOnTheFly);
|
||||
reportMissingJavadoc(toHighlight, holder, isOnTheFly);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkField(PsiField field, ProblemsHolder delegate, boolean isOnTheFly) {
|
||||
private void checkField(PsiField field, ProblemsHolder holder, boolean isOnTheFly) {
|
||||
if (IGNORE_DEPRECATED_ELEMENTS && isDeprecated(field)) {
|
||||
return;
|
||||
}
|
||||
@@ -226,14 +226,14 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
|
||||
PsiDocComment docComment = field.getDocComment();
|
||||
if (docComment != null) {
|
||||
checkRequiredTags(docComment.getTags(), FIELD_SETTINGS, docComment.getFirstChild(), delegate);
|
||||
checkRequiredTags(docComment.getTags(), FIELD_SETTINGS, docComment.getFirstChild(), holder);
|
||||
}
|
||||
else {
|
||||
reportMissingJavadoc(field.getNameIdentifier(), delegate, isOnTheFly);
|
||||
reportMissingJavadoc(field.getNameIdentifier(), holder, isOnTheFly);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkMethod(PsiMethod method, ProblemsHolder delegate, boolean isOnTheFly) {
|
||||
private void checkMethod(PsiMethod method, ProblemsHolder holder, boolean isOnTheFly) {
|
||||
if (method instanceof SyntheticElement) {
|
||||
return;
|
||||
}
|
||||
@@ -250,34 +250,34 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
if (!isInherited(docComment, method)) {
|
||||
PsiDocTag[] tags = docComment.getTags();
|
||||
|
||||
PsiElement toHighlight = docComment.getFirstChild();
|
||||
if (METHOD_SETTINGS.isTagRequired("return")) {
|
||||
checkMissingReturnTag(tags, method, docComment.getFirstChild(), delegate);
|
||||
checkMissingReturnTag(method, tags, toHighlight, holder);
|
||||
}
|
||||
if (METHOD_SETTINGS.isTagRequired("param")) {
|
||||
checkMissingParamTags(tags, method, docComment.getFirstChild(), delegate);
|
||||
checkMissingTypeParamTags(method, tags, docComment.getFirstChild(), delegate);
|
||||
checkMissingParamTags(method, tags, toHighlight, holder);
|
||||
checkMissingTypeParamTags(method, tags, toHighlight, holder);
|
||||
}
|
||||
if (METHOD_SETTINGS.isTagRequired("throws")) {
|
||||
checkMissingThrowsTags(tags, method, docComment.getFirstChild(), delegate);
|
||||
checkMissingThrowsTags(method, tags, toHighlight, holder);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
PsiIdentifier nameIdentifier = method.getNameIdentifier();
|
||||
if (nameIdentifier != null && isJavadocRequired(method)) {
|
||||
reportMissingJavadoc(nameIdentifier, delegate, isOnTheFly);
|
||||
reportMissingJavadoc(nameIdentifier, holder, isOnTheFly);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static boolean isDeprecated(PsiDocCommentOwner element) {
|
||||
return element.isDeprecated() || element.getContainingClass() != null && element.getContainingClass().isDeprecated();
|
||||
}
|
||||
|
||||
public static boolean isInherited(PsiDocComment docComment, PsiMethod psiMethod) {
|
||||
static boolean isInherited(PsiDocComment docComment, PsiMethod psiMethod) {
|
||||
for (PsiElement descriptionElement : docComment.getDescriptionElements()) {
|
||||
if (descriptionElement instanceof PsiInlineDocTag && "inheritDoc".equals(((PsiInlineDocTag)descriptionElement).getName())) {
|
||||
if (descriptionElement instanceof PsiInlineDocTag tag && "inheritDoc".equals(tag.getName())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -292,8 +292,8 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isJavadocRequired(PsiMethod method){
|
||||
return EP_NAME.getExtensionList().stream().noneMatch(condition -> condition.value(method));
|
||||
private static boolean isJavadocRequired(PsiMethod method){
|
||||
return !ContainerUtil.exists(EP_NAME.getExtensionList(), condition -> condition.value(method));
|
||||
}
|
||||
|
||||
private static boolean isJavadocRequired(@NotNull Options options, @NotNull PsiModifierListOwner element) {
|
||||
@@ -338,23 +338,23 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
return PsiImplUtil.isDeprecatedByAnnotation(element) || docComment != null && docComment.findTagByName("deprecated") != null;
|
||||
}
|
||||
|
||||
static void checkMissingReturnTag(PsiDocTag @NotNull [] tags,
|
||||
@NotNull PsiMethod psiMethod,
|
||||
@NotNull PsiElement toHighlight,
|
||||
@NotNull ProblemsHolder holder) {
|
||||
private static void checkMissingReturnTag(@NotNull PsiMethod psiMethod,
|
||||
PsiDocTag @NotNull [] tags,
|
||||
@NotNull PsiElement toHighlight,
|
||||
@NotNull ProblemsHolder holder) {
|
||||
if (!psiMethod.isConstructor() && !PsiTypes.voidType().equals(psiMethod.getReturnType())) {
|
||||
boolean hasReturnTag = ContainerUtil.exists(tags, tag -> "return".equals(tag.getName()));
|
||||
if (!hasReturnTag) {
|
||||
String message = JavaBundle.message("inspection.javadoc.problem.missing.tag", "<code>@" + "return" + "</code>");
|
||||
String message = JavaBundle.message("inspection.javadoc.problem.missing.tag", "<code>@return</code>");
|
||||
problem(holder, toHighlight, message, new JavaDocFixes.AddMissingTagFix("return", ""));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void checkMissingThrowsTags(PsiDocTag @NotNull [] tags,
|
||||
@NotNull PsiMethod psiMethod,
|
||||
@NotNull PsiElement toHighlight,
|
||||
@NotNull ProblemsHolder holder) {
|
||||
private static void checkMissingThrowsTags(@NotNull PsiMethod psiMethod,
|
||||
PsiDocTag @NotNull [] tags,
|
||||
@NotNull PsiElement toHighlight,
|
||||
@NotNull ProblemsHolder holder) {
|
||||
PsiClassType[] thrownTypes = psiMethod.getThrowsList().getReferencedTypes();
|
||||
if (thrownTypes.length <= 0) return;
|
||||
|
||||
@@ -374,14 +374,11 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
PsiElement firstChild = value.getFirstChild();
|
||||
if (firstChild != null) {
|
||||
PsiElement psiElement = firstChild.getFirstChild();
|
||||
if ((psiElement instanceof PsiJavaCodeReferenceElement)) {
|
||||
PsiElement target = ((PsiJavaCodeReferenceElement)psiElement).resolve();
|
||||
if (target instanceof PsiClass) {
|
||||
for (Iterator<PsiClassType> it = declaredExceptions.keySet().iterator(); it.hasNext(); ) {
|
||||
PsiClass psiClass = declaredExceptions.get(it.next());
|
||||
if (InheritanceUtil.isInheritorOrSelf((PsiClass)target, psiClass, true)) {
|
||||
it.remove();
|
||||
}
|
||||
if ((psiElement instanceof PsiJavaCodeReferenceElement ref) && ref.resolve() instanceof PsiClass aClass) {
|
||||
for (Iterator<PsiClassType> it = declaredExceptions.keySet().iterator(); it.hasNext(); ) {
|
||||
PsiClass psiClass = declaredExceptions.get(it.next());
|
||||
if (InheritanceUtil.isInheritorOrSelf(aClass, psiClass, true)) {
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -398,10 +395,10 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
}
|
||||
}
|
||||
|
||||
static void checkMissingParamTags(PsiDocTag @NotNull [] tags,
|
||||
@NotNull PsiMethod psiMethod,
|
||||
@NotNull PsiElement toHighlight,
|
||||
@NotNull ProblemsHolder holder) {
|
||||
private static void checkMissingParamTags(@NotNull PsiMethod psiMethod,
|
||||
PsiDocTag @NotNull [] tags,
|
||||
@NotNull PsiElement toHighlight,
|
||||
@NotNull ProblemsHolder holder) {
|
||||
List<PsiNamedElement> absentParameters = null;
|
||||
|
||||
for (PsiParameter param : psiMethod.getParameterList().getParameters()) {
|
||||
@@ -414,31 +411,33 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
for (PsiNamedElement parameter : absentParameters) {
|
||||
String name = parameter.getName();
|
||||
if (name != null) {
|
||||
String tagText = "<code>" + name + "</code>";
|
||||
String message = JavaBundle.message("inspection.javadoc.method.problem.missing.param.tag", tagText);
|
||||
String message = JavaBundle.message("inspection.javadoc.method.problem.missing.param.tag", "<code>" + name + "</code>");
|
||||
problem(holder, toHighlight, message, new JavaDocFixes.AddMissingParamTagFix(name));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void reportMissingJavadoc(@NotNull PsiElement toHighlight, @NotNull ProblemsHolder holder, boolean isOnTheFly) {
|
||||
private static void reportMissingJavadoc(@NotNull PsiElement toHighlight, @NotNull ProblemsHolder holder, boolean isOnTheFly) {
|
||||
String message = JavaBundle.message("inspection.javadoc.problem.descriptor");
|
||||
LocalQuickFix fix = isOnTheFly ? IntentionWrapper.wrapToQuickFix(new AddJavadocIntention(), holder.getFile()) : null;
|
||||
problem(holder, toHighlight, message, fix);
|
||||
}
|
||||
|
||||
public static void problem(@NotNull ProblemsHolder holder, @NotNull PsiElement toHighlight, @NotNull @Nls String message, @Nullable LocalQuickFix fix) {
|
||||
private static void problem(@NotNull ProblemsHolder holder,
|
||||
@NotNull PsiElement toHighlight,
|
||||
@NotNull @Nls String message,
|
||||
@Nullable LocalQuickFix fix) {
|
||||
final LocalQuickFix[] fixes = fix != null ? new LocalQuickFix[] { fix } : null;
|
||||
holder.registerProblem(toHighlight, message, ProblemHighlightType.GENERIC_ERROR_OR_WARNING, fixes);
|
||||
}
|
||||
|
||||
private static final String[] TAGS_TO_CHECK = {"author", "version", "since"};
|
||||
|
||||
static void checkRequiredTags(PsiDocTag @NotNull [] tags,
|
||||
@NotNull Options options,
|
||||
@NotNull PsiElement toHighlight,
|
||||
@NotNull ProblemsHolder holder) {
|
||||
private static void checkRequiredTags(PsiDocTag @NotNull [] tags,
|
||||
@NotNull Options options,
|
||||
@NotNull PsiElement toHighlight,
|
||||
@NotNull ProblemsHolder holder) {
|
||||
boolean[] isTagRequired = new boolean[TAGS_TO_CHECK.length];
|
||||
boolean[] isTagPresent = new boolean[TAGS_TO_CHECK.length];
|
||||
boolean someTagsAreRequired = false;
|
||||
@@ -464,26 +463,24 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
}
|
||||
|
||||
private static void checkMissingTypeParamTags(@NotNull PsiTypeParameterListOwner owner,
|
||||
PsiDocTag @NotNull [] tags,
|
||||
@NotNull PsiElement toHighlight,
|
||||
@NotNull ProblemsHolder holder) {
|
||||
if (owner.hasTypeParameters()) {
|
||||
List<PsiTypeParameter> absentParameters = null;
|
||||
PsiDocTag @NotNull [] tags,
|
||||
@NotNull PsiElement toHighlight,
|
||||
@NotNull ProblemsHolder holder) {
|
||||
if (!owner.hasTypeParameters()) return;
|
||||
List<PsiTypeParameter> absentParameters = null;
|
||||
|
||||
for (PsiTypeParameter typeParameter : owner.getTypeParameters()) {
|
||||
if (!hasTagForParameter(tags, typeParameter)) {
|
||||
(absentParameters = list(absentParameters)).add(typeParameter);
|
||||
}
|
||||
for (PsiTypeParameter typeParameter : owner.getTypeParameters()) {
|
||||
if (!hasTagForParameter(tags, typeParameter)) {
|
||||
(absentParameters = list(absentParameters)).add(typeParameter);
|
||||
}
|
||||
}
|
||||
|
||||
if (absentParameters != null) {
|
||||
for (PsiTypeParameter typeParameter : absentParameters) {
|
||||
String name = typeParameter.getName();
|
||||
if (name != null) {
|
||||
String tagText = "<code><" + name + "></code>";
|
||||
String message = JavaBundle.message("inspection.javadoc.method.problem.missing.param.tag", tagText);
|
||||
problem(holder, toHighlight, message, new JavaDocFixes.AddMissingTagFix("param", "<" + name + ">"));
|
||||
}
|
||||
if (absentParameters != null) {
|
||||
for (PsiTypeParameter typeParameter : absentParameters) {
|
||||
String name = typeParameter.getName();
|
||||
if (name != null) {
|
||||
String message = JavaBundle.message("inspection.javadoc.method.problem.missing.param.tag", "<code><" + name + "></code>");
|
||||
problem(holder, toHighlight, message, new JavaDocFixes.AddMissingTagFix("param", "<" + name + ">"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -491,13 +488,10 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
|
||||
public static boolean hasTagForParameter(PsiDocTag @NotNull [] tags, PsiElement param) {
|
||||
for (PsiDocTag tag : tags) {
|
||||
if ("param".equals(tag.getName())) {
|
||||
PsiDocTagValue value = tag.getValueElement();
|
||||
if (value instanceof PsiDocParamRef) {
|
||||
PsiReference psiReference = value.getReference();
|
||||
if (psiReference != null && psiReference.isReferenceTo(param)) {
|
||||
return true;
|
||||
}
|
||||
if ("param".equals(tag.getName()) && tag.getValueElement() instanceof PsiDocParamRef ref) {
|
||||
PsiReference psiReference = ref.getReference();
|
||||
if (psiReference != null && psiReference.isReferenceTo(param)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -508,5 +502,4 @@ public final class MissingJavadocInspection extends LocalInspectionTool {
|
||||
private static <T> List<T> list(List<T> list) {
|
||||
return list != null ? list : new SmartList<>();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user