merged CVS and Subversion versions

This commit is contained in:
Eugene Zhuravlev
2005-01-13 15:55:34 +03:00
parent b4bbaca0b4
commit 26f4fbf9a8
4 changed files with 46 additions and 46 deletions
@@ -25,11 +25,11 @@ public class NonSerializableWithSerialVersionUIDFieldInspection extends ClassIns
}
public BaseInspectionVisitor createVisitor(InspectionManager inspectionManager, boolean onTheFly) {
return new SerializableDefinesSerialVersionUIDVisitor(this, inspectionManager, onTheFly);
return new NonSerializableWithSerialVersionUIDVisitor(this, inspectionManager, onTheFly);
}
private static class SerializableDefinesSerialVersionUIDVisitor extends BaseInspectionVisitor {
private SerializableDefinesSerialVersionUIDVisitor(BaseInspection inspection,
private static class NonSerializableWithSerialVersionUIDVisitor extends BaseInspectionVisitor {
private NonSerializableWithSerialVersionUIDVisitor(BaseInspection inspection,
InspectionManager inspectionManager, boolean isOnTheFly) {
super(inspection, inspectionManager, isOnTheFly);
}
@@ -63,7 +63,7 @@ public class ReadObjectInitializationInspection extends FieldInspection {
return true;
}
final PsiCodeBlock body = method.getBody();
return InitializationUtils.blockMustAssignVariable(field, body);
return InitializationUtils.blockMustAssignVariableOrFail(field, body);
}
}
@@ -1,20 +1,17 @@
package com.siyeh.ig.serialization;
import com.intellij.codeInspection.InspectionManager;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.util.IncorrectOperationException;
import com.siyeh.ig.*;
import com.siyeh.ig.BaseInspection;
import com.siyeh.ig.BaseInspectionVisitor;
import com.siyeh.ig.ClassInspection;
import com.siyeh.ig.GroupNames;
import com.siyeh.ig.psiutils.SerializationUtils;
public class SerialVersionUIDNotStaticFinalInspection extends ClassInspection {
private static final Logger s_logger = Logger.getInstance("SerialVersionUIDNotStaticFinalInspection");
private final MakeStaticFinalFix fix = new MakeStaticFinalFix();
public String getDisplayName() {
return "'serialVersionUID' field not declared 'static final'";
return "'serialVersionUID' field not declared 'private static final long'";
}
public String getGroupDisplayName() {
@@ -22,39 +19,13 @@ public class SerialVersionUIDNotStaticFinalInspection extends ClassInspection {
}
public String buildErrorString(PsiElement location) {
return "#ref field of a Serializable class is not declared 'static' and 'final' #loc ";
return "#ref field of a Serializable class is not declared 'private static final long' #loc ";
}
public BaseInspectionVisitor createVisitor(InspectionManager inspectionManager, boolean onTheFly) {
return new SerializableDefinesSerialVersionUIDVisitor(this, inspectionManager, onTheFly);
}
public InspectionGadgetsFix buildFix(PsiElement location) {
return fix;
}
private static class MakeStaticFinalFix extends InspectionGadgetsFix {
public String getName() {
return "Make 'static final'";
}
public void applyFix(Project project, ProblemDescriptor descriptor) {
try {
final PsiElement fieldNameToken = descriptor.getPsiElement();
final PsiField field = (PsiField) fieldNameToken.getParent();
final PsiModifierList modifiers = field.getModifierList();
if (!modifiers.hasModifierProperty(PsiModifier.STATIC)) {
modifiers.setModifierProperty(PsiModifier.STATIC, true);
}
if (!modifiers.hasModifierProperty(PsiModifier.FINAL)) {
modifiers.setModifierProperty(PsiModifier.FINAL, true);
}
} catch (IncorrectOperationException e) {
s_logger.error(e);
}
}
}
private static class SerializableDefinesSerialVersionUIDVisitor extends BaseInspectionVisitor {
private SerializableDefinesSerialVersionUIDVisitor(BaseInspection inspection,
InspectionManager inspectionManager, boolean isOnTheFly) {
@@ -74,8 +45,14 @@ public class SerialVersionUIDNotStaticFinalInspection extends ClassInspection {
final PsiField field = fields[i];
if (isSerialVersionUID(field)) {
if (!field.hasModifierProperty(PsiModifier.STATIC) ||
!field.hasModifierProperty(PsiModifier.PRIVATE) ||
!field.hasModifierProperty(PsiModifier.FINAL)) {
registerFieldError(field);
} else {
final PsiType type = field.getType();
if (PsiType.LONG.equals(type)) {
registerFieldError(field);
}
}
}
}
@@ -1,13 +1,11 @@
package com.siyeh.ig.serialization;
import com.intellij.codeInspection.InspectionManager;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiField;
import com.siyeh.ig.BaseInspection;
import com.siyeh.ig.BaseInspectionVisitor;
import com.siyeh.ig.ClassInspection;
import com.siyeh.ig.GroupNames;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.psi.*;
import com.intellij.util.IncorrectOperationException;
import com.intellij.openapi.project.Project;
import com.siyeh.ig.*;
import com.siyeh.ig.psiutils.SerializationUtils;
import com.siyeh.ig.ui.SingleCheckboxOptionsPanel;
@@ -15,6 +13,7 @@ import javax.swing.*;
public class SerializableHasSerialVersionUIDFieldInspection extends ClassInspection {
public boolean m_ignoreSerializableDueToInheritance = true;
private final AddSerialVersionUIDFix fix = new AddSerialVersionUIDFix();
public String getDisplayName() {
return "Serializable class without serialVersionUID";
@@ -28,6 +27,30 @@ public class SerializableHasSerialVersionUIDFieldInspection extends ClassInspect
return "#ref doesn't define a serialVersionUID field #loc";
}
protected InspectionGadgetsFix buildFix(PsiElement location) {
return fix;
}
private static class AddSerialVersionUIDFix extends InspectionGadgetsFix {
public String getName() {
return "Add serialVersionUIDField";
}
public void applyFix(Project project, ProblemDescriptor problemDescriptor) {
final PsiElement classIdentifier = problemDescriptor.getPsiElement();
final PsiElement aClass = classIdentifier.getParent();
try {
final PsiManager psiManager = aClass.getManager();
final PsiElementFactory elementFactory = psiManager.getElementFactory();
final long serialVersionUID = 1;
final PsiField field = elementFactory.createFieldFromText("private static final long serialVersionUID = "+ serialVersionUID+"L;", aClass);
aClass.add(field);
} catch (IncorrectOperationException e) {
e.printStackTrace();
}
}
}
public JComponent createOptionsPanel() {
return new SingleCheckboxOptionsPanel("Ignore classes serializable due to inheritance",
this, "m_ignoreSerializableDueToInheritance");