(no message)

This commit is contained in:
Dave Griffith
2005-02-01 17:43:46 +03:00
parent 25a1897793
commit f956b59ca1
9 changed files with 74 additions and 65 deletions
@@ -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);
}
}
@@ -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);
}
}
@@ -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();
@@ -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) {
@@ -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;
@@ -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)) {
@@ -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();
@@ -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;
}
@@ -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;
}