diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties index f765cb5ed21b..2fabb110a705 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties @@ -877,7 +877,8 @@ fallthru.in.switch.statement.problem.descriptor=#ref fall-through i switch.statements.without.default.problem.descriptor=#ref statement without 'default' branch #loc default.not.last.case.in.switch.problem.descriptor=#ref branch not last case in 'switch' statement #loc loop.statements.that.dont.loop.problem.descriptor=#ref statement does not loop #loc -conditional.expression.with.identical.branches.problem.descriptor=Conditional expression #ref with identical or similar branches #loc +conditional.expression.with.identical.branches.problem.descriptor=Conditional expression #ref with identical branches #loc +conditional.expression.with.similar.branches.problem.descriptor=Conditional expression #ref with similar branches #loc if.statement.with.identical.branches.problem.descriptor=#ref statement with identical branches #loc duplicate.condition.problem.descriptor=Duplicate condition #ref #loc duplicate.condition.ignore.method.calls.option=Ignore method calls in condition @@ -1148,6 +1149,7 @@ standard.variable.names.ignore.override.option=Ignore for parameter names identi static.variable.naming.convention.mutable.option=Check 'static final' fields with a mutable type boolean.method.name.must.start.with.question.table.column.name=Boolean method name prefix conditional.expression.with.identical.branches.collapse.quickfix=Collapse conditional expression +conditional.expression.with.identical.branches.push.inside.quickfix=Push conditional inside expression conditional.expression.with.identical.branches.collapse.quickfix.family=Conditional expression can be simplified confusing.else.unwrap.quickfix=Remove redundant 'else' constant.conditional.expression.problem.descriptor=#ref can be simplified to ''{0}'' #loc diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConditionalExpressionWithIdenticalBranchesInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConditionalExpressionWithIdenticalBranchesInspection.java index 4de300fd65d3..68a7151ce76a 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConditionalExpressionWithIdenticalBranchesInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConditionalExpressionWithIdenticalBranchesInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2015 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2016 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. @@ -50,7 +50,10 @@ public class ConditionalExpressionWithIdenticalBranchesInspection extends BaseIn @Override @NotNull protected String buildErrorString(Object... infos) { - return InspectionGadgetsBundle.message("conditional.expression.with.identical.branches.problem.descriptor"); + final EquivalenceChecker.Decision decision = (EquivalenceChecker.Decision)infos[1]; + return InspectionGadgetsBundle.message(decision.isExact() + ? "conditional.expression.with.identical.branches.problem.descriptor" + : "conditional.expression.with.similar.branches.problem.descriptor"); } @Override @@ -68,9 +71,9 @@ public class ConditionalExpressionWithIdenticalBranchesInspection extends BaseIn @Override @NotNull public String getName() { - return InspectionGadgetsBundle.message(getEquivalenceDecision().getExactlyMatches() ? - "conditional.expression.with.identical.branches.collapse.quickfix" : - "conditional.expression.with.identical.branches.collapse.quickfix.family") ; + return InspectionGadgetsBundle.message(getEquivalenceDecision().getExactlyMatches() + ? "conditional.expression.with.identical.branches.collapse.quickfix" + : "conditional.expression.with.identical.branches.push.inside.quickfix"); } @Override @@ -126,7 +129,7 @@ public class ConditionalExpressionWithIdenticalBranchesInspection extends BaseIn final PsiExpression elseExpression = expression.getElseExpression(); final EquivalenceChecker.Decision decision = EquivalenceChecker.expressionsAreEquivalentDecision(thenExpression, elseExpression); if (thenExpression != null && (myReportOnlyExactlyIdentical ? decision.getExactlyMatches() : !decision.isExactUnMatches())) { - registerError(expression, expression); + registerError(expression, expression, decision); } } } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/ConditionalExpressionWithIdenticalBranches.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/ConditionalExpressionWithIdenticalBranches.java index 2b13f8d5ca13..ae47557b2100 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/ConditionalExpressionWithIdenticalBranches.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/ConditionalExpressionWithIdenticalBranches.java @@ -5,7 +5,7 @@ import java.util.Random; class ConditionalExpressionWithIdenticalBranches { int one(boolean b) { - return b ? 1 + 2 + 3 : 1 + 2 + 3; + return b ? 1 + 2 + 3 : 1 + 2 + 3; } int two(boolean b) { @@ -13,7 +13,7 @@ class ConditionalExpressionWithIdenticalBranches { } Class three(boolean b) { - return b ? java.lang.String.class : String.class; + return b ? java.lang.String.class : String.class; } int incomplete(boolean b) { @@ -21,27 +21,27 @@ class ConditionalExpressionWithIdenticalBranches { } void fuzzy() { - String someString = new Random().nextBoolean() ? "2" + "q" + "1" : "2" + "qwe" + "1"; + String someString = new Random().nextBoolean() ? "2" + "q" + "1" : "2" + "qwe" + "1"; } void fuzzy2() { - Object someString = new Random().nextBoolean() ? (Object) "1" : (Object) "2"; + Object someString = new Random().nextBoolean() ? (Object) "1" : (Object) "2"; } void fuzzy3() { - Object someString = new Random().nextBoolean() ? "21" + (Object) "1" : "21" + (Object) "2"; + Object someString = new Random().nextBoolean() ? "21" + (Object) "1" : "21" + (Object) "2"; } void fuzzy4(int[] ints) { - int i = new Random().nextBoolean() ? ints[3] : ints[4]; + int i = new Random().nextBoolean() ? ints[3] : ints[4]; } void fuzzy5(String[] strings) { - String s = new Random().nextBoolean()? "asd" + strings[2] : "qwe" + strings[2]; + String s = new Random().nextBoolean()? "asd" + strings[2] : "qwe" + strings[2]; } void fuzzy6() { - int j = new Random().nextBoolean() ? 6 + someMethod("123", "") : 6 + someMethod("321", ""); + int j = new Random().nextBoolean() ? 6 + someMethod("123", "") : 6 + someMethod("321", ""); } int someMethod(String s, String s2) { @@ -59,7 +59,7 @@ class ConditionalExpressionWithIdenticalBranches { int i = 1; Item item = (i == 1 ? new Item("1") : new Item(i)); // warning here - Item item1 = (i == 1 ? new Item("1") : new Item("2")); // warning here + Item item1 = (i == 1 ? new Item("1") : new Item("2")); // warning here } }