mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
merged CVS and Subversion versions
This commit is contained in:
+2
-2
@@ -74,7 +74,7 @@ public class InstanceVariableInitializationInspection extends FieldInspection {
|
||||
for (int i = 0; i < constructors.length; i++) {
|
||||
final PsiMethod constructor = constructors[i];
|
||||
final PsiCodeBlock body = constructor.getBody();
|
||||
if (!InitializationUtils.blockMustAssignVariable(field, body)) {
|
||||
if (!InitializationUtils.blockMustAssignVariableOrFail(field, body)) {
|
||||
registerFieldError(field);
|
||||
return;
|
||||
}
|
||||
@@ -89,7 +89,7 @@ public class InstanceVariableInitializationInspection extends FieldInspection {
|
||||
final PsiClassInitializer initializer = initializers[i];
|
||||
if (!initializer.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
final PsiCodeBlock body = initializer.getBody();
|
||||
if (InitializationUtils.blockMustAssignVariable(field, body)) {
|
||||
if (InitializationUtils.blockMustAssignVariableOrFail(field, body)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -12,6 +12,7 @@ import com.siyeh.ig.psiutils.InitializationReadUtils;
|
||||
import com.siyeh.ig.ui.SingleCheckboxOptionsPanel;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.List;
|
||||
|
||||
public class InstanceVariableUninitializedUseInspection
|
||||
extends FieldInspection {
|
||||
@@ -80,7 +81,7 @@ public class InstanceVariableUninitializedUseInspection
|
||||
}
|
||||
}
|
||||
|
||||
final java.util.List badReads = iru.getUninitializedReads();
|
||||
final List badReads = iru.getUninitializedReads();
|
||||
for (int i = 0; i < badReads.size(); i++) {
|
||||
final PsiElement element = (PsiElement) badReads.get(i);
|
||||
registerError(element);
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ public class StaticVariableInitializationInspection extends FieldInspection {
|
||||
final PsiClassInitializer initializer = initializers[i];
|
||||
if (initializer.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
final PsiCodeBlock body = initializer.getBody();
|
||||
if (InitializationUtils.blockMustAssignVariable(field, body)) {
|
||||
if (InitializationUtils.blockMustAssignVariableOrFail(field, body)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
+22
-26
@@ -9,7 +9,7 @@ import com.siyeh.ig.psiutils.ClassUtils;
|
||||
public class ThisEscapedInConstructorInspection extends ClassInspection {
|
||||
|
||||
public String getDisplayName() {
|
||||
return "'this' reference escaped in constructor";
|
||||
return "'this' reference escaped in object construction";
|
||||
}
|
||||
|
||||
public String getGroupDisplayName() {
|
||||
@@ -49,8 +49,8 @@ public class ThisEscapedInConstructorInspection extends ClassInspection {
|
||||
|
||||
super.visitNewExpression(psiNewExpression);
|
||||
|
||||
final PsiMember methodOrInitializer = checkConstructorOrInstanceInitializer(psiNewExpression);
|
||||
if (methodOrInitializer == null) {
|
||||
final boolean isInInitialization = checkForInitialization(psiNewExpression);
|
||||
if (!isInInitialization) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -82,8 +82,8 @@ public class ThisEscapedInConstructorInspection extends ClassInspection {
|
||||
|
||||
super.visitAssignmentExpression(assignment);
|
||||
|
||||
final PsiMember methodOrInitializer = checkConstructorOrInstanceInitializer(assignment);
|
||||
if (methodOrInitializer == null) {
|
||||
final boolean isInInitialization = checkForInitialization(assignment);
|
||||
if (!isInInitialization) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -121,8 +121,8 @@ public class ThisEscapedInConstructorInspection extends ClassInspection {
|
||||
public void visitMethodCallExpression(PsiMethodCallExpression call) {
|
||||
super.visitMethodCallExpression(call);
|
||||
|
||||
final PsiMember methodOrInitializer = checkConstructorOrInstanceInitializer(call);
|
||||
if (methodOrInitializer == null) {
|
||||
final boolean isInInitialization = checkForInitialization(call);
|
||||
if (!isInInitialization) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ public class ThisEscapedInConstructorInspection extends ClassInspection {
|
||||
}
|
||||
|
||||
final PsiClass calledMethodClass = calledMethod.getContainingClass();
|
||||
final PsiClass methodClass = methodOrInitializer.getContainingClass();
|
||||
final PsiClass methodClass = (PsiClass) PsiTreeUtil.getParentOfType(call, PsiClass.class);
|
||||
|
||||
if (calledMethodClass.equals(methodClass)) // compares class types statically?
|
||||
{
|
||||
@@ -196,27 +196,23 @@ public class ThisEscapedInConstructorInspection extends ClassInspection {
|
||||
|
||||
/**
|
||||
* @param call
|
||||
* @return null unless CallExpression is a Constructor or an Instance
|
||||
* Initializer. Otherwise it returns the PsiMember representing
|
||||
* the contructor/initializer
|
||||
* @return true if CallExpression is in a constructor, instance
|
||||
* initializer, or field initializaer. Otherwise it returns false
|
||||
*/
|
||||
private static PsiMember checkConstructorOrInstanceInitializer(PsiElement call) {
|
||||
private static boolean checkForInitialization(PsiElement call) {
|
||||
final PsiMethod method = (PsiMethod) PsiTreeUtil.getParentOfType(call, PsiMethod.class);
|
||||
PsiMember methodOrInitializer = method;
|
||||
if (method == null) {
|
||||
final PsiClassInitializer classInitializer = (PsiClassInitializer) PsiTreeUtil.getParentOfType(call, PsiClassInitializer.class);
|
||||
if (classInitializer == null) {
|
||||
return null;
|
||||
}
|
||||
if (classInitializer.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
return null;
|
||||
}
|
||||
methodOrInitializer = classInitializer;
|
||||
|
||||
} else if (!method.isConstructor()) {
|
||||
return null;
|
||||
if (method != null) {
|
||||
return method.isConstructor();
|
||||
}
|
||||
return methodOrInitializer;
|
||||
final PsiField field = (PsiField) PsiTreeUtil.getParentOfType(call, PsiField.class);
|
||||
if (field != null) {
|
||||
return true;
|
||||
}
|
||||
final PsiClassInitializer classInitializer = (PsiClassInitializer) PsiTreeUtil.getParentOfType(call, PsiClassInitializer.class);
|
||||
if (classInitializer != null) {
|
||||
return !classInitializer.hasModifierProperty(PsiModifier.STATIC);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// If there are more than two of 'this' as arguments, only marks the first until it is removed. No big deal.
|
||||
|
||||
Reference in New Issue
Block a user