Issue #1566: Fixed CyclomaticCompexityCheck violation in RightCurlyCheck

This commit is contained in:
Baratali Izmailov 2015-08-29 12:22:00 -04:00
parent 9ae0be5921
commit f32bcd07ee
2 changed files with 23 additions and 13 deletions

View File

@ -74,9 +74,9 @@
<suppress checks="MethodCount" files="[\\/]JavadocMethodCheck.java$"/>
<!-- getDetails() method - huge Switch, it has to be monolithic -->
<suppress checks="ExecutableStatementCount" files="RightCurlyCheck\.java" lines="280"/>
<suppress checks="JavaNCSS" files="RightCurlyCheck\.java" lines="280"/>
<suppress checks="CyclomaticComplexity" files="RightCurlyCheck\.java" lines="280"/>
<suppress checks="ExecutableStatementCount" files="RightCurlyCheck\.java" lines="290"/>
<suppress checks="JavaNCSS" files="RightCurlyCheck\.java" lines="290"/>
<suppress checks="CyclomaticComplexity" files="RightCurlyCheck\.java" lines="290"/>
<!-- we need that set of converters -->
<suppress checks="ClassDataAbstractionCoupling" files="AutomaticBean\.java"/>

View File

@ -213,16 +213,7 @@ public class RightCurlyCheck extends AbstractOptionCheck<RightCurlyOption> {
&& rcurly.getLineNo() != nextToken.getLineNo()) {
violation = MSG_KEY_LINE_SAME;
}
else if (bracePolicy == RightCurlyOption.ALONE
&& !isAloneOnLine(details)
&& !isEmptyBody(lcurly)) {
violation = MSG_KEY_LINE_ALONE;
}
else if (bracePolicy == RightCurlyOption.ALONE_OR_SINGLELINE
&& !isAloneOnLine(details)
&& !isSingleLineBlock(details)
&& !isAnonInnerClassInit(lcurly)
&& !isEmptyBody(lcurly)) {
else if (shouldBeAloneOnLine(details, bracePolicy)) {
violation = MSG_KEY_LINE_ALONE;
}
else if (shouldStartLine) {
@ -236,6 +227,25 @@ public class RightCurlyCheck extends AbstractOptionCheck<RightCurlyOption> {
return violation;
}
/**
* Checks that a right curly should be alone on a line.
* @param details Details for validation
* @param bracePolicy option for placing the right curly brace
* @return true if a right curly should be alone on a line.
*/
private static boolean shouldBeAloneOnLine(Details details, RightCurlyOption bracePolicy) {
final boolean alone = bracePolicy == RightCurlyOption.ALONE
&& !isAloneOnLine(details)
&& !isEmptyBody(details.lcurly);
final boolean aloneOrSingleline = alone
|| bracePolicy == RightCurlyOption.ALONE_OR_SINGLELINE
&& !isAloneOnLine(details)
&& !isSingleLineBlock(details)
&& !isAnonInnerClassInit(details.lcurly)
&& !isEmptyBody(details.lcurly);
return aloneOrSingleline;
}
/**
* Checks whether right curly is alone on a line.
* @param details for validation.