From ca8c23d891adbb1af15a81ec0e87b5073a08bbca Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Tue, 15 Jan 2013 17:37:22 +0100 Subject: [PATCH] IDEA-97384 (Replace constructor with factory method inspection shall have an option so can be ignored on abstract classes) --- .../ig/classlayout/PublicConstructorInspection.java | 13 +++++++++++-- .../public_constructor/PublicConstructor.java | 3 +++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/PublicConstructorInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/PublicConstructorInspection.java index dcdd38ca5934..9ef67e948788 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/PublicConstructorInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/PublicConstructorInspection.java @@ -58,6 +58,11 @@ public class PublicConstructorInspection extends BaseInspection { } } + @Override + protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { + return true; + } + @Nullable @Override protected InspectionGadgetsFix buildFix(Object... infos) { @@ -103,7 +108,11 @@ public class PublicConstructorInspection extends BaseInspection { if (!method.hasModifierProperty(PsiModifier.PUBLIC)) { return; } - if (SerializationUtils.isExternalizable(method.getContainingClass())) { + final PsiClass aClass = method.getContainingClass(); + if (aClass == null || aClass.hasModifierProperty(PsiModifier.ABSTRACT)) { + return; + } + if (SerializationUtils.isExternalizable(aClass)) { final PsiParameterList parameterList = method.getParameterList(); if (parameterList.getParametersCount() == 0) { return; @@ -118,7 +127,7 @@ public class PublicConstructorInspection extends BaseInspection { if (aClass.isInterface() || aClass.isEnum()) { return; } - if (!aClass.hasModifierProperty(PsiModifier.PUBLIC)) { + if (!aClass.hasModifierProperty(PsiModifier.PUBLIC) || aClass.hasModifierProperty(PsiModifier.ABSTRACT)) { return; } final PsiMethod[] constructors = aClass.getConstructors(); diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/public_constructor/PublicConstructor.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/public_constructor/PublicConstructor.java index cfb0d7ffdf3a..35a177b86a7b 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/public_constructor/PublicConstructor.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/public_constructor/PublicConstructor.java @@ -6,4 +6,7 @@ abstract class X implements java.io.Externalizable { } class Y { public Y() {} +} +abstract class Z { + public Z() {} } \ No newline at end of file