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