[java] accepts quoted strings and HTML refs after @see tag (IDEA-156403)

This commit is contained in:
Roman Shevchenko
2016-05-26 17:34:16 +03:00
parent 91f9b3c2dc
commit 24da7ad563
3 changed files with 17 additions and 4 deletions

View File

@@ -192,7 +192,7 @@ public class JavadocHighlightUtil {
if (dataElements.length == 0 || dataElements.length == 1 && empty(dataElements[0])) {
holder.problem(tag.getNameElement(), InspectionsBundle.message("inspection.javadoc.problem.see.tag.expecting.ref"), null);
}
else if (!SEE_TAG_REFS.contains(dataElements[0].getNode().getElementType())) {
else if (!isValidSeeRef(dataElements[0])) {
holder.problem(dataElements[0], InspectionsBundle.message("inspection.javadoc.problem.see.tag.expecting.ref"), null);
}
}
@@ -201,6 +201,17 @@ public class JavadocHighlightUtil {
}
}
private static boolean isValidSeeRef(PsiElement e) {
if (SEE_TAG_REFS.contains(e.getNode().getElementType())) return true;
String text = e.getText();
if (StringUtil.isQuotedString(text) && text.charAt(0) == '"') return true;
if (text.toLowerCase(Locale.US).startsWith("<a href=")) return true;
return false;
}
static void checkInlineTags(@NotNull PsiElement[] elements, @NotNull ProblemHolder holder) {
JavadocManager docManager = JavadocManager.SERVICE.getInstance(holder.project());
for (PsiElement element : elements) {

View File

@@ -1,9 +1,11 @@
/**
* <warning descr="Class or method reference is expected after @see tag">@see</warning>
* @see <warning descr="Class or method reference is expected after @see tag">{@link C}</warning> clarification
* <warning descr="Class/method reference, quoted text, or HTML link are expected after @see tag">@see</warning>
* @see <warning descr="Class/method reference, quoted text, or HTML link are expected after @see tag">{@link C}</warning> clarification
*
* @see C a correct one
* @see C#f
* @see "The Java Language Specification, Java SE 8 Edition"
* @see <a href="https://docs.oracle.com/javase/specs/jls/se8/html/index.html">The Java Language Specification, Java SE 8 Edition</a>
*/
class C {
int f;

View File

@@ -272,7 +272,7 @@ inspection.javadoc.problem.descriptor=Required Javadoc is absent
inspection.javadoc.problem.descriptor1=Period in the documentation is missing. The period is used by the Javadoc tool to generate the comment for the overview page
inspection.javadoc.problem.missing.tag=Required tag {0} is missing
inspection.javadoc.problem.missing.tag.description={0} is missing after @{1} tag
inspection.javadoc.problem.see.tag.expecting.ref=Class or method reference is expected after @see tag
inspection.javadoc.problem.see.tag.expecting.ref=Class/method reference, quoted text, or HTML link are expected after @see tag
inspection.javadoc.problem.cannot.resolve=Cannot resolve symbol {0}
inspection.javadoc.problem.name.expected=Name expected
inspection.javadoc.problem.wrong.tag=Wrong tag {0}