From 3831aa913e25d2bd424ccbeb239bd06439867a58 Mon Sep 17 00:00:00 2001 From: Roman Ivanov Date: Sat, 13 Jun 2015 21:45:43 -0700 Subject: [PATCH] FinalLocalVariableCheck updated to follow Cyclomatic Complexity rule. #954 --- .../coding/FinalLocalVariableCheck.java | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/FinalLocalVariableCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/FinalLocalVariableCheck.java index 14d950377..4dd0f4d86 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/FinalLocalVariableCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/FinalLocalVariableCheck.java @@ -167,22 +167,7 @@ public class FinalLocalVariableCheck extends Check { case TokenTypes.IDENT: final int parentType = ast.getParent().getType(); - if ((TokenTypes.POST_DEC == parentType - || TokenTypes.DEC == parentType - || TokenTypes.POST_INC == parentType - || TokenTypes.INC == parentType - || TokenTypes.ASSIGN == parentType - || TokenTypes.PLUS_ASSIGN == parentType - || TokenTypes.MINUS_ASSIGN == parentType - || TokenTypes.DIV_ASSIGN == parentType - || TokenTypes.STAR_ASSIGN == parentType - || TokenTypes.MOD_ASSIGN == parentType - || TokenTypes.SR_ASSIGN == parentType - || TokenTypes.BSR_ASSIGN == parentType - || TokenTypes.SL_ASSIGN == parentType - || TokenTypes.BXOR_ASSIGN == parentType - || TokenTypes.BOR_ASSIGN == parentType - || TokenTypes.BAND_ASSIGN == parentType) + if (isAssignOperator(parentType) && ast.getParent().getFirstChild() == ast) { removeVariable(ast); } @@ -192,6 +177,30 @@ public class FinalLocalVariableCheck extends Check { } } + /** + * is Arithmetic operator + * @param parentType token AST + * @return true is token type is in arithmetic operator + */ + private boolean isAssignOperator(int parentType) { + return TokenTypes.POST_DEC == parentType + || TokenTypes.DEC == parentType + || TokenTypes.POST_INC == parentType + || TokenTypes.INC == parentType + || TokenTypes.ASSIGN == parentType + || TokenTypes.PLUS_ASSIGN == parentType + || TokenTypes.MINUS_ASSIGN == parentType + || TokenTypes.DIV_ASSIGN == parentType + || TokenTypes.STAR_ASSIGN == parentType + || TokenTypes.MOD_ASSIGN == parentType + || TokenTypes.SR_ASSIGN == parentType + || TokenTypes.BSR_ASSIGN == parentType + || TokenTypes.SL_ASSIGN == parentType + || TokenTypes.BXOR_ASSIGN == parentType + || TokenTypes.BOR_ASSIGN == parentType + || TokenTypes.BAND_ASSIGN == parentType; + } + /** * Determines whether enhanced for-loop variable should be checked or not. * @param ast The ast to compare.