Don't report local variables named 'ignored' as unused (IDEA-171371)

GitOrigin-RevId: 40ad31afd1cb58fcdd9c48ba9970508ec052b562
This commit is contained in:
Bas Leijdekkers
2022-05-10 23:33:07 +00:00
committed by intellij-monorepo-bot
parent 6498cab354
commit e29649134e
5 changed files with 10 additions and 2 deletions
@@ -261,7 +261,7 @@ class PostHighlightingVisitor {
@Nullable
private HighlightInfo processLocalVariable(@NotNull PsiLocalVariable variable,
@NotNull PsiIdentifier identifier) {
if (variable instanceof PsiResourceVariable && PsiUtil.isIgnoredName(variable.getName())) return null;
if (PsiUtil.isIgnoredName(variable.getName())) return null;
if (UnusedSymbolUtil.isImplicitUsage(myProject, variable)) return null;
String message = null;
@@ -16,6 +16,7 @@ import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.IndexNotReadyException;
import com.intellij.psi.*;
import com.intellij.psi.controlFlow.DefUseUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.ui.ScrollPaneFactory;
import com.intellij.ui.TitledSeparator;
import com.intellij.ui.components.JBLabel;
@@ -294,6 +295,7 @@ public final class UnusedDeclarationInspection extends UnusedDeclarationInspecti
for (DefUseUtil.Info varDefInfo : unusedDefs) {
PsiElement parent = varDefInfo.getContext();
PsiVariable variable = varDefInfo.getVariable();
if (PsiUtil.isIgnoredName(variable.getName())) continue;
if (parent instanceof PsiDeclarationStatement || parent instanceof PsiForeachStatement ||
variable instanceof PsiResourceVariable || variable instanceof PsiPatternVariable) {
if (!varDefInfo.isRead() && !SuppressionUtil.inspectionResultSuppressed(variable, UnusedDeclarationInspection.this)) {
@@ -49,7 +49,7 @@ public final class PsiUtil extends PsiUtilCore {
public static final int ACCESS_LEVEL_PRIVATE = 1;
public static final Key<Boolean> VALID_VOID_TYPE_IN_CODE_FRAGMENT = Key.create("VALID_VOID_TYPE_IN_CODE_FRAGMENT");
private static final Pattern IGNORED_NAMES = Pattern.compile("ignored?[A-Z]?[a-z]*\\d*");
private static final Pattern IGNORED_NAMES = Pattern.compile("ignored?[A-Za-z\\d]*");
private PsiUtil() {}
@@ -51,6 +51,11 @@ class PrivateClassTest {
}
}
void localVariables() {
String <warning descr="Variable 's' is never used">s</warning> = "unused";
String ignored = "unused but ignored";
}
class IncrementedButNeverAccessed {
private int <warning descr="Private field 'ffff' is assigned but never accessed">ffff</warning>;
@@ -16,5 +16,6 @@ class PatternVariables {
}
var strings = getStrings(); // strings unused
final boolean ignored = new java.io.File(args[1]).delete(); // don't warn on variables named 'ignored'
}
}