mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEADEV-41208 ("Contstant on left side of comparison" inspection doesn't treat "null" as constant)
This commit is contained in:
+19
-9
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2003-2007 Dave Griffith, Bas Leijdekkers
|
||||
* Copyright 2003-2009 Dave Griffith, Bas Leijdekkers
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -27,6 +27,7 @@ import com.siyeh.ig.BaseInspection;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
import com.siyeh.ig.InspectionGadgetsFix;
|
||||
import com.siyeh.ig.psiutils.ComparisonUtils;
|
||||
import com.siyeh.ig.psiutils.ExpressionUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ConstantOnLHSOfComparisonInspection extends BaseInspection {
|
||||
@@ -68,16 +69,20 @@ public class ConstantOnLHSOfComparisonInspection extends BaseInspection {
|
||||
final PsiBinaryExpression expression =
|
||||
(PsiBinaryExpression) descriptor.getPsiElement();
|
||||
final PsiExpression rhs = expression.getROperand();
|
||||
final PsiExpression lhs = expression.getLOperand();
|
||||
if (rhs == null) {
|
||||
return;
|
||||
}
|
||||
final PsiJavaToken sign = expression.getOperationSign();
|
||||
final String flippedSign =
|
||||
final String flippedComparison =
|
||||
ComparisonUtils.getFlippedComparison(sign);
|
||||
assert rhs != null;
|
||||
if (flippedComparison == null) {
|
||||
return;
|
||||
}
|
||||
final PsiExpression lhs = expression.getLOperand();
|
||||
final String rhsText = rhs.getText();
|
||||
final String lhsText = lhs.getText();
|
||||
replaceExpression(expression,
|
||||
rhsText + ' ' + flippedSign + ' ' + lhsText);
|
||||
|
||||
rhsText + ' ' + flippedComparison + ' ' + lhsText);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +92,7 @@ public class ConstantOnLHSOfComparisonInspection extends BaseInspection {
|
||||
@Override public void visitBinaryExpression(
|
||||
@NotNull PsiBinaryExpression expression) {
|
||||
super.visitBinaryExpression(expression);
|
||||
if(!(expression.getROperand() != null)) {
|
||||
if (!(expression.getROperand() != null)) {
|
||||
return;
|
||||
}
|
||||
if (!ComparisonUtils.isComparison(expression)) {
|
||||
@@ -95,11 +100,16 @@ public class ConstantOnLHSOfComparisonInspection extends BaseInspection {
|
||||
}
|
||||
final PsiExpression lhs = expression.getLOperand();
|
||||
final PsiExpression rhs = expression.getROperand();
|
||||
if (!PsiUtil.isConstantExpression(lhs)
|
||||
|| PsiUtil.isConstantExpression(rhs)) {
|
||||
if (!isConstantExpression(lhs)
|
||||
|| isConstantExpression(rhs)) {
|
||||
return;
|
||||
}
|
||||
registerError(expression);
|
||||
}
|
||||
|
||||
private boolean isConstantExpression(PsiExpression expression) {
|
||||
return ExpressionUtils.isNullLiteral(expression) ||
|
||||
PsiUtil.isConstantExpression(expression);
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
-4
@@ -27,6 +27,7 @@ import com.siyeh.ig.BaseInspection;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
import com.siyeh.ig.InspectionGadgetsFix;
|
||||
import com.siyeh.ig.psiutils.ComparisonUtils;
|
||||
import com.siyeh.ig.psiutils.ExpressionUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ConstantOnRHSOfComparisonInspection extends BaseInspection {
|
||||
@@ -71,14 +72,14 @@ public class ConstantOnRHSOfComparisonInspection extends BaseInspection {
|
||||
if (rhs == null) {
|
||||
return;
|
||||
}
|
||||
final PsiExpression lhs = expression.getLOperand();
|
||||
final PsiJavaToken sign = expression.getOperationSign();
|
||||
final String rhsText = rhs.getText();
|
||||
final String flippedComparison =
|
||||
ComparisonUtils.getFlippedComparison(sign);
|
||||
if (flippedComparison == null) {
|
||||
return;
|
||||
}
|
||||
final PsiExpression lhs = expression.getLOperand();
|
||||
final String rhsText = rhs.getText();
|
||||
final String lhsText = lhs.getText();
|
||||
replaceExpression(expression,
|
||||
rhsText + ' ' + flippedComparison + ' ' + lhsText);
|
||||
@@ -99,11 +100,15 @@ public class ConstantOnRHSOfComparisonInspection extends BaseInspection {
|
||||
}
|
||||
final PsiExpression lhs = expression.getLOperand();
|
||||
final PsiExpression rhs = expression.getROperand();
|
||||
if (!PsiUtil.isConstantExpression(rhs) ||
|
||||
PsiUtil.isConstantExpression(lhs)) {
|
||||
if (!isConstantExpression(rhs) || isConstantExpression(lhs)) {
|
||||
return;
|
||||
}
|
||||
registerError(expression);
|
||||
}
|
||||
|
||||
private boolean isConstantExpression(PsiExpression expression) {
|
||||
return ExpressionUtils.isNullLiteral(expression) ||
|
||||
PsiUtil.isConstantExpression(expression);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user