From f9080539fe4f34b8c259f79cf632f48f1a2f00bb Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Sat, 5 Feb 2011 16:11:07 +0100 Subject: [PATCH] better inspection messages --- .../siyeh/InspectionGadgetsBundle.properties | 6 ++- .../UnnecessaryJavaDocLinkInspection.java | 51 +++++++++++++------ .../UnnecessaryJavaDocLink.java | 6 +++ .../unnecessary_javadoc_link/expected.xml | 10 ++-- 4 files changed, 50 insertions(+), 23 deletions(-) diff --git a/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties b/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties index 33ec73beb919..4df0b02e1574 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties +++ b/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties @@ -1752,8 +1752,10 @@ multiple.exceptions.declared.on.test.method.display.name=Multiple exceptions dec multiple.exceptions.declared.on.test.method.problem.descriptor=#ref could be replaced with 'throws Exception' #loc multiple.exceptions.declared.on.test.method.quickfix=Replace with 'throws Exception' unnecessary.javadoc.link.display.name=Unnecessary JavaDoc link -unnecessary.javadoc.link.problem.descriptor=#ref is unnecessary #loc -unnecessary.javadoc.link.quickfix=Remove unnecessary {0} +unnecessary.javadoc.link.super.method.problem.descriptor=#ref pointing to super method is unnecessary #loc +unnecessary.javadoc.link.this.method.problem.descriptor=#ref pointing to this method is unnecessary #loc +unnecessary.javadoc.link.this.class.problem.descriptor=#ref pointing to containing class is unnecessary #loc +unnecessary.javadoc.link.quickfix=Remove unnecessary '{0}' thread.local.not.static.final.display.name=ThreadLocal field not declared static final thread.local.not.static.final.problem.descriptor=ThreadLocal #ref is not declared 'static final' #loc remove.try.finally.block.quickfix=Remove try-finally block diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/style/UnnecessaryJavaDocLinkInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/style/UnnecessaryJavaDocLinkInspection.java index 6efbda0e3adf..818053c4e1d8 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/style/UnnecessaryJavaDocLinkInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/style/UnnecessaryJavaDocLinkInspection.java @@ -39,6 +39,10 @@ import javax.swing.*; public class UnnecessaryJavaDocLinkInspection extends BaseInspection { + private static final int THIS_METHOD = 1; + private static final int THIS_CLASS = 2; + private static final int SUPER_METHOD = 3; + @SuppressWarnings({"PublicField"}) public boolean ignoreInlineLinkToSuper = false; @@ -53,14 +57,24 @@ public class UnnecessaryJavaDocLinkInspection extends BaseInspection { @NotNull @Override protected String buildErrorString(Object... infos) { - return InspectionGadgetsBundle.message( - "unnecessary.javadoc.link.problem.descriptor"); + final int n = ((Integer) infos[1]).intValue(); + if (n == THIS_METHOD) { + return InspectionGadgetsBundle.message( + "unnecessary.javadoc.link.this.method.problem.descriptor"); + } else if (n == THIS_CLASS) { + return InspectionGadgetsBundle.message( + "unnecessary.javadoc.link.this.class.problem.descriptor"); + } else { + return InspectionGadgetsBundle.message( + "unnecessary.javadoc.link.super.method.problem.descriptor"); + } } @Override public JComponent createOptionsPanel() { return new SingleCheckboxOptionsPanel( - InspectionGadgetsBundle.message("unnecessary.javadoc.link.option"), + InspectionGadgetsBundle.message( + "unnecessary.javadoc.link.option"), this, "ignoreInlineLinkToSuper"); } @@ -88,10 +102,11 @@ public class UnnecessaryJavaDocLinkInspection extends BaseInspection { protected void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement element = descriptor.getPsiElement(); - if (!(element instanceof PsiDocTag)) { + final PsiElement parent = element.getParent(); + if (!(parent instanceof PsiDocTag)) { return; } - final PsiDocTag docTag = (PsiDocTag) element; + final PsiDocTag docTag = (PsiDocTag) parent; final PsiDocComment docComment = docTag.getContainingComment(); if (docComment != null) { if (shouldDeleteEntireComment(docComment)) { @@ -157,13 +172,15 @@ public class UnnecessaryJavaDocLinkInspection extends BaseInspection { return; } if (target.equals(containingMethod)) { - registerError(tag, '@' + name); + registerError(tag.getNameElement(), '@' + name, + Integer.valueOf(THIS_METHOD)); return; } final PsiClass containingClass = PsiTreeUtil.getParentOfType(tag, PsiClass.class); if (target.equals(containingClass)) { - registerError(tag, '@' + name); + registerError(tag.getNameElement(), '@' + name, + Integer.valueOf(THIS_CLASS)); return; } if (!(target instanceof PsiMethod)) { @@ -176,7 +193,8 @@ public class UnnecessaryJavaDocLinkInspection extends BaseInspection { if (ignoreInlineLinkToSuper && tag instanceof PsiInlineDocTag) { return; } - registerError(tag, '@' + name); + registerError(tag.getNameElement(), '@' + name, + Integer.valueOf(SUPER_METHOD)); } private PsiReference extractReference(PsiDocTag tag) { @@ -190,16 +208,17 @@ public class UnnecessaryJavaDocLinkInspection extends BaseInspection { if (dataElements.length == 0) { return null; } - final PsiElement lastElement = - dataElements[dataElements.length - 1]; - if (lastElement == null) { + PsiElement salientElement = null; + for (PsiElement dataElement : dataElements) { + if (!(dataElement instanceof PsiWhiteSpace)) { + salientElement = dataElement; + break; + } + } + if (salientElement == null) { return null; } - final PsiElement[] children = lastElement.getChildren(); - if (children.length == 0) { - return null; - } - final PsiElement child = children[0]; + final PsiElement child = salientElement.getFirstChild(); if (!(child instanceof PsiReference)) { return null; } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unnecessary_javadoc_link/UnnecessaryJavaDocLink.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unnecessary_javadoc_link/UnnecessaryJavaDocLink.java index baaf5c740fee..9a1882fbf974 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unnecessary_javadoc_link/UnnecessaryJavaDocLink.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unnecessary_javadoc_link/UnnecessaryJavaDocLink.java @@ -19,4 +19,10 @@ public class UnnecessaryJavaDocLink { void foo() { } + + /** + * @see com.siyeh.igtest.style.unnecessary_javadoc_link.UnnecessaryJavaDocLink + * something + */ + void bar() {} } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unnecessary_javadoc_link/expected.xml b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unnecessary_javadoc_link/expected.xml index a30c514efbf0..d8e1a99fad21 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unnecessary_javadoc_link/expected.xml +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unnecessary_javadoc_link/expected.xml @@ -5,7 +5,7 @@ UnnecessaryJavaDocLink.java 6 Unnecessary JavaDoc link - <code>{@link UnnecessaryJavaDocLink}</code> is unnecessary #loc + <code>@link</code> pointing to containing class is unnecessary #loc @@ -13,7 +13,7 @@ UnnecessaryJavaDocLink.java 7 Unnecessary JavaDoc link - <code>{@linkplain UnnecessaryJavaDocLink#equals(Object)}</code> is unnecessary #loc + <code>@linkplain</code> pointing to this method is unnecessary #loc @@ -21,21 +21,21 @@ UnnecessaryJavaDocLink.java 8 Unnecessary JavaDoc link - <code>@see Object#equals(Object)</code> is unnecessary #loc + <code>@see</code> pointing to super method is unnecessary #loc UnnecessaryJavaDocLink.java 16 Unnecessary JavaDoc link - <code>{@link #foo()}</code> is unnecessary #loc + <code>@link</code> pointing to this method is unnecessary #loc UnnecessaryJavaDocLink.java 17 Unnecessary JavaDoc link - <code>@see #foo()</code> is unnecessary #loc + <code>@see</code> pointing to this method is unnecessary #loc \ No newline at end of file