LambdaBodyLength
Since Checkstyle 8.37
Description
Rationale: Similar to anonymous inner classes, if lambda body becomes very long it is hard to understand and to see the flow of the method where the lambda is defined. Therefore, long lambda body should usually be extracted to method.
Properties
name | description | type | default value | since |
---|---|---|---|---|
max | Specify the maximum number of lines allowed. | int | 10 |
8.37 |
Examples
To configure the check to accept lambda bodies with up to 10 lines:
<module name="Checker">
<module name="TreeWalker">
<module name="LambdaBodyLength"/>
</module>
</module>
Example:
class Example1 {
Runnable r = () -> { // OK, length is 10
System.out.println(2); // line 2 of lambda
System.out.println(3);
System.out.println(4);
System.out.println(5);
System.out.println(6);
System.out.println(7);
System.out.println(8);
System.out.println(9);
}; // line 10
Runnable r2 = () -> { // violation 'length is 11'
System.out.println(2); // line 2 of lambda
System.out.println(3);
System.out.println(4);
System.out.println(5);
System.out.println(6);
System.out.println(7);
System.out.println(8);
System.out.println(9);
System.out.println(10);
}; // line 11
Runnable r3 = () -> // violation 'length is 11'
"someString".concat("1") // line 1 of lambda
.concat("2")
.concat("3")
.concat("4")
.concat("5")
.concat("6")
.concat("7")
.concat("8")
.concat("9")
.concat("10")
.concat("11"); // line 11
}
To configure the check to accept lambda bodies with max 5 lines:
<module name="Checker">
<module name="TreeWalker">
<module name="LambdaBodyLength">
<property name="max" value="5"/>
</module>
</module>
</module>
Example:
class Example2 {
Runnable r = () -> { // OK, length is 5
System.out.println(2);
System.out.println(3);
System.out.println(4);
};
Runnable r2 = () -> { // violation 'length is 6'
System.out.println(2); // line 2 of lambda
System.out.println(3);
System.out.println(4);
System.out.println(5);
};
Runnable r3 = () -> // violation 'length is 6'
"someString".concat("1")
.concat("2")
.concat("3")
.concat("4")
.concat("5")
.concat("6");
}
Example of Usage
Violation Messages
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
Package
com.puppycrawl.tools.checkstyle.checks.sizes