[java-inspections] SystemRunFinalizersOnExitInspection simplified, enabled by default

GitOrigin-RevId: cbc643ba09e2052b3f67b444fa62be3e5c2df38a
This commit is contained in:
Tagir Valeev
2021-03-26 12:04:51 +07:00
committed by intellij-monorepo-bot
parent 06dd3abbb4
commit c690ae67fc
2 changed files with 18 additions and 38 deletions

View File

@@ -15,18 +15,17 @@
*/
package com.siyeh.ig.threading;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiMethod;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiMethodCallExpression;
import com.intellij.psi.PsiReferenceExpression;
import com.intellij.psi.util.PsiUtil;
import com.siyeh.InspectionGadgetsBundle;
import com.siyeh.ig.BaseInspection;
import com.siyeh.ig.BaseInspectionVisitor;
import org.jetbrains.annotations.NonNls;
import com.siyeh.ig.callMatcher.CallMatcher;
import org.jetbrains.annotations.NotNull;
public class SystemRunFinalizersOnExitInspection extends BaseInspection {
@Override
@NotNull
public String getID() {
@@ -40,46 +39,27 @@ public class SystemRunFinalizersOnExitInspection extends BaseInspection {
"system.run.finalizers.on.exit.problem.descriptor");
}
@Override
public boolean shouldInspect(PsiFile file) {
// The method was removed in JDK 11
return PsiUtil.getLanguageLevel(file).isLessThan(LanguageLevel.JDK_11);
}
@Override
public BaseInspectionVisitor buildVisitor() {
return new SystemRunFinalizersOnExitVisitor();
}
private static class SystemRunFinalizersOnExitVisitor
extends BaseInspectionVisitor {
private static class SystemRunFinalizersOnExitVisitor extends BaseInspectionVisitor {
private static final CallMatcher RUN_FINALIZERS_ON_EXIT = CallMatcher.anyOf(
CallMatcher.staticCall("java.lang.System", "runFinalizersOnExit"),
CallMatcher.staticCall("java.lang.Runtime", "runFinalizersOnExit"));
@Override
public void visitMethodCallExpression(
@NotNull PsiMethodCallExpression expression) {
super.visitMethodCallExpression(expression);
if (!isRunFinalizersOnExit(expression)) {
return;
public void visitMethodCallExpression(@NotNull PsiMethodCallExpression call) {
if (RUN_FINALIZERS_ON_EXIT.test(call)) {
registerMethodCallError(call);
}
registerMethodCallError(expression);
}
private static boolean isRunFinalizersOnExit(
PsiMethodCallExpression expression) {
final PsiReferenceExpression methodExpression =
expression.getMethodExpression();
final String methodName = methodExpression.getReferenceName();
@NonNls final String runFinalizers = "runFinalizersOnExit";
if (!runFinalizers.equals(methodName)) {
return false;
}
final PsiMethod method = expression.resolveMethod();
if (method == null) {
return false;
}
final PsiClass aClass = method.getContainingClass();
if (aClass == null) {
return false;
}
final String className = aClass.getQualifiedName();
if (className == null) {
return false;
}
return "java.lang.System".equals(className);
}
}
}

View File

@@ -2634,7 +2634,7 @@
level="WARNING" implementationClass="com.siyeh.ig.threading.SynchronizedMethodInspection"/>
<localInspection groupPath="Java" language="JAVA" suppressId="CallToSystemRunFinalizersOnExit" shortName="SystemRunFinalizersOnExit"
bundle="messages.InspectionGadgetsBundle" key="system.run.finalizers.on.exit.display.name"
groupBundle="messages.InspectionsBundle" groupKey="group.names.threading.issues" enabledByDefault="false"
groupBundle="messages.InspectionsBundle" groupKey="group.names.threading.issues" enabledByDefault="true"
level="WARNING" implementationClass="com.siyeh.ig.threading.SystemRunFinalizersOnExitInspection"/>
<localInspection groupPath="Java" language="JAVA" shortName="ThreadLocalNotStaticFinal" bundle="messages.InspectionGadgetsBundle"
key="thread.local.not.static.final.display.name" groupBundle="messages.InspectionsBundle"