Class UnusedLambdaParameterShouldBeUnnamedCheck
- java.lang.Object
-
- com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
-
- com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
-
- com.puppycrawl.tools.checkstyle.api.AbstractCheck
-
- com.puppycrawl.tools.checkstyle.checks.coding.UnusedLambdaParameterShouldBeUnnamedCheck
-
- All Implemented Interfaces:
Configurable
,Contextualizable
public class UnusedLambdaParameterShouldBeUnnamedCheck extends AbstractCheck
Ensures that lambda parameters that are not used are declared as an unnamed variable.Rationale:
- Improves code readability by clearly indicating which parameters are unused.
-
Follows Java conventions for denoting unused parameters with an underscore (
_
).
See the Java Language Specification for more information about unnamed variables.
Attention: Unnamed variables are available as a preview feature in Java 21, and became an official part of the language in Java 22. This check should be activated only on source code which meets those requirements.
Parent is
com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
-
unused.lambda.parameter
- Since:
- 10.18.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
UnusedLambdaParameterShouldBeUnnamedCheck.LambdaParameterDetails
Maintains information about the lambda parameter.-
Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
AbstractAutomaticBean.OutputStreamOptions
-
-
Field Summary
Fields Modifier and Type Field Description private static int[]
INVALID_LAMBDA_PARAM_IDENT_PARENTS
Invalid parents of the lambda parameter identifier.private Deque<UnusedLambdaParameterShouldBeUnnamedCheck.LambdaParameterDetails>
lambdaParameters
Keeps track of the lambda parameters in a block.static String
MSG_UNUSED_LAMBDA_PARAMETER
A key is pointing to the warning message text in "messages.properties" file.
-
Constructor Summary
Constructors Constructor Description UnusedLambdaParameterShouldBeUnnamedCheck()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
beginTree(DetailAST rootAST)
Called before the starting to process a tree.int[]
getAcceptableTokens()
The configurable token set.int[]
getDefaultTokens()
Returns the default token a check is interested in.int[]
getRequiredTokens()
The tokens that this check must be registered for.private static boolean
hasValidParentToken(DetailAST identifierAst)
Check if the givenTokenTypes.IDENT
has a valid parent token.private static boolean
isLambdaParameterIdentifierCandidate(DetailAST identifierAst)
Visit ast of typeTokenTypes.IDENT
and check if it is a candidate for a lambda parameter identifier.private static boolean
isLeftHandOfAssignment(DetailAST identAst)
Check if the givenTokenTypes.IDENT
is a left hand side value.private static boolean
isMethodInvocation(DetailAST identAst)
Check if the givenTokenTypes.IDENT
is a child of a dot operator and is a candidate for lambda parameter.void
leaveToken(DetailAST ast)
Called after all the child nodes have been process.void
visitToken(DetailAST ast)
Called to process a token.-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractCheck
clearViolations, destroy, finishTree, getFileContents, getFilePath, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, init, isCommentNodesRequired, log, log, log, setFileContents, setTabWidth, setTokens
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
-
Methods inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
configure, contextualize, getConfiguration, setupChild
-
-
-
-
Field Detail
-
MSG_UNUSED_LAMBDA_PARAMETER
public static final String MSG_UNUSED_LAMBDA_PARAMETER
A key is pointing to the warning message text in "messages.properties" file.- See Also:
- Constant Field Values
-
INVALID_LAMBDA_PARAM_IDENT_PARENTS
private static final int[] INVALID_LAMBDA_PARAM_IDENT_PARENTS
Invalid parents of the lambda parameter identifier. These are tokens that can not be parents for a lambda parameter identifier.
-
lambdaParameters
private final Deque<UnusedLambdaParameterShouldBeUnnamedCheck.LambdaParameterDetails> lambdaParameters
Keeps track of the lambda parameters in a block.
-
-
Constructor Detail
-
UnusedLambdaParameterShouldBeUnnamedCheck
public UnusedLambdaParameterShouldBeUnnamedCheck()
-
-
Method Detail
-
getDefaultTokens
public int[] getDefaultTokens()
Description copied from class:AbstractCheck
Returns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.- Specified by:
getDefaultTokens
in classAbstractCheck
- Returns:
- the default tokens
- See Also:
TokenTypes
-
getAcceptableTokens
public int[] getAcceptableTokens()
Description copied from class:AbstractCheck
The configurable token set. Used to protect Checks against malicious users who specify an unacceptable token set in the configuration file. The default implementation returns the check's default tokens.- Specified by:
getAcceptableTokens
in classAbstractCheck
- Returns:
- the token set this check is designed for.
- See Also:
TokenTypes
-
getRequiredTokens
public int[] getRequiredTokens()
Description copied from class:AbstractCheck
The tokens that this check must be registered for.- Specified by:
getRequiredTokens
in classAbstractCheck
- Returns:
- the token set this must be registered for.
- See Also:
TokenTypes
-
beginTree
public void beginTree(DetailAST rootAST)
Description copied from class:AbstractCheck
Called before the starting to process a tree. Ideal place to initialize information that is to be collected whilst processing a tree.- Overrides:
beginTree
in classAbstractCheck
- Parameters:
rootAST
- the root of the tree
-
visitToken
public void visitToken(DetailAST ast)
Description copied from class:AbstractCheck
Called to process a token.- Overrides:
visitToken
in classAbstractCheck
- Parameters:
ast
- the token to process
-
leaveToken
public void leaveToken(DetailAST ast)
Description copied from class:AbstractCheck
Called after all the child nodes have been process.- Overrides:
leaveToken
in classAbstractCheck
- Parameters:
ast
- the token leaving
-
isLambdaParameterIdentifierCandidate
private static boolean isLambdaParameterIdentifierCandidate(DetailAST identifierAst)
Visit ast of typeTokenTypes.IDENT
and check if it is a candidate for a lambda parameter identifier.- Parameters:
identifierAst
- token representingTokenTypes.IDENT
- Returns:
- true if the given
TokenTypes.IDENT
could be a lambda parameter identifier
-
hasValidParentToken
private static boolean hasValidParentToken(DetailAST identifierAst)
Check if the givenTokenTypes.IDENT
has a valid parent token. A valid parent token is a token that can be a parent for a lambda parameter identifier.- Parameters:
identifierAst
- token representingTokenTypes.IDENT
- Returns:
- true if the given
TokenTypes.IDENT
has a valid parent token
-
isMethodInvocation
private static boolean isMethodInvocation(DetailAST identAst)
Check if the givenTokenTypes.IDENT
is a child of a dot operator and is a candidate for lambda parameter.- Parameters:
identAst
- token representingTokenTypes.IDENT
- Returns:
- true if the given
TokenTypes.IDENT
is a child of a dot operator and a candidate for lambda parameter.
-
isLeftHandOfAssignment
private static boolean isLeftHandOfAssignment(DetailAST identAst)
Check if the givenTokenTypes.IDENT
is a left hand side value.- Parameters:
identAst
- token representingTokenTypes.IDENT
- Returns:
- true if the given
TokenTypes.IDENT
is a left hand side value.
-
-