From b3eff58dd97cc0662668e3abf9b6198b9cb4135c Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 24 Nov 2009 13:37:53 +0300 Subject: [PATCH] javadoc bad characters (IDEADEV-10643) --- .../javaDoc/JavaDocLocalInspection.java | 23 +++++++++++++++++-- .../javaDoc/BadCharacters.java | 10 ++++++++ .../daemon/JavadocHighlightingTest.java | 2 ++ 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/BadCharacters.java diff --git a/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavaDocLocalInspection.java b/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavaDocLocalInspection.java index 59fe65ab71fb..0dafe913f1ac 100644 --- a/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavaDocLocalInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavaDocLocalInspection.java @@ -10,6 +10,7 @@ import com.intellij.codeInsight.daemon.QuickFixBundle; import com.intellij.codeInspection.*; import com.intellij.codeInspection.ex.BaseLocalInspectionTool; import com.intellij.codeInspection.reference.RefJavaUtil; +import com.intellij.lang.ASTNode; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ScrollType; @@ -405,7 +406,7 @@ public class JavaDocLocalInspection extends BaseLocalInspectionTool { checkForPeriodInDoc(docComment, problems, manager, isOnTheFly); checkInlineTags(manager, problems, docComment.getDescriptionElements(), JavaPsiFacade.getInstance(docComment.getProject()).getJavadocManager(), isOnTheFly); - + checkForBadCharacters(docComment, problems, manager, isOnTheFly); for (PsiDocTag tag : tags) { for (int i = 0; i < tagsToCheck.length; i++) { final String tagToCheck = tagsToCheck[i]; @@ -468,6 +469,7 @@ public class JavaDocLocalInspection extends BaseLocalInspectionTool { JavaPsiFacade.getInstance(docComment.getProject()).getJavadocManager(), isOnTheFly); checkForPeriodInDoc(docComment, problems, manager, isOnTheFly); checkDuplicateTags(docComment.getTags(), problems, manager, isOnTheFly); + checkForBadCharacters(docComment, problems, manager, isOnTheFly); return problems.isEmpty() ? null : problems.toArray(new ProblemDescriptor[problems.size()]); @@ -615,7 +617,7 @@ public class JavaDocLocalInspection extends BaseLocalInspectionTool { } checkForPeriodInDoc(docComment, problems, manager, isOnTheFly); - + checkForBadCharacters(docComment, problems, manager, isOnTheFly); for (PsiDocTag tag : tags) { if ("param".equals(tag.getName())) { if (extractTagDescription(tag).length() == 0) { @@ -814,6 +816,23 @@ public class JavaDocLocalInspection extends BaseLocalInspectionTool { return buf.toString().trim(); } + private void checkForBadCharacters(PsiDocComment docComment, + final ArrayList problems, + final InspectionManager manager, final boolean onTheFly) { + docComment.accept(new PsiRecursiveElementVisitor(){ + @Override + public void visitElement(PsiElement element) { + super.visitElement(element); + final ASTNode node = element.getNode(); + if (node != null) { + if (node.getElementType() == JavaDocTokenType.DOC_COMMENT_BAD_CHARACTER) { + problems.add(manager.createProblemDescriptor(element, "Illegal character", (LocalQuickFix)null, ProblemHighlightType.GENERIC_ERROR_OR_WARNING, onTheFly)); + } + } + } + }); + } + private void checkForPeriodInDoc(PsiDocComment docComment, ArrayList problems, InspectionManager manager, boolean onTheFly) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/BadCharacters.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/BadCharacters.java new file mode 100644 index 000000000000..1bfd88961182 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/BadCharacters.java @@ -0,0 +1,10 @@ +import java.util.*; +class Test { + + public void read(List list){} + + /** + * @see #read(java.util.List<T>) + */ + public void write(){} +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/JavadocHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/JavadocHighlightingTest.java index 39d2f102fb98..b310a8812e1e 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/JavadocHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/JavadocHighlightingTest.java @@ -86,6 +86,8 @@ public class JavadocHighlightingTest extends LightDaemonAnalyzerTestCase { public void testUnknownInlineTag() throws Exception {doTest();} public void testUnknownTags() throws Exception {doTest();} + public void testBadCharacters() throws Exception {doTest();} + public void testVararg() throws Exception {doTest();} public void testBadReference() throws Exception{