Final Local Variable Name Check, fixed bug with lambda's params, issue #747
This commit is contained in:
parent
48eeab9932
commit
5512e6fdba
|
|
@ -156,7 +156,8 @@ public class FinalLocalVariableCheck extends Check
|
|||
|
||||
case TokenTypes.PARAMETER_DEF:
|
||||
if (ScopeUtils.inInterfaceBlock(ast)
|
||||
|| inAbstractOrNativeMethod(ast))
|
||||
|| inAbstractOrNativeMethod(ast)
|
||||
|| inLambda(ast))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
|
@ -247,6 +248,16 @@ public class FinalLocalVariableCheck extends Check
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if current param is lamda's param.
|
||||
* @param paramDef {@link TokenTypes#PARAMETER_DEF parameter def}.
|
||||
* @return true if current param is lamda's param.
|
||||
*/
|
||||
private static boolean inLambda(DetailAST paramDef)
|
||||
{
|
||||
return paramDef.getParent().getParent().getType() == TokenTypes.LAMBDA;
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts a variable at the topmost scope stack
|
||||
* @param ast the variable to insert
|
||||
|
|
|
|||
|
|
@ -18,12 +18,14 @@
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
package com.puppycrawl.tools.checkstyle.checks.coding;
|
||||
|
||||
import com.puppycrawl.tools.checkstyle.BaseCheckTestSupport;
|
||||
import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
|
||||
import static com.puppycrawl.tools.checkstyle.checks.coding.FinalLocalVariableCheck.MSG_KEY;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static com.puppycrawl.tools.checkstyle.checks.coding.FinalLocalVariableCheck.MSG_KEY;
|
||||
import com.puppycrawl.tools.checkstyle.BaseCheckTestSupport;
|
||||
import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
|
||||
|
||||
public class FinalLocalVariableCheckTest
|
||||
extends BaseCheckTestSupport
|
||||
|
|
@ -121,4 +123,17 @@ public class FinalLocalVariableCheckTest
|
|||
};
|
||||
verify(checkConfig, getPath("coding/InputFinalLocalVariableEnhancedForLoopVariable.java"), expected);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLambda()
|
||||
throws Exception
|
||||
{
|
||||
final DefaultConfiguration checkConfig =
|
||||
createCheckConfig(FinalLocalVariableCheck.class);
|
||||
checkConfig.addAttribute("tokens", "PARAMETER_DEF,VARIABLE_DEF");
|
||||
final String[] expected = {};
|
||||
verify(checkConfig, new File("src/test/resources-noncompilable/com/puppycrawl/"
|
||||
+ "tools/checkstyle/naming/InputFinalLocalVariableNameLambda.java").
|
||||
getCanonicalPath(), expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
//Compilable with Java8
|
||||
package com.puppycrawl.tools.checkstyle.naming;
|
||||
|
||||
public class InputFinalLocalVariableNameLambda {
|
||||
|
||||
private void addTotalValueOfOrder(final AugmentedOrder order) {
|
||||
final BigDecimal totalValueOfOrder = order.getTransactions().stream()
|
||||
.reduce(BigDecimal.ZERO,
|
||||
(t, u) -> t.add(u.getAmount()),
|
||||
BigDecimal::add);
|
||||
order.setTotalValueOfOrder(totalValueOfOrder.toPlainString());
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue