mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
[java-inspections] SystemRunFinalizersOnExitInspection simplified, enabled by default
GitOrigin-RevId: cbc643ba09e2052b3f67b444fa62be3e5c2df38a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
06dd3abbb4
commit
c690ae67fc
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user