Class LambdaParameterNameCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public class LambdaParameterNameCheck
    extends AbstractNameCheck

    Checks lambda parameter names.

    • Property format - Specifies valid identifiers. Type is java.util.regex.Pattern. Default value is "^[a-z][a-zA-Z0-9]*$".

    To configure the check:

     <module name="LambdaParameterName"/>

    Code Example:

     Function<String, String> function1 = s -> s.toLowerCase(); // OK
     Function<String, String> function2 = S -> S.toLowerCase(); // violation, name 'S'
                                                    // must match pattern '^[a-z][a-zA-Z0-9]*$'

    An example of how to configure the check for names that begin with a lower case letter, followed by letters is:

     <module name="LambdaParameterName">
       <property name="format" value="^[a-z]([a-zA-Z]+)*$"/>

    Code Example:

     class MyClass {
       Function<String, String> function1 = str -> str.toUpperCase().trim(); // OK
       Function<String, String> function2 = _s -> _s.trim(); // violation, name '_s'
                                                  // must match pattern '^[a-z]([a-zA-Z]+)*$'
       public boolean myMethod(String sentence) {
         return Stream.of(sentence.split(" "))
                 .map(word -> word.trim()) // OK
                 .anyMatch(Word -> "in".equals(Word)); // violation, name 'Word'
                                                          // must match pattern '^[a-z]([a-zA-Z]+)*$'

    Parent is

    Violation Message Keys:

    • name.invalidPattern