diff --git a/pom.xml b/pom.xml index 8a9c1c510..d15f9dabf 100644 --- a/pom.xml +++ b/pom.xml @@ -1127,7 +1127,6 @@ .*.checks.metrics.AbstractClassCouplingCheck8797 .*.checks.metrics.AbstractClassCouplingCheck\$.*78100 - .*.checks.metrics.BooleanExpressionComplexityCheck7480 .*.checks.regexp.CommentSuppressor75100 .*.checks.regexp.DetectorOptions10096 diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/metrics/BooleanExpressionComplexityCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/metrics/BooleanExpressionComplexityCheck.java index 4e98527d1..8be250eee 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/metrics/BooleanExpressionComplexityCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/metrics/BooleanExpressionComplexityCheck.java @@ -139,7 +139,7 @@ public final class BooleanExpressionComplexityCheck extends Check { context.visitBooleanOperator(); break; default: - throw new IllegalStateException(ast.toString()); + throw new IllegalArgumentException("Unknown type: " + ast); } } @@ -186,7 +186,8 @@ public final class BooleanExpressionComplexityCheck extends Check { */ private void visitMethodDef(DetailAST ast) { contextStack.push(context); - context = new Context(!CheckUtils.isEqualsMethod(ast)); + final boolean check = !CheckUtils.isEqualsMethod(ast); + context = new Context(check); } /** Removes old context. */ @@ -197,7 +198,7 @@ public final class BooleanExpressionComplexityCheck extends Check { /** Creates and pushes new context. */ private void visitExpr() { contextStack.push(context); - context = new Context(context == null || context.isChecking()); + context = new Context(context.isChecking()); } /** diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/metrics/BooleanExpressionComplexityCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/metrics/BooleanExpressionComplexityCheckTest.java index 4f4bdab03..d6479c90b 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/metrics/BooleanExpressionComplexityCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/metrics/BooleanExpressionComplexityCheckTest.java @@ -25,8 +25,12 @@ import java.io.File; import org.junit.Test; +import antlr.CommonHiddenStreamToken; + import com.puppycrawl.tools.checkstyle.BaseCheckTestSupport; import com.puppycrawl.tools.checkstyle.DefaultConfiguration; +import com.puppycrawl.tools.checkstyle.api.DetailAST; +import com.puppycrawl.tools.checkstyle.api.TokenTypes; public class BooleanExpressionComplexityCheckTest extends BaseCheckTestSupport { @Test @@ -67,4 +71,12 @@ public class BooleanExpressionComplexityCheckTest extends BaseCheckTestSupport { verify(checkConfig, getPath("metrics" + File.separator + "InputBooleanExpressionComplexityNPE.java"), expected); } + + @Test(expected = IllegalArgumentException.class) + public void testWrongToken() { + BooleanExpressionComplexityCheck booleanExpressionComplexityCheckObj = new BooleanExpressionComplexityCheck(); + DetailAST ast = new DetailAST(); + ast.initialize(new CommonHiddenStreamToken(TokenTypes.INTERFACE_DEF, "interface")); + booleanExpressionComplexityCheckObj.visitToken(ast); + } }