Package io.codemodder.ast
Class ASTs
java.lang.Object
io.codemodder.ast.ASTs
A static library for querying and returning patterns over AST nodes.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
ANode
iterator iterating over all the nodes that precedes a given node in the pre-order of its AST. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic List<com.github.javaparser.ast.expr.NameExpr>
findAllReferences
(LocalVariableDeclaration localDeclaration) Returns aList
containing all the referenced oflocalDeclaration
in its scope.static Optional<com.github.javaparser.ast.stmt.BlockStmt>
findBlockStatementFrom
(com.github.javaparser.ast.Node node) Searches up the AST to find theBlockStmt
given theNode
.static Optional<LocalDeclaration>
findEarliestLocalDeclarationOf
(com.github.javaparser.ast.expr.SimpleName name) Staring from theNode
start
, checks if there exists a local variable declaration whose name isname
.static Optional<LocalDeclaration>
findEarliestLocalDeclarationOf
(com.github.javaparser.ast.Node start, String name) Staring from theNode
start
, checks if there exists a local variable declaration whose name isname
.static Optional<LocalVariableDeclaration>
findEarliestLocalVariableDeclarationOf
(com.github.javaparser.ast.Node start, String name) Staring from theNode
start
, checks if there exists a local variable declaration whose name isname
.static Optional<com.github.javaparser.ast.body.MethodDeclaration>
findMethodBodyFrom
(com.github.javaparser.ast.Node node) Searches up the AST to find the method body from the givenNode
.static Optional<com.github.javaparser.ast.Node>
findNonCallableSimpleNameSource
(com.github.javaparser.ast.expr.SimpleName name) Tries to find the declaration that originates aSimpleName
use that is a Simple Expression Name, Simple Type Name, or Type Parameter within the AST.static Optional<com.github.javaparser.ast.Node>
findNonCallableSimpleNameSource
(com.github.javaparser.ast.Node start, String name) Tries to find a declaration ofname
that is in scope at the givenNode
start
within the AST.static Optional<com.github.javaparser.ast.stmt.Statement>
findParentStatementFrom
(com.github.javaparser.ast.Node node) Searches up the AST to find theStatement
given theNode
.static com.github.javaparser.ast.body.ClassOrInterfaceDeclaration
findThisDeclaration
(com.github.javaparser.ast.expr.ThisExpr thisExpr) Finds theClassOrInterfaceDeclaration
that is referenced by aThisExpr
.static com.github.javaparser.ast.body.ClassOrInterfaceDeclaration
findTypeFrom
(com.github.javaparser.ast.Node node) Searches up the AST to find theClassOrInterfaceDeclaration
givenNode
.static Optional<com.github.javaparser.ast.expr.MethodCallExpr>
isArgumentOfMethodCall
(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:MethodCallExpr
->Expression
(expr
), whereexpr
is an argument.static Optional<com.github.javaparser.ast.expr.ObjectCreationExpr>
isArgumentOfObjectCreationExpression
(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:ObjectCreationExpr
->Expression
(expr
), whereexpr
is an argument.static Optional<com.github.javaparser.ast.expr.AssignExpr>
isAssigned
(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:AssignExpr
->Expression
(expr
), where (expr
) is the right hand side expression of the assignment.static Optional<org.javatuples.Triplet<com.github.javaparser.ast.body.ClassOrInterfaceDeclaration,
com.github.javaparser.ast.body.FieldDeclaration, com.github.javaparser.ast.body.VariableDeclarator>> isClassFieldDeclarationOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:ClassOrInterfaceDeclaration
(node
) ->FieldDeclaration
->VariableDeclarator
->SimpleName
static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.ClassOrInterfaceDeclaration,
com.github.javaparser.ast.type.TypeParameter>> isClassTypeParameterOf
(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration classDecl, String name) Test for this pattern:ClassOrInterfaceDeclaration
(classDecl
) ->TypeParameter
->SimpleName
, withname
as theSimpleName
.static Optional<com.github.javaparser.ast.expr.ObjectCreationExpr>
isConstructorArgument
(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:ObjectCreationExpr
->Expression
(expr
), where (expr
) is one of the constructor arguments.static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.ConstructorDeclaration,
com.github.javaparser.ast.body.Parameter>> isConstructorFormalParameterOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:ConstructorDeclaration
(node
) ->Parameter
->SimpleName
static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.ConstructorDeclaration,
com.github.javaparser.ast.type.TypeParameter>> isConstructorTypeParameterOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:ConstructorDeclaration
(node
) ->TypeParameter
->SimpleName
static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.EnumDeclaration,
com.github.javaparser.ast.body.EnumConstantDeclaration>> isEnumConstantOf
(com.github.javaparser.ast.body.EnumDeclaration enumDecl, String name) Test for this pattern:EnumDeclaration
(enumDecl
) ->EnumConstantDeclaration
->SimpleName
, withname
as theSimpleName
.static Optional<org.javatuples.Pair<com.github.javaparser.ast.stmt.CatchClause,
com.github.javaparser.ast.body.Parameter>> isExceptionParameterOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:CatchClause
(node
) ->Parameter
->SimpleName
static Optional<org.javatuples.Triplet<com.github.javaparser.ast.stmt.ExpressionStmt,
com.github.javaparser.ast.expr.VariableDeclarationExpr, com.github.javaparser.ast.body.VariableDeclarator>> isExpressionStmtDeclarationOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:ExpressionStmt
(node
) ->VariableDeclarationExpr
->VariableDeclarator
->SimpleName
(name
)static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.FieldDeclaration,
com.github.javaparser.ast.body.VariableDeclarator>> isFieldDeclarationOf
(com.github.javaparser.ast.body.BodyDeclaration<?> bDecl, String name) Test for this pattern:FieldDeclaration
(bDecl
) ->VariableDeclarator
->SimpleName
, withname
as theSimpleName
.static boolean
isFinalOrNeverAssigned
(com.github.javaparser.ast.body.VariableDeclarator vd, LocalScope scope) Given aSimpleName
name
and aVariableDeclarationExpr
with a declarator ofname
, verifies ifname
is final or never assigned.static boolean
Given aLocalVariableDeclaration
verifies if it is final or never assigned.static Optional<org.javatuples.Pair<com.github.javaparser.ast.stmt.ForEachStmt,
com.github.javaparser.ast.expr.VariableDeclarationExpr>> isForEachVariable
(com.github.javaparser.ast.body.VariableDeclarator vd) Test for this pattern:ForEachStmt
->VariableDeclarationExpr
->VariableDeclarator
(vd
)static Optional<org.javatuples.Triplet<com.github.javaparser.ast.stmt.ForEachStmt,
com.github.javaparser.ast.expr.VariableDeclarationExpr, com.github.javaparser.ast.body.VariableDeclarator>> isForEachVariableDeclarationOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:ForEachStmt
(node
) ->VariableDeclarationExpr
->VariableDeclarator
->SimpleName
(name
)static Optional<org.javatuples.Pair<com.github.javaparser.ast.stmt.ForStmt,
com.github.javaparser.ast.expr.VariableDeclarationExpr>> isForInitVariable
(com.github.javaparser.ast.body.VariableDeclarator vd) Test for this pattern:ForStmt
->VariableDeclarationExpr
->VariableDeclarator
(vd
)static Optional<org.javatuples.Triplet<com.github.javaparser.ast.stmt.ForStmt,
com.github.javaparser.ast.expr.VariableDeclarationExpr, com.github.javaparser.ast.body.VariableDeclarator>> isForVariableDeclarationOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:ForStmt
(node
) ->VariableDeclarationExpr
->VariableDeclarator
->SimpleName
static Optional<com.github.javaparser.ast.stmt.Statement>
isInBlock
(com.github.javaparser.ast.stmt.Statement stmt) Test for this pattern:Statement
->Node.getParentNode()
()static Optional<com.github.javaparser.ast.body.VariableDeclarator>
isInitExpr
(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:VariableDeclarator
->Expression
(expr
)static Optional<org.javatuples.Pair<com.github.javaparser.ast.expr.LambdaExpr,
com.github.javaparser.ast.body.Parameter>> isLambdaExprParameterOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:LambdaExpr
(node
) ->Parameter
->SimpleName
static Optional<org.javatuples.Pair<com.github.javaparser.ast.stmt.LocalRecordDeclarationStmt,
com.github.javaparser.ast.body.RecordDeclaration>> isLocalRecordDeclarationOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:LocalRecordDeclarationStmt
(node
) ->RecordDeclaration
->SimpleName
static Optional<org.javatuples.Pair<com.github.javaparser.ast.stmt.LocalClassDeclarationStmt,
com.github.javaparser.ast.body.ClassOrInterfaceDeclaration>> isLocalTypeDeclarationOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:LocalClassDeclarationStmt
(node
) ->ClassOrInterfaceDeclaration
->SimpleName
static boolean
isLocalVariableDeclarator
(com.github.javaparser.ast.body.VariableDeclarator vd) Checks ifvd
is a local declaration.static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.MethodDeclaration,
com.github.javaparser.ast.body.Parameter>> isMethodFormalParameterOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:MethodDeclaration
(node
) ->Parameter
->SimpleName
static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.MethodDeclaration,
com.github.javaparser.ast.type.TypeParameter>> isMethodTypeParameterOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:MethodDeclaration
(node
) ->TypeParameter
->SimpleName
static Optional<com.github.javaparser.ast.nodeTypes.NodeWithSimpleName<?>>
isNamedMemberOf
(com.github.javaparser.ast.body.BodyDeclaration<?> bodyDecl, String name) Test for this pattern:NodeWithSimpleName
(bDecl
) ->SimpleName
, withname
as theSimpleName
.static boolean
Checks if a local variable is not initialized and is assigned at most once.static Optional<com.github.javaparser.ast.expr.PatternExpr>
isPatternExprDeclarationOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:PatternExpr
(node
) ->SimpleName
static Optional<org.javatuples.Pair<com.github.javaparser.ast.stmt.TryStmt,
com.github.javaparser.ast.expr.VariableDeclarationExpr>> isResource
(com.github.javaparser.ast.body.VariableDeclarator vd) Test for this pattern:TryStmt
->VariableDeclarationExpr
->VariableDeclarator
(vd
)static Optional<com.github.javaparser.ast.stmt.TryStmt>
isResource
(com.github.javaparser.ast.expr.VariableDeclarationExpr vde) Test for this pattern:TryStmt
->VariableDeclarationExpr
(vde
)static Optional<org.javatuples.Triplet<com.github.javaparser.ast.stmt.TryStmt,
com.github.javaparser.ast.expr.VariableDeclarationExpr, com.github.javaparser.ast.body.VariableDeclarator>> isResourceOf
(com.github.javaparser.ast.Node node, String name) Test for this pattern:TryStmt
(node
) ->VariableDeclarationExpr
->VariableDeclarator
->SimpleName
(name
)static Optional<com.github.javaparser.ast.stmt.ReturnStmt>
isReturnExpr
(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:ReturnStmt
->VariableDeclarator
->Expression
(expr
)static Optional<com.github.javaparser.ast.expr.MethodCallExpr>
isScopeInMethodCall
(com.github.javaparser.ast.expr.Expression expr) Given anExpression
expr
, check ifexpr
is the scope of aMethodCallExpr
.static Optional<org.javatuples.Pair<com.github.javaparser.ast.expr.VariableDeclarationExpr,
com.github.javaparser.ast.body.VariableDeclarator>> isVariableDeclarationExprOf
(com.github.javaparser.ast.expr.Expression node, String name) Test for this pattern:VariableDeclarationExpr
(node
) ->VariableDeclarator
->SimpleName
(name
).static Optional<com.github.javaparser.ast.body.FieldDeclaration>
isVariableOfField
(com.github.javaparser.ast.body.VariableDeclarator vd) Test for this pattern:FieldDeclaration
->VariableDeclarator
(vd
.static Optional<org.javatuples.Triplet<com.github.javaparser.ast.stmt.ExpressionStmt,
com.github.javaparser.ast.expr.VariableDeclarationExpr, com.github.javaparser.ast.body.VariableDeclarator>> isVariableOfLocalDeclarationStmt
(com.github.javaparser.ast.body.VariableDeclarator vd) Test for this pattern:ExpressionStmt
->VariableDeclarationExpr
->VariableDeclarator
(vd
).static ASTs.ReverseEvaluationOrder
reversePreOrderIterator
(com.github.javaparser.ast.Node n) Returns an iterator for all the nodes in the AST that precedesn
in the pre-order ordering.
-
Constructor Details
-
ASTs
public ASTs()
-
-
Method Details
-
isAssigned
public static Optional<com.github.javaparser.ast.expr.AssignExpr> isAssigned(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:AssignExpr
->Expression
(expr
), where (expr
) is the right hand side expression of the assignment. -
isInitExpr
public static Optional<com.github.javaparser.ast.body.VariableDeclarator> isInitExpr(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:VariableDeclarator
->Expression
(expr
) -
isResource
public static Optional<com.github.javaparser.ast.stmt.TryStmt> isResource(com.github.javaparser.ast.expr.VariableDeclarationExpr vde) Test for this pattern:TryStmt
->VariableDeclarationExpr
(vde
) -
isInBlock
public static Optional<com.github.javaparser.ast.stmt.Statement> isInBlock(com.github.javaparser.ast.stmt.Statement stmt) Test for this pattern:Statement
->Node.getParentNode()
() -
isResource
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.stmt.TryStmt,com.github.javaparser.ast.expr.VariableDeclarationExpr>> isResource(com.github.javaparser.ast.body.VariableDeclarator vd) Test for this pattern:TryStmt
->VariableDeclarationExpr
->VariableDeclarator
(vd
) -
isForInitVariable
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.stmt.ForStmt,com.github.javaparser.ast.expr.VariableDeclarationExpr>> isForInitVariable(com.github.javaparser.ast.body.VariableDeclarator vd) Test for this pattern:ForStmt
->VariableDeclarationExpr
->VariableDeclarator
(vd
) -
isForEachVariable
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.stmt.ForEachStmt,com.github.javaparser.ast.expr.VariableDeclarationExpr>> isForEachVariable(com.github.javaparser.ast.body.VariableDeclarator vd) Test for this pattern:ForEachStmt
->VariableDeclarationExpr
->VariableDeclarator
(vd
) -
isScopeInMethodCall
public static Optional<com.github.javaparser.ast.expr.MethodCallExpr> isScopeInMethodCall(com.github.javaparser.ast.expr.Expression expr) Given anExpression
expr
, check ifexpr
is the scope of aMethodCallExpr
.- Returns:
- A
MethodCallExpr
withexpr
as its scope.
-
isVariableDeclarationExprOf
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.expr.VariableDeclarationExpr,com.github.javaparser.ast.body.VariableDeclarator>> isVariableDeclarationExprOf(com.github.javaparser.ast.expr.Expression node, String name) Test for this pattern:VariableDeclarationExpr
(node
) ->VariableDeclarator
->SimpleName
(name
).- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isExpressionStmtDeclarationOf
public static Optional<org.javatuples.Triplet<com.github.javaparser.ast.stmt.ExpressionStmt,com.github.javaparser.ast.expr.VariableDeclarationExpr, isExpressionStmtDeclarationOfcom.github.javaparser.ast.body.VariableDeclarator>> (com.github.javaparser.ast.Node node, String name) Test for this pattern:ExpressionStmt
(node
) ->VariableDeclarationExpr
->VariableDeclarator
->SimpleName
(name
)- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isForEachVariableDeclarationOf
public static Optional<org.javatuples.Triplet<com.github.javaparser.ast.stmt.ForEachStmt,com.github.javaparser.ast.expr.VariableDeclarationExpr, isForEachVariableDeclarationOfcom.github.javaparser.ast.body.VariableDeclarator>> (com.github.javaparser.ast.Node node, String name) Test for this pattern:ForEachStmt
(node
) ->VariableDeclarationExpr
->VariableDeclarator
->SimpleName
(name
)- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isPatternExprDeclarationOf
public static Optional<com.github.javaparser.ast.expr.PatternExpr> isPatternExprDeclarationOf(com.github.javaparser.ast.Node node, String name) Test for this pattern:PatternExpr
(node
) ->SimpleName
- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isLambdaExprParameterOf
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.expr.LambdaExpr,com.github.javaparser.ast.body.Parameter>> isLambdaExprParameterOf(com.github.javaparser.ast.Node node, String name) Test for this pattern:LambdaExpr
(node
) ->Parameter
->SimpleName
- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isExceptionParameterOf
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.stmt.CatchClause,com.github.javaparser.ast.body.Parameter>> isExceptionParameterOf(com.github.javaparser.ast.Node node, String name) Test for this pattern:CatchClause
(node
) ->Parameter
->SimpleName
- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isMethodFormalParameterOf
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.MethodDeclaration,com.github.javaparser.ast.body.Parameter>> isMethodFormalParameterOf(com.github.javaparser.ast.Node node, String name) Test for this pattern:MethodDeclaration
(node
) ->Parameter
->SimpleName
- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isMethodTypeParameterOf
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.MethodDeclaration,com.github.javaparser.ast.type.TypeParameter>> isMethodTypeParameterOf(com.github.javaparser.ast.Node node, String name) Test for this pattern:MethodDeclaration
(node
) ->TypeParameter
->SimpleName
- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isNamedMemberOf
public static Optional<com.github.javaparser.ast.nodeTypes.NodeWithSimpleName<?>> isNamedMemberOf(com.github.javaparser.ast.body.BodyDeclaration<?> bodyDecl, String name) Test for this pattern:NodeWithSimpleName
(bDecl
) ->SimpleName
, withname
as theSimpleName
.- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isFieldDeclarationOf
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.FieldDeclaration,com.github.javaparser.ast.body.VariableDeclarator>> isFieldDeclarationOf(com.github.javaparser.ast.body.BodyDeclaration<?> bDecl, String name) Test for this pattern:FieldDeclaration
(bDecl
) ->VariableDeclarator
->SimpleName
, withname
as theSimpleName
.- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isClassTypeParameterOf
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.ClassOrInterfaceDeclaration,com.github.javaparser.ast.type.TypeParameter>> isClassTypeParameterOf(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration classDecl, String name) Test for this pattern:ClassOrInterfaceDeclaration
(classDecl
) ->TypeParameter
->SimpleName
, withname
as theSimpleName
.- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isEnumConstantOf
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.EnumDeclaration,com.github.javaparser.ast.body.EnumConstantDeclaration>> isEnumConstantOf(com.github.javaparser.ast.body.EnumDeclaration enumDecl, String name) Test for this pattern:EnumDeclaration
(enumDecl
) ->EnumConstantDeclaration
->SimpleName
, withname
as theSimpleName
.- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isConstructorFormalParameterOf
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.ConstructorDeclaration,com.github.javaparser.ast.body.Parameter>> isConstructorFormalParameterOf(com.github.javaparser.ast.Node node, String name) Test for this pattern:ConstructorDeclaration
(node
) ->Parameter
->SimpleName
- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isConstructorTypeParameterOf
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.body.ConstructorDeclaration,com.github.javaparser.ast.type.TypeParameter>> isConstructorTypeParameterOf(com.github.javaparser.ast.Node node, String name) Test for this pattern:ConstructorDeclaration
(node
) ->TypeParameter
->SimpleName
- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isLocalTypeDeclarationOf
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.stmt.LocalClassDeclarationStmt,com.github.javaparser.ast.body.ClassOrInterfaceDeclaration>> isLocalTypeDeclarationOf(com.github.javaparser.ast.Node node, String name) Test for this pattern:LocalClassDeclarationStmt
(node
) ->ClassOrInterfaceDeclaration
->SimpleName
- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isLocalRecordDeclarationOf
public static Optional<org.javatuples.Pair<com.github.javaparser.ast.stmt.LocalRecordDeclarationStmt,com.github.javaparser.ast.body.RecordDeclaration>> isLocalRecordDeclarationOf(com.github.javaparser.ast.Node node, String name) Test for this pattern:LocalRecordDeclarationStmt
(node
) ->RecordDeclaration
->SimpleName
- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isClassFieldDeclarationOf
public static Optional<org.javatuples.Triplet<com.github.javaparser.ast.body.ClassOrInterfaceDeclaration,com.github.javaparser.ast.body.FieldDeclaration, isClassFieldDeclarationOfcom.github.javaparser.ast.body.VariableDeclarator>> (com.github.javaparser.ast.Node node, String name) Test for this pattern:ClassOrInterfaceDeclaration
(node
) ->FieldDeclaration
->VariableDeclarator
->SimpleName
- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isForVariableDeclarationOf
public static Optional<org.javatuples.Triplet<com.github.javaparser.ast.stmt.ForStmt,com.github.javaparser.ast.expr.VariableDeclarationExpr, isForVariableDeclarationOfcom.github.javaparser.ast.body.VariableDeclarator>> (com.github.javaparser.ast.Node node, String name) Test for this pattern:ForStmt
(node
) ->VariableDeclarationExpr
->VariableDeclarator
->SimpleName
- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isResourceOf
public static Optional<org.javatuples.Triplet<com.github.javaparser.ast.stmt.TryStmt,com.github.javaparser.ast.expr.VariableDeclarationExpr, isResourceOfcom.github.javaparser.ast.body.VariableDeclarator>> (com.github.javaparser.ast.Node node, String name) Test for this pattern:TryStmt
(node
) ->VariableDeclarationExpr
->VariableDeclarator
->SimpleName
(name
)- Returns:
- A tuple with the above pattern in order sans the
SimpleName
.
-
isReturnExpr
public static Optional<com.github.javaparser.ast.stmt.ReturnStmt> isReturnExpr(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:ReturnStmt
->VariableDeclarator
->Expression
(expr
) -
isArgumentOfMethodCall
public static Optional<com.github.javaparser.ast.expr.MethodCallExpr> isArgumentOfMethodCall(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:MethodCallExpr
->Expression
(expr
), whereexpr
is an argument. -
isArgumentOfObjectCreationExpression
public static Optional<com.github.javaparser.ast.expr.ObjectCreationExpr> isArgumentOfObjectCreationExpression(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:ObjectCreationExpr
->Expression
(expr
), whereexpr
is an argument. -
isLocalVariableDeclarator
public static boolean isLocalVariableDeclarator(com.github.javaparser.ast.body.VariableDeclarator vd) Checks ifvd
is a local declaration. -
isConstructorArgument
public static Optional<com.github.javaparser.ast.expr.ObjectCreationExpr> isConstructorArgument(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:ObjectCreationExpr
->Expression
(expr
), where (expr
) is one of the constructor arguments. -
isVariableOfLocalDeclarationStmt
public static Optional<org.javatuples.Triplet<com.github.javaparser.ast.stmt.ExpressionStmt,com.github.javaparser.ast.expr.VariableDeclarationExpr, isVariableOfLocalDeclarationStmtcom.github.javaparser.ast.body.VariableDeclarator>> (com.github.javaparser.ast.body.VariableDeclarator vd) Test for this pattern:ExpressionStmt
->VariableDeclarationExpr
->VariableDeclarator
(vd
).- Returns:
- A tuple with the above pattern.
-
isVariableOfField
public static Optional<com.github.javaparser.ast.body.FieldDeclaration> isVariableOfField(com.github.javaparser.ast.body.VariableDeclarator vd) Test for this pattern:FieldDeclaration
->VariableDeclarator
(vd
. -
findMethodBodyFrom
public static Optional<com.github.javaparser.ast.body.MethodDeclaration> findMethodBodyFrom(com.github.javaparser.ast.Node node) Searches up the AST to find the method body from the givenNode
. There could be orphan statements like variable declarations outside a constructor. -
findBlockStatementFrom
public static Optional<com.github.javaparser.ast.stmt.BlockStmt> findBlockStatementFrom(com.github.javaparser.ast.Node node) Searches up the AST to find theBlockStmt
given theNode
. Eventually these other methods should be refactored to useOptional
patterns. -
findParentStatementFrom
public static Optional<com.github.javaparser.ast.stmt.Statement> findParentStatementFrom(com.github.javaparser.ast.Node node) Searches up the AST to find theStatement
given theNode
. -
findTypeFrom
public static com.github.javaparser.ast.body.ClassOrInterfaceDeclaration findTypeFrom(com.github.javaparser.ast.Node node) Searches up the AST to find theClassOrInterfaceDeclaration
givenNode
. There could be orphan statements I guess in stray Java files, so return null if we ever run into that? Not sure how expected that will be, so not sure if I should make it an exception-based pattern. -
isFinalOrNeverAssigned
Given aLocalVariableDeclaration
verifies if it is final or never assigned. See Java Language Specification - Section 4.12.14 for the definitions of final variables. -
isFinalOrNeverAssigned
public static boolean isFinalOrNeverAssigned(com.github.javaparser.ast.body.VariableDeclarator vd, LocalScope scope) Given aSimpleName
name
and aVariableDeclarationExpr
with a declarator ofname
, verifies ifname
is final or never assigned. See Java Language Specification - Section 4.12.14 for the definitions of final variables. -
findThisDeclaration
public static com.github.javaparser.ast.body.ClassOrInterfaceDeclaration findThisDeclaration(com.github.javaparser.ast.expr.ThisExpr thisExpr) Finds theClassOrInterfaceDeclaration
that is referenced by aThisExpr
. -
isNotInitializedAndAssignedAtMostOnce
Checks if a local variable is not initialized and is assigned at most once. -
findAllReferences
public static List<com.github.javaparser.ast.expr.NameExpr> findAllReferences(LocalVariableDeclaration localDeclaration) Returns aList
containing all the referenced oflocalDeclaration
in its scope. -
reversePreOrderIterator
Returns an iterator for all the nodes in the AST that precedesn
in the pre-order ordering. -
findNonCallableSimpleNameSource
public static Optional<com.github.javaparser.ast.Node> findNonCallableSimpleNameSource(com.github.javaparser.ast.expr.SimpleName name) Tries to find the declaration that originates aSimpleName
use that is a Simple Expression Name, Simple Type Name, or Type Parameter within the AST. See Java Language Specification - 6.5.6.1 Simple Expression Names and Java Language Specification - 6.5.5.1 Simple Type Names .- Returns:
- a
Node
that contains a declaration ofname
if it exists within the file. Will be one of the following:Parameter
,VariableDeclarator
,TypeParameter
,RecordDeclaration
,PatternExpr
,ClassOrInterfaceDeclaration
.
-
findNonCallableSimpleNameSource
public static Optional<com.github.javaparser.ast.Node> findNonCallableSimpleNameSource(com.github.javaparser.ast.Node start, String name) Tries to find a declaration ofname
that is in scope at the givenNode
start
within the AST. It assumesname
is either a Simple Expression name, Simple Type Name or Type Parameter. See Java Language Specification - 6.5.6.1 Simple Expression Names and Java Language Specification - 6.5.5.1 Simple Type Names .- Returns:
- a
Node
that contains a declaration ofname
if it exists within the file. Will be one of the following:Parameter
,VariableDeclarator
,TypeParameter
,RecordDeclaration
,PatternExpr
,ClassOrInterfaceDeclaration
.
-
findEarliestLocalVariableDeclarationOf
public static Optional<LocalVariableDeclaration> findEarliestLocalVariableDeclarationOf(com.github.javaparser.ast.Node start, String name) Staring from theNode
start
, checks if there exists a local variable declaration whose name isname
. -
findEarliestLocalDeclarationOf
public static Optional<LocalDeclaration> findEarliestLocalDeclarationOf(com.github.javaparser.ast.expr.SimpleName name) Staring from theNode
start
, checks if there exists a local variable declaration whose name isname
. -
findEarliestLocalDeclarationOf
public static Optional<LocalDeclaration> findEarliestLocalDeclarationOf(com.github.javaparser.ast.Node start, String name) Staring from theNode
start
, checks if there exists a local variable declaration whose name isname
.
-