From b6fbbb649d59f7b414d9b606a3909290fb626d08 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 10 Oct 2013 17:29:11 +0400 Subject: [PATCH] moved to analysis --- .../PublicConstructorInspectionBase.java | 101 ++++++++++++++++++ .../PublicConstructorInspection.java | 84 +-------------- 2 files changed, 106 insertions(+), 79 deletions(-) create mode 100644 plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/PublicConstructorInspectionBase.java diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/PublicConstructorInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/PublicConstructorInspectionBase.java new file mode 100644 index 000000000000..ef9c1fbcebea --- /dev/null +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/PublicConstructorInspectionBase.java @@ -0,0 +1,101 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.siyeh.ig.classlayout; + +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiMethod; +import com.intellij.psi.PsiModifier; +import com.intellij.psi.PsiParameterList; +import com.siyeh.InspectionGadgetsBundle; +import com.siyeh.ig.BaseInspection; +import com.siyeh.ig.BaseInspectionVisitor; +import com.siyeh.ig.psiutils.SerializationUtils; +import org.jetbrains.annotations.Nls; +import org.jetbrains.annotations.NotNull; + +public class PublicConstructorInspectionBase extends BaseInspection { + @Nls + @NotNull + @Override + public String getDisplayName() { + return InspectionGadgetsBundle.message("public.constructor.display.name"); + } + + @NotNull + @Override + protected String buildErrorString(Object... infos) { + if (((Boolean)infos[0]).booleanValue()) { + return InspectionGadgetsBundle.message("public.default.constructor.problem.descriptor"); + } + else { + return InspectionGadgetsBundle.message("public.constructor.problem.descriptor"); + } + } + + @Override + protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { + return true; + } + + @Override + public BaseInspectionVisitor buildVisitor() { + return new PublicConstructorVisitor(); + } + + private static class PublicConstructorVisitor extends BaseInspectionVisitor { + + @Override + public void visitMethod(PsiMethod method) { + super.visitMethod(method); + if (!method.isConstructor()) { + return; + } + if (!method.hasModifierProperty(PsiModifier.PUBLIC)) { + return; + } + 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; + } + } + registerMethodError(method, Boolean.FALSE); + } + + @Override + public void visitClass(PsiClass aClass) { + super.visitClass(aClass); + if (aClass.isInterface() || aClass.isEnum()) { + return; + } + if (!aClass.hasModifierProperty(PsiModifier.PUBLIC) || aClass.hasModifierProperty(PsiModifier.ABSTRACT)) { + return; + } + final PsiMethod[] constructors = aClass.getConstructors(); + if (constructors.length > 0) { + return; + } + if (SerializationUtils.isExternalizable(aClass)) { + return; + } + registerClassError(aClass, Boolean.TRUE); + } + } +} diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/PublicConstructorInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/PublicConstructorInspection.java index 400dc80e7114..08aec6c5ab5f 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/PublicConstructorInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/PublicConstructorInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,47 +21,22 @@ import com.intellij.ide.DataManager; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.AsyncResult; -import com.intellij.psi.*; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiMethod; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.refactoring.JavaRefactoringActionHandlerFactory; import com.intellij.refactoring.RefactoringActionHandler; import com.intellij.util.IncorrectOperationException; import com.siyeh.InspectionGadgetsBundle; -import com.siyeh.ig.BaseInspection; -import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; -import com.siyeh.ig.psiutils.SerializationUtils; -import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * @author Bas Leijdekkers */ -public class PublicConstructorInspection extends BaseInspection { - - @Nls - @NotNull - @Override - public String getDisplayName() { - return InspectionGadgetsBundle.message("public.constructor.display.name"); - } - - @NotNull - @Override - protected String buildErrorString(Object... infos) { - if (((Boolean)infos[0]).booleanValue()) { - return InspectionGadgetsBundle.message("public.default.constructor.problem.descriptor"); - } - else { - return InspectionGadgetsBundle.message("public.constructor.problem.descriptor"); - } - } - - @Override - protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { - return true; - } +public class PublicConstructorInspection extends PublicConstructorInspectionBase { @Nullable @Override @@ -97,53 +72,4 @@ public class PublicConstructorInspection extends BaseInspection { }); } } - - @Override - public BaseInspectionVisitor buildVisitor() { - return new PublicConstructorVisitor(); - } - - private static class PublicConstructorVisitor extends BaseInspectionVisitor { - - @Override - public void visitMethod(PsiMethod method) { - super.visitMethod(method); - if (!method.isConstructor()) { - return; - } - if (!method.hasModifierProperty(PsiModifier.PUBLIC)) { - return; - } - 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; - } - } - registerMethodError(method, Boolean.FALSE); - } - - @Override - public void visitClass(PsiClass aClass) { - super.visitClass(aClass); - if (aClass.isInterface() || aClass.isEnum()) { - return; - } - if (!aClass.hasModifierProperty(PsiModifier.PUBLIC) || aClass.hasModifierProperty(PsiModifier.ABSTRACT)) { - return; - } - final PsiMethod[] constructors = aClass.getConstructors(); - if (constructors.length > 0) { - return; - } - if (SerializationUtils.isExternalizable(aClass)) { - return; - } - registerClassError(aClass, Boolean.TRUE); - } - } }