mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
suppress annotation: allow values from //noinspection comments to be included in the list (IDEA-118948)
This commit is contained in:
@@ -166,7 +166,7 @@ public class JavaSuppressionUtil {
|
||||
return getInspectionIdsSuppressedInAnnotation(modifierList);
|
||||
}
|
||||
|
||||
static String getSuppressedInspectionIdsIn(@NotNull PsiElement element) {
|
||||
public static String getSuppressedInspectionIdsIn(@NotNull PsiElement element) {
|
||||
if (element instanceof PsiComment) {
|
||||
String text = element.getText();
|
||||
Matcher matcher = SuppressionUtil.SUPPRESS_IN_LINE_COMMENT_PATTERN.matcher(text);
|
||||
|
||||
+12
-1
@@ -17,7 +17,9 @@ package com.siyeh.ig.maturity;
|
||||
|
||||
import com.intellij.codeInspection.BatchSuppressManager;
|
||||
import com.intellij.codeInspection.JavaSuppressionUtil;
|
||||
import com.intellij.codeInspection.SuppressionUtil;
|
||||
import com.intellij.codeInspection.SuppressionUtilCore;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
@@ -66,7 +68,16 @@ public class SuppressionAnnotationInspectionBase extends BaseInspection {
|
||||
if (commentText.length() > 2) {
|
||||
@NonNls final String strippedComment = commentText.substring(2).trim();
|
||||
if (strippedComment.startsWith(SuppressionUtilCore.SUPPRESS_INSPECTIONS_TAG_NAME)) {
|
||||
registerError(comment);
|
||||
final String suppressedIds = JavaSuppressionUtil.getSuppressedInspectionIdsIn(comment);
|
||||
final Iterable<String> ids = suppressedIds != null ? StringUtil.tokenize(suppressedIds, "[, ]") : null;
|
||||
if (ids != null) {
|
||||
for (String id : ids) {
|
||||
if (!myAllowedSuppressions.contains(id)) {
|
||||
registerError(comment, comment);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+41
-12
@@ -15,15 +15,16 @@
|
||||
*/
|
||||
package com.siyeh.ig.maturity;
|
||||
|
||||
import com.intellij.codeInspection.InspectionProfile;
|
||||
import com.intellij.codeInspection.JavaSuppressionUtil;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.codeInspection.RemoveAnnotationQuickFix;
|
||||
import com.intellij.codeInsight.FileModificationService;
|
||||
import com.intellij.codeInsight.daemon.impl.RemoveSuppressWarningAction;
|
||||
import com.intellij.codeInspection.*;
|
||||
import com.intellij.codeInspection.ui.ListEditForm;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.profile.codeInspection.InspectionProfileManager;
|
||||
import com.intellij.profile.codeInspection.InspectionProjectProfileManager;
|
||||
import com.intellij.psi.PsiAnnotation;
|
||||
import com.intellij.psi.PsiComment;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiModifierList;
|
||||
import com.siyeh.ig.DelegatingFix;
|
||||
@@ -47,23 +48,51 @@ public class SuppressionAnnotationInspection extends SuppressionAnnotationInspec
|
||||
@NotNull
|
||||
@Override
|
||||
protected InspectionGadgetsFix[] buildFixes(Object... infos) {
|
||||
if (infos.length == 1 && infos[0] instanceof PsiAnnotation) {
|
||||
final PsiAnnotation annotation = (PsiAnnotation)infos[0];
|
||||
PsiElement parent = annotation.getParent();
|
||||
final Collection<String> ids = JavaSuppressionUtil.getInspectionIdsSuppressedInAnnotation((PsiModifierList)parent);
|
||||
if (!ids.isEmpty()) {
|
||||
return new InspectionGadgetsFix[]{new DelegatingFix(new RemoveAnnotationQuickFix(annotation, null)), new AllowSuppressionsFix()};
|
||||
if (infos.length == 1) {
|
||||
if (infos[0] instanceof PsiAnnotation) {
|
||||
final PsiAnnotation annotation = (PsiAnnotation)infos[0];
|
||||
PsiElement parent = annotation.getParent();
|
||||
final Collection<String> ids = JavaSuppressionUtil.getInspectionIdsSuppressedInAnnotation((PsiModifierList)parent);
|
||||
if (!ids.isEmpty()) {
|
||||
return new InspectionGadgetsFix[]{new DelegatingFix(new RemoveAnnotationQuickFix(annotation, null)), new AllowSuppressionsFix()};
|
||||
}
|
||||
} else if (infos[0] instanceof PsiComment) {
|
||||
return new InspectionGadgetsFix[]{new RemoveSuppressCommentFix(), new AllowSuppressionsFix()};
|
||||
}
|
||||
}
|
||||
return InspectionGadgetsFix.EMPTY_ARRAY;
|
||||
}
|
||||
|
||||
private static class RemoveSuppressCommentFix extends InspectionGadgetsFix {
|
||||
@Override
|
||||
protected void doFix(Project project, ProblemDescriptor descriptor) {
|
||||
PsiElement psiElement = descriptor.getPsiElement();
|
||||
if (psiElement != null) {
|
||||
if (!FileModificationService.getInstance().preparePsiElementForWrite(psiElement)) return;
|
||||
psiElement.delete();
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getName() {
|
||||
return getFamilyName();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getFamilyName() {
|
||||
return "Remove //" + SuppressionUtilCore.SUPPRESS_INSPECTIONS_TAG_NAME;
|
||||
}
|
||||
}
|
||||
|
||||
private class AllowSuppressionsFix extends InspectionGadgetsFix {
|
||||
@Override
|
||||
protected void doFix(Project project, ProblemDescriptor descriptor) {
|
||||
final PsiElement psiElement = descriptor.getPsiElement();
|
||||
if (psiElement instanceof PsiAnnotation) {
|
||||
final Collection<String> ids = JavaSuppressionUtil.getInspectionIdsSuppressedInAnnotation((PsiModifierList)psiElement.getParent());
|
||||
final String suppressedIds = JavaSuppressionUtil.getSuppressedInspectionIdsIn(psiElement);
|
||||
final Iterable<String> ids = suppressedIds != null ? StringUtil.tokenize(suppressedIds, "[, ]") : null;
|
||||
if (ids != null) {
|
||||
for (String id : ids) {
|
||||
if (!myAllowedSuppressions.contains(id)) {
|
||||
myAllowedSuppressions.add(id);
|
||||
|
||||
Reference in New Issue
Block a user