From 687fbec6b9cffdaf849e26d33f9dc484602eca4a Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 20 Jul 2017 18:17:46 +0200 Subject: [PATCH] IG: prevent warnings on broken/incomplete code (IDEA-176304) --- .../com/siyeh/ig/BaseInspectionVisitor.java | 114 ++++++------------ ...dConstructorInAbstractClassInspection.java | 11 -- ...ConstructorInAbstractClassInspection2.java | 11 -- ...onProtectedConstructorInAbstractClass.java | 13 ++ ...structorInAbstractClassInspectionTest.java | 36 ++++++ 5 files changed, 88 insertions(+), 97 deletions(-) delete mode 100644 plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/NonProtectedConstructorInAbstractClassInspection.java delete mode 100644 plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/NonProtectedConstructorInAbstractClassInspection2.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igtest/inheritance/non_protected_constructor_in_abstract_class/NonProtectedConstructorInAbstractClass.java create mode 100644 plugins/InspectionGadgets/testsrc/com/siyeh/ig/inheritance/NonProtectedConstructorInAbstractClassInspectionTest.java diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/BaseInspectionVisitor.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/BaseInspectionVisitor.java index a347b6c754f0..7b4dd6583d56 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/BaseInspectionVisitor.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/BaseInspectionVisitor.java @@ -43,27 +43,21 @@ public abstract class BaseInspectionVisitor extends JavaElementVisitor { return onTheFly; } - protected final void registerNewExpressionError( - @NotNull PsiNewExpression expression, Object... infos) { - final PsiJavaCodeReferenceElement classReference = - expression.getClassOrAnonymousClassReference(); + protected final void registerNewExpressionError(@NotNull PsiNewExpression expression, Object... infos) { + final PsiJavaCodeReferenceElement classReference = expression.getClassOrAnonymousClassReference(); if (classReference == null) { - registerError(expression, infos); - } - else { - registerError(classReference, infos); + return; } + registerError(classReference, infos); } protected final void registerMethodCallError(@NotNull PsiMethodCallExpression expression, @NonNls Object... infos) { final PsiReferenceExpression methodExpression = expression.getMethodExpression(); final PsiElement nameToken = methodExpression.getReferenceNameElement(); if (nameToken == null) { - registerError(expression, infos); - } - else { - registerError(nameToken, infos); + return; } + registerError(nameToken, infos); } protected final void registerStatementError(@NotNull PsiStatement statement, Object... infos) { @@ -77,8 +71,7 @@ public abstract class BaseInspectionVisitor extends JavaElementVisitor { } protected final void registerModuleError(@NotNull PsiJavaModule module, Object... infos) { - final PsiJavaModuleReferenceElement identifier = module.getNameIdentifier(); - registerError(identifier, infos); + registerError(module.getNameIdentifier(), infos); } protected final void registerClassError(@NotNull PsiClass aClass, Object... infos) { @@ -96,67 +89,40 @@ public abstract class BaseInspectionVisitor extends JavaElementVisitor { nameIdentifier = aClass.getNameIdentifier(); } if (nameIdentifier == null) { - registerError(aClass.getContainingFile(), infos); + return; } - else { - registerError(nameIdentifier, infos); - } - } - - protected final void registerMethodError(@NotNull PsiMethod method, - Object... infos) { - final PsiElement nameIdentifier = method.getNameIdentifier(); - if (nameIdentifier == null) { - final LocalQuickFix[] fixes = createAndInitFixes(infos); - final String description = inspection.buildErrorString(infos); - - final TextRange methodTextRange; - PsiCodeBlock body = method.getBody(); - if (body != null) { - methodTextRange = new TextRange(0, body.getStartOffsetInParent()); - } - else { - methodTextRange = new TextRange(0, method.getTextLength()); - } - - holder.registerProblem(method, methodTextRange, description, fixes); - } - else { - registerError(nameIdentifier, infos); - } - } - - protected final void registerVariableError(@NotNull PsiVariable variable, - Object... infos) { - final PsiElement nameIdentifier = variable.getNameIdentifier(); - if (nameIdentifier == null) { - registerError(variable, infos); - } - else { - registerError(nameIdentifier, infos); - } - } - - protected final void registerTypeParameterError( - @NotNull PsiTypeParameter typeParameter, Object... infos) { - final PsiElement nameIdentifier = typeParameter.getNameIdentifier(); - if (nameIdentifier == null) { - registerError(typeParameter, infos); - } - else { - registerError(nameIdentifier, infos); - } - } - - protected final void registerFieldError(@NotNull PsiField field, - Object... infos) { - final PsiElement nameIdentifier = field.getNameIdentifier(); registerError(nameIdentifier, infos); } - protected final void registerModifierError( - @NotNull String modifier, @NotNull PsiModifierListOwner parameter, - Object... infos) { + protected final void registerMethodError(@NotNull PsiMethod method, Object... infos) { + final PsiElement nameIdentifier = method.getNameIdentifier(); + if (nameIdentifier == null) { + return; + } + registerError(nameIdentifier, infos); + } + + protected final void registerVariableError(@NotNull PsiVariable variable, Object... infos) { + final PsiElement nameIdentifier = variable.getNameIdentifier(); + if (nameIdentifier == null) { + return; + } + registerError(nameIdentifier, infos); + } + + protected final void registerTypeParameterError(@NotNull PsiTypeParameter typeParameter, Object... infos) { + final PsiElement nameIdentifier = typeParameter.getNameIdentifier(); + if (nameIdentifier == null) { + return; + } + registerError(nameIdentifier, infos); + } + + protected final void registerFieldError(@NotNull PsiField field, Object... infos) { + registerError(field.getNameIdentifier(), infos); + } + + protected final void registerModifierError(@NotNull String modifier, @NotNull PsiModifierListOwner parameter, Object... infos) { final PsiModifierList modifiers = parameter.getModifierList(); if (modifiers == null) { return; @@ -170,8 +136,7 @@ public abstract class BaseInspectionVisitor extends JavaElementVisitor { } } - protected final void registerClassInitializerError( - @NotNull PsiClassInitializer initializer, Object... infos) { + protected final void registerClassInitializerError(@NotNull PsiClassInitializer initializer, Object... infos) { final PsiCodeBlock body = initializer.getBody(); final PsiJavaToken lBrace = body.getLBrace(); if (lBrace == null) { @@ -182,8 +147,7 @@ public abstract class BaseInspectionVisitor extends JavaElementVisitor { } } - protected final void registerError(@NotNull PsiElement location, - Object... infos) { + protected final void registerError(@NotNull PsiElement location, Object... infos) { registerError(location, ProblemHighlightType.GENERIC_ERROR_OR_WARNING, infos); } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/NonProtectedConstructorInAbstractClassInspection.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/NonProtectedConstructorInAbstractClassInspection.java deleted file mode 100644 index 8141d73a833f..000000000000 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/NonProtectedConstructorInAbstractClassInspection.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.siyeh.igtest.classlayout; - -public abstract class NonProtectedConstructorInAbstractClassInspection -{ - public NonProtectedConstructorInAbstractClassInspection() - { - } - private NonProtectedConstructorInAbstractClassInspection(int foo) - { - } -} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/NonProtectedConstructorInAbstractClassInspection2.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/NonProtectedConstructorInAbstractClassInspection2.java deleted file mode 100644 index 1573ec53efbc..000000000000 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/classlayout/NonProtectedConstructorInAbstractClassInspection2.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.siyeh.igtest.classlayout; - -public abstract class NonProtectedConstructorInAbstractClassInspection2 { - protected NonProtectedConstructorInAbstractClassInspection2() { - this(2); - } - - private NonProtectedConstructorInAbstractClassInspection2(int foo) { - super(); - } -} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/inheritance/non_protected_constructor_in_abstract_class/NonProtectedConstructorInAbstractClass.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/inheritance/non_protected_constructor_in_abstract_class/NonProtectedConstructorInAbstractClass.java new file mode 100644 index 000000000000..65f514a727ae --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/inheritance/non_protected_constructor_in_abstract_class/NonProtectedConstructorInAbstractClass.java @@ -0,0 +1,13 @@ +package com.siyeh.igtest.classlayout; + +public abstract class NonProtectedConstructorInAbstractClass +{ + public NonProtectedConstructorInAbstractClass() + { + } + private NonProtectedConstructorInAbstractClass(int foo) + { + } + + public void(); +} diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/inheritance/NonProtectedConstructorInAbstractClassInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/inheritance/NonProtectedConstructorInAbstractClassInspectionTest.java new file mode 100644 index 000000000000..82272202d5ec --- /dev/null +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/inheritance/NonProtectedConstructorInAbstractClassInspectionTest.java @@ -0,0 +1,36 @@ +/* + * Copyright 2000-2017 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.inheritance; + +import com.intellij.codeInspection.InspectionProfileEntry; +import com.siyeh.ig.LightInspectionTestCase; +import org.jetbrains.annotations.Nullable; + +/** + * @author Bas Leijdekkers + */ +public class NonProtectedConstructorInAbstractClassInspectionTest extends LightInspectionTestCase { + + public void testNonProtectedConstructorInAbstractClass() { + doTest(); + } + + @Nullable + @Override + protected InspectionProfileEntry getInspection() { + return new NonProtectedConstructorInAbstractClassInspection(); + } +} \ No newline at end of file