[java-inspections] JavaDocReferenceInspection: highlight non-existing regions

GitOrigin-RevId: 9c7a2f9e1ac551f72d594f4bc9dc689969f6c795
This commit is contained in:
Tagir Valeev
2023-03-21 15:01:36 +01:00
committed by intellij-monorepo-bot
parent 5ab495db61
commit 4084f2a0c5
3 changed files with 12 additions and 0 deletions

View File

@@ -14,6 +14,8 @@ import com.intellij.codeInspection.util.InspectionMessage;
import com.intellij.ide.DataManager;
import com.intellij.ide.util.FQNameCellRenderer;
import com.intellij.java.JavaBundle;
import com.intellij.model.Symbol;
import com.intellij.model.psi.PsiSymbolReference;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.editor.Editor;
@@ -27,6 +29,7 @@ import com.intellij.psi.javadoc.*;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtilCore;
import com.intellij.psi.util.proximity.PsiProximityComparator;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.io.URLUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -119,6 +122,13 @@ public class JavaDocReferenceInspection extends LocalInspectionTool {
holder.registerProblem(attributeValue, JavaBundle.message("inspection.message.snippet.file.not.found"));
}
}
PsiSymbolReference symRef = ContainerUtil.getOnlyItem(attributeValue.getOwnReferences());
if (symRef != null) {
Collection<? extends Symbol> target = symRef.resolveReference();
if (target.isEmpty()) {
holder.registerProblem(attributeValue, JavaBundle.message("inspection.message.snippet.region.not.found"));
}
}
}
@Override

View File

@@ -9,6 +9,7 @@ package pkg;
* {@snippet class='sub.Test' region="reg"}
* {@snippet class=<error descr="Snippet file is not found">'sub.Test2'</error>}
* {@snippet file="sub/test.txt"}
* {@snippet file="sub/test.txt" region=<error descr="Region is not found">"notfound"</error>}
*/
public class SnippetRefs {
}

View File

@@ -1818,6 +1818,7 @@ intention.family.name.ignore.project=Do not show again in this project
fix.move.to.source.root=Move to source root
warning.java.file.outside.source.root=Java file is located outside of the module source root, so it won't be compiled
inspection.message.snippet.file.not.found=Snippet file is not found
inspection.message.snippet.region.not.found=Region is not found
javadoc.snippet.not.found=Snippet not found: {0}
javadoc.snippet.region.not.found=Region not found: {0}
javadoc.snippet.error.unknown.enum.value=@{0}: unknown {1} ''{2}''; only {3} are supported