From af137663d109511f44b5e8fbf3e723ce4ddede76 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Sat, 30 Aug 2014 12:12:48 +0200 Subject: [PATCH] better way to check for null literal --- .../com/siyeh/ig/bugs/StringEqualityInspection.java | 10 ++-------- .../LoopConditionNotUpdatedInsideLoopInspection.java | 6 +++--- .../src/com/siyeh/ig/psiutils/ExpressionUtils.java | 9 +++------ .../igtest/bugs/string_equality/StringEquality.java | 4 ++++ 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/StringEqualityInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/StringEqualityInspection.java index 0ac07245fd8f..f94f495993d7 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/StringEqualityInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/StringEqualityInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2012 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2014 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. @@ -18,7 +18,6 @@ package com.siyeh.ig.bugs; import com.intellij.psi.PsiBinaryExpression; import com.intellij.psi.PsiExpression; import com.intellij.psi.PsiJavaToken; -import com.intellij.psi.PsiKeyword; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -73,12 +72,7 @@ public class StringEqualityInspection extends BaseInspection { if (rhs == null || !ExpressionUtils.hasStringType(rhs)) { return; } - final String lhsText = lhs.getText(); - if (PsiKeyword.NULL.equals(lhsText)) { - return; - } - final String rhsText = rhs.getText(); - if (PsiKeyword.NULL.equals(rhsText)) { + if (ExpressionUtils.isNullLiteral(lhs) || ExpressionUtils.isNullLiteral(rhs)) { return; } final PsiJavaToken sign = expression.getOperationSign(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/LoopConditionNotUpdatedInsideLoopInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/LoopConditionNotUpdatedInsideLoopInspection.java index 46969fd5bcfc..57c635b7d461 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/LoopConditionNotUpdatedInsideLoopInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/LoopConditionNotUpdatedInsideLoopInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2013 Bas Leijdekkers + * Copyright 2006-2014 Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.psiutils.BoolUtils; +import com.siyeh.ig.psiutils.ExpressionUtils; import com.siyeh.ig.psiutils.IteratorUtils; import com.siyeh.ig.psiutils.VariableAccessUtils; import org.jetbrains.annotations.NotNull; @@ -118,8 +119,7 @@ public class LoopConditionNotUpdatedInsideLoopInspection if (condition == null) { return false; } - if (PsiUtil.isConstantExpression(condition) || - PsiKeyword.NULL.equals(condition.getText())) { + if (PsiUtil.isConstantExpression(condition) || ExpressionUtils.isNullLiteral(condition)) { return true; } if (condition instanceof PsiInstanceOfExpression) { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java index fc6d2580b3e9..242bec97a398 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2013 Bas Leijdekkers + * Copyright 2005-2014 Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -198,11 +198,8 @@ public class ExpressionUtils { } public static boolean isNullLiteral(@Nullable PsiExpression expression) { - if (!(expression instanceof PsiLiteralExpression)) { - return false; - } - final String text = expression.getText(); - return PsiKeyword.NULL.equals(text); + expression = ParenthesesUtils.stripParentheses(expression); + return expression != null && PsiType.NULL.equals(expression.getType()); } public static boolean isZero(@Nullable PsiExpression expression) { diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/string_equality/StringEquality.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/string_equality/StringEquality.java index fc33b79cd533..17c4b5127c3b 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/string_equality/StringEquality.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/string_equality/StringEquality.java @@ -7,4 +7,8 @@ public class StringEquality { final boolean b = t == s; final boolean c = t == } + + void notEquals(String s, String t) { + boolean a = s != t; + } }