From 9c5f5b4cbf50191832ec339f71592c27203cd1c2 Mon Sep 17 00:00:00 2001 From: "valentin.dorofeev" Date: Fri, 25 Jul 2025 14:14:34 +0300 Subject: [PATCH] IDEA-365975 Spring MVC: suggest to remove explicit path variable name if there's matching parameter GitOrigin-RevId: 1ce9da79e81a8db1914dd9a2ccb00ca2bea48f84 --- .../AbstractBaseUastLocalInspectionTool.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/java/java-analysis-api/src/com/intellij/codeInspection/AbstractBaseUastLocalInspectionTool.java b/java/java-analysis-api/src/com/intellij/codeInspection/AbstractBaseUastLocalInspectionTool.java index fb5187c468d8..bd56c65ec861 100644 --- a/java/java-analysis-api/src/com/intellij/codeInspection/AbstractBaseUastLocalInspectionTool.java +++ b/java/java-analysis-api/src/com/intellij/codeInspection/AbstractBaseUastLocalInspectionTool.java @@ -20,7 +20,7 @@ public abstract class AbstractBaseUastLocalInspectionTool extends LocalInspectio private final Class[] myUElementsTypesHint; protected AbstractBaseUastLocalInspectionTool() { - this(UFile.class, UClass.class, UField.class, UMethod.class); + this(UFile.class, UClass.class, UField.class, UMethod.class, UParameter.class); } @SafeVarargs @@ -64,6 +64,18 @@ public abstract class AbstractBaseUastLocalInspectionTool extends LocalInspectio return null; } + /** + * Override this to report problems at parameter level. + * + * @param parameter to check. + * @param manager InspectionManager to ask for ProblemDescriptors from. + * @param isOnTheFly true if called during on the fly editor highlighting. Called from Inspect Code action otherwise. + * @return {@code null} if no problems found or not applicable at parameter level. + */ + public ProblemDescriptor @Nullable [] checkParameter(@NotNull UParameter parameter, @NotNull InspectionManager manager, boolean isOnTheFly) { + return null; + } + @Override public @NotNull PsiElementVisitor buildVisitor(final @NotNull ProblemsHolder holder, final boolean isOnTheFly) { return UastHintedVisitorAdapter.create(holder.getFile().getLanguage(), new AbstractUastNonRecursiveVisitor() { @@ -91,6 +103,12 @@ public abstract class AbstractBaseUastLocalInspectionTool extends LocalInspectio return true; } + @Override + public boolean visitParameter(@NotNull UParameter node) { + addDescriptors(checkParameter(node, holder.getManager(), isOnTheFly)); + return true; + } + private void addDescriptors(final ProblemDescriptor[] descriptors) { if (descriptors != null) { for (ProblemDescriptor descriptor : descriptors) {