From 57f395fa2b2dcea7dd369ab3dd52d3d42f0e0893 Mon Sep 17 00:00:00 2001 From: Roman Ivanov Date: Sat, 13 Jun 2015 21:07:30 -0700 Subject: [PATCH] EqualsAvoidNullCheck updated to follow Cyclomatic Complexity rule. #954 --- .../checks/coding/EqualsAvoidNullCheck.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/EqualsAvoidNullCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/EqualsAvoidNullCheck.java index 33838317a..260dc2206 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/EqualsAvoidNullCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/EqualsAvoidNullCheck.java @@ -121,18 +121,11 @@ public class EqualsAvoidNullCheck extends Check { } final DetailAST objCalledOn = dot.getFirstChild(); - - //checks for calling equals on String literal and - //anon object which cannot be null - //Also, checks if calling using strange inner class - //syntax outter.inner.equals(otherObj) by looking - //for the dot operator which cannot be improved - if (objCalledOn.getType() == TokenTypes.STRING_LITERAL - || objCalledOn.getType() == TokenTypes.LITERAL_NEW - || objCalledOn.getType() == TokenTypes.DOT) { + if (isStringLiteral(objCalledOn)) { return; } + final DetailAST method = objCalledOn.getNextSibling(); final DetailAST expr = dot.getNextSibling().getFirstChild(); @@ -150,6 +143,24 @@ public class EqualsAvoidNullCheck extends Check { } } + /** + * checks for calling equals on String literal and + * anon object which cannot be null + * Also, checks if calling using strange inner class + * syntax outter.inner.equals(otherObj) by looking + * for the dot operator which cannot be improved + * @param objCalledOn object AST + * @return if it is string literal + */ + private boolean isStringLiteral(DetailAST objCalledOn) { + if (objCalledOn.getType() == TokenTypes.STRING_LITERAL + || objCalledOn.getType() == TokenTypes.LITERAL_NEW + || objCalledOn.getType() == TokenTypes.DOT) { + return true; + } + return false; + } + /** * Checks if a method contains no arguments * starting at with the argument expression.