diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/AssignmentUsedAsConditionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/AssignmentUsedAsConditionInspection.java index 38da1f7b55ea..5edde672719c 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/AssignmentUsedAsConditionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/AssignmentUsedAsConditionInspection.java @@ -5,6 +5,7 @@ import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.psi.*; import com.intellij.openapi.project.Project; import com.siyeh.ig.*; +import com.siyeh.ig.psiutils.WellFormednessUtils; public class AssignmentUsedAsConditionInspection extends ExpressionInspection { private final AssignmentUsedAsConditionFix fix = new AssignmentUsedAsConditionFix(); @@ -51,14 +52,18 @@ public class AssignmentUsedAsConditionInspection extends ExpressionInspection { public void visitAssignmentExpression(PsiAssignmentExpression expression) { super.visitAssignmentExpression(expression); + if(!WellFormednessUtils.isWellFormed(expression)){ + return; + } final PsiJavaToken sign = expression.getOperationSign(); if (sign == null) { return; } - if (!sign.getTokenType().equals(JavaTokenType.EQ)) { + final PsiElement parent = expression.getParent(); + if(parent == null) + { return; } - final PsiElement parent = expression.getParent(); if (parent instanceof PsiIfStatement) { checkIfStatementCondition((PsiIfStatement) parent, expression); } @@ -75,28 +80,28 @@ public class AssignmentUsedAsConditionInspection extends ExpressionInspection { private void checkIfStatementCondition(PsiIfStatement ifStatement, PsiAssignmentExpression expression) { final PsiExpression condition = ifStatement.getCondition(); - if (condition != null && condition.equals(expression)) { + if (expression.equals(condition)) { registerError(expression); } } private void checkDoWhileStatementCondition(PsiDoWhileStatement doWhileStatement, PsiAssignmentExpression expression) { final PsiExpression condition = doWhileStatement.getCondition(); - if (condition != null && condition.equals(expression)) { + if(expression.equals(condition)){ registerError(expression); } } private void checkForStatementCondition(PsiForStatement forStatement, PsiAssignmentExpression expression) { final PsiExpression condition = forStatement.getCondition(); - if (condition != null && condition.equals(expression)) { + if(expression.equals(condition)){ registerError(expression); } } private void checkWhileStatementCondition(PsiWhileStatement whileStatement, PsiAssignmentExpression expression) { final PsiExpression condition = whileStatement.getCondition(); - if (condition != null && condition.equals(expression)) { + if(expression.equals(condition)){ registerError(expression); } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/ComparisonOfShortAndCharInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/ComparisonOfShortAndCharInspection.java index 826406cf9d88..f358ec355171 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/ComparisonOfShortAndCharInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/ComparisonOfShortAndCharInspection.java @@ -10,43 +10,54 @@ import com.siyeh.ig.ExpressionInspection; import com.siyeh.ig.GroupNames; import com.siyeh.ig.psiutils.ComparisonUtils; import com.siyeh.ig.psiutils.TypeUtils; +import com.siyeh.ig.psiutils.WellFormednessUtils; -public class ComparisonOfShortAndCharInspection extends ExpressionInspection { +public class ComparisonOfShortAndCharInspection extends ExpressionInspection{ - public String getDisplayName() { + public String getDisplayName(){ return "Comparison of short and char values"; } - public String getGroupDisplayName() { + public String getGroupDisplayName(){ return GroupNames.BUGS_GROUP_NAME; } - public String buildErrorString(PsiElement location) { + public String buildErrorString(PsiElement location){ return "Equality comparison (#ref) of short and char values #loc"; } - public BaseInspectionVisitor createVisitor(InspectionManager inspectionManager, boolean onTheFly) { - return new ComparisonOfShortAndCharVisitor(this, inspectionManager, onTheFly); + public BaseInspectionVisitor createVisitor( + InspectionManager inspectionManager, boolean onTheFly){ + return new ComparisonOfShortAndCharVisitor(this, inspectionManager, + onTheFly); } - private static class ComparisonOfShortAndCharVisitor extends BaseInspectionVisitor { + private static class ComparisonOfShortAndCharVisitor + extends BaseInspectionVisitor{ private static final String SHORT = "short"; private static final String CHAR = "char"; - private ComparisonOfShortAndCharVisitor(BaseInspection inspection, InspectionManager inspectionManager, boolean isOnTheFly) { + private ComparisonOfShortAndCharVisitor(BaseInspection inspection, + InspectionManager inspectionManager, + boolean isOnTheFly){ super(inspection, inspectionManager, isOnTheFly); } - public void visitBinaryExpression(PsiBinaryExpression expression) { + public void visitBinaryExpression(PsiBinaryExpression expression){ super.visitBinaryExpression(expression); - if (!ComparisonUtils.isEqualityComparison(expression)) { + if(!WellFormednessUtils.isWellFormed(expression)){ + return; + } + if(!ComparisonUtils.isEqualityComparison(expression)){ return; } final PsiExpression lhs = expression.getLOperand(); final PsiExpression rhs = expression.getROperand(); - if (TypeUtils.expressionHasType(SHORT, lhs) && TypeUtils.expressionHasType(CHAR, rhs)) { + if(TypeUtils.expressionHasType(SHORT, lhs) && + TypeUtils.expressionHasType(CHAR, rhs)){ registerError(expression); - } else if (TypeUtils.expressionHasType(CHAR, lhs) && TypeUtils.expressionHasType(SHORT, rhs)) { + } else if(TypeUtils.expressionHasType(CHAR, lhs) && + TypeUtils.expressionHasType(SHORT, rhs)){ registerError(expression); } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/FloatingPointEqualityInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/FloatingPointEqualityInspection.java index 711e43bd951f..5a1ea2c0c6f3 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/FloatingPointEqualityInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/FloatingPointEqualityInspection.java @@ -1,12 +1,16 @@ package com.siyeh.ig.bugs; import com.intellij.codeInspection.InspectionManager; -import com.intellij.psi.*; -import com.intellij.psi.tree.IElementType; +import com.intellij.psi.PsiBinaryExpression; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiExpression; +import com.intellij.psi.PsiType; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.ExpressionInspection; import com.siyeh.ig.GroupNames; +import com.siyeh.ig.psiutils.ComparisonUtils; +import com.siyeh.ig.psiutils.WellFormednessUtils; public class FloatingPointEqualityInspection extends ExpressionInspection { @@ -33,13 +37,11 @@ public class FloatingPointEqualityInspection extends ExpressionInspection { public void visitBinaryExpression(PsiBinaryExpression expression) { super.visitBinaryExpression(expression); - final PsiJavaToken sign = expression.getOperationSign(); - if (sign == null) { + if(!WellFormednessUtils.isWellFormed(expression)){ return; } - final IElementType tokenType = sign.getTokenType(); - if (!(tokenType.equals(JavaTokenType.EQEQ) || - tokenType.equals(JavaTokenType.NE))) { + if(!ComparisonUtils.isEqualityComparison(expression)) + { return; } final PsiExpression lhs = expression.getLOperand(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/IncompatibleMaskInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/IncompatibleMaskInspection.java index 679ad205d17c..ed0be9be6742 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/IncompatibleMaskInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/IncompatibleMaskInspection.java @@ -9,6 +9,8 @@ import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.ExpressionInspection; import com.siyeh.ig.GroupNames; +import com.siyeh.ig.psiutils.WellFormednessUtils; +import com.siyeh.ig.psiutils.ComparisonUtils; public class IncompatibleMaskInspection extends ExpressionInspection { @@ -44,18 +46,16 @@ public class IncompatibleMaskInspection extends ExpressionInspection { public void visitBinaryExpression(PsiBinaryExpression expression) { super.visitBinaryExpression(expression); + if(!WellFormednessUtils.isWellFormed(expression)){ + return; + } + if(!ComparisonUtils.isEqualityComparison(expression)){ + return; + } final PsiType expressionType = expression.getType(); if (expressionType == null) { return; } - final PsiJavaToken sign = expression.getOperationSign(); - if (sign == null) { - return; - } - final IElementType tokenType = sign.getTokenType(); - if (!tokenType.equals(JavaTokenType.EQEQ) && !tokenType.equals(JavaTokenType.NE)) { - return; - } final PsiExpression rhs = expression.getROperand(); final PsiExpression strippedRhs = stripExpression(rhs); if (strippedRhs == null) { diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/IntegerDivisionInFloatingPointContextInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/IntegerDivisionInFloatingPointContextInspection.java index d16234237f7e..ea943e091a92 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/IntegerDivisionInFloatingPointContextInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/IntegerDivisionInFloatingPointContextInspection.java @@ -8,9 +8,10 @@ import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.ExpressionInspection; import com.siyeh.ig.GroupNames; import com.siyeh.ig.psiutils.ExpectedTypeUtils; +import com.siyeh.ig.psiutils.WellFormednessUtils; -import java.util.Set; import java.util.HashSet; +import java.util.Set; public class IntegerDivisionInFloatingPointContextInspection extends ExpressionInspection { private static final Set s_integralTypes = new HashSet(10); @@ -52,26 +53,20 @@ public class IntegerDivisionInFloatingPointContextInspection extends ExpressionI public void visitBinaryExpression(PsiBinaryExpression expression) { super.visitBinaryExpression(expression); - final PsiJavaToken sign = expression.getOperationSign(); - if (sign == null) { + if(!WellFormednessUtils.isWellFormed(expression)){ return; } + final PsiJavaToken sign = expression.getOperationSign(); final IElementType tokenType = sign.getTokenType(); if (!tokenType.equals(JavaTokenType.DIV)) { return; } final PsiExpression lhs = expression.getLOperand(); - if (lhs == null) { - return; - } final PsiType lhsType = lhs.getType(); if (!isIntegral(lhsType)) { return; } final PsiExpression rhs = expression.getROperand(); - if (rhs == null) { - return; - } final PsiType rhsType = rhs.getType(); if (!isIntegral(rhsType)) { return; diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/NonShortCircuitBooleanInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/NonShortCircuitBooleanInspection.java index 0386ca17b849..390380da9181 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/NonShortCircuitBooleanInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/NonShortCircuitBooleanInspection.java @@ -6,6 +6,7 @@ import com.intellij.psi.*; import com.intellij.psi.tree.IElementType; import com.intellij.openapi.project.Project; import com.siyeh.ig.*; +import com.siyeh.ig.psiutils.WellFormednessUtils; public class NonShortCircuitBooleanInspection extends ExpressionInspection { private final InspectionGadgetsFix fix = new NonShortCircuitBooleanFix(); @@ -67,10 +68,11 @@ public class NonShortCircuitBooleanInspection extends ExpressionInspection { public void visitBinaryExpression(PsiBinaryExpression expression) { super.visitBinaryExpression(expression); - final PsiJavaToken sign = expression.getOperationSign(); - if (sign == null) { + if(!WellFormednessUtils.isWellFormed(expression)){ return; } + + final PsiJavaToken sign = expression.getOperationSign(); final IElementType tokenType = sign.getTokenType(); if (!tokenType.equals(JavaTokenType.AND) && !tokenType.equals(JavaTokenType.OR)) { diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/OctalAndDecimalIntegersMixedInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/OctalAndDecimalIntegersMixedInspection.java index d846dc36e575..9e2847095596 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/OctalAndDecimalIntegersMixedInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/OctalAndDecimalIntegersMixedInspection.java @@ -54,11 +54,8 @@ public class OctalAndDecimalIntegersMixedInspection extends ExpressionInspection private static boolean isDecimalLiteral(PsiLiteralExpression literal) { final PsiType type = literal.getType(); - if (type == null) { - return false; - } - if (!type.equals(PsiType.INT) && - !type.equals(PsiType.LONG)) { + if (!PsiType.INT.equals(type) && + !PsiType.LONG.equals(type)) { return false; } final String text = literal.getText(); @@ -70,11 +67,7 @@ public class OctalAndDecimalIntegersMixedInspection extends ExpressionInspection private static boolean isOctalLiteral(PsiLiteralExpression literal) { final PsiType type = literal.getType(); - if (type == null) { - return false; - } - if (!(type.equals(PsiType.INT) - || type.equals(PsiType.LONG))) { + if (!PsiType.INT.equals(type) && !PsiType.LONG.equals(type)) { return false; } final String text = literal.getText(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/StringEqualityInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/StringEqualityInspection.java index 4c8e30de6389..b1c88ae83b21 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/StringEqualityInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/StringEqualityInspection.java @@ -4,11 +4,9 @@ import com.intellij.codeInspection.InspectionManager; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.tree.IElementType; import com.siyeh.ig.*; -import com.siyeh.ig.psiutils.ClassUtils; -import com.siyeh.ig.psiutils.ComparisonUtils; -import com.siyeh.ig.psiutils.ParenthesesUtils; -import com.siyeh.ig.psiutils.TypeUtils; +import com.siyeh.ig.psiutils.*; public class StringEqualityInspection extends ExpressionInspection { private final EqualityToEqualsFix fix = new EqualityToEqualsFix(); @@ -44,18 +42,14 @@ public class StringEqualityInspection extends ExpressionInspection { final PsiBinaryExpression expression = (PsiBinaryExpression) comparisonToken.getParent(); final PsiJavaToken sign = expression.getOperationSign(); - if (!(sign.getTokenType() != JavaTokenType.NE)) { + final IElementType tokenType = sign.getTokenType(); + if (tokenType.equals(JavaTokenType.NE)) { negated = true; } final PsiExpression lhs = expression.getLOperand(); - if (lhs == null) { - return; - } final PsiExpression strippedLhs = ParenthesesUtils.stripParentheses(lhs); final PsiExpression rhs = expression.getROperand(); - if (rhs == null) { - return; - } + final PsiExpression strippedRhs = ParenthesesUtils.stripParentheses(rhs); final String expString; @@ -81,6 +75,9 @@ public class StringEqualityInspection extends ExpressionInspection { public void visitBinaryExpression(PsiBinaryExpression expression) { super.visitBinaryExpression(expression); + if(!WellFormednessUtils.isWellFormed(expression)){ + return; + } if (!ComparisonUtils.isEqualityComparison(expression)) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/SubtractionInCompareToInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/SubtractionInCompareToInspection.java index 35d37fb95049..d98cd253b385 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/SubtractionInCompareToInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/SubtractionInCompareToInspection.java @@ -9,6 +9,7 @@ import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.ExpressionInspection; import com.siyeh.ig.GroupNames; import com.siyeh.ig.psiutils.TypeUtils; +import com.siyeh.ig.psiutils.WellFormednessUtils; public class SubtractionInCompareToInspection extends ExpressionInspection { @@ -35,6 +36,9 @@ public class SubtractionInCompareToInspection extends ExpressionInspection { public void visitBinaryExpression(PsiBinaryExpression exp) { super.visitBinaryExpression(exp); + if(!WellFormednessUtils.isWellFormed(exp)){ + return; + } if (!isSubtraction(exp)) { return; }