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 Stream<com.github.javaparser.ast.expr.AssignExpr>
Finds all assignments of a local variable declarationstatic 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) Starting 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) Starting 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) Starting 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 List<com.github.javaparser.ast.expr.MethodCallExpr>
findMethodCallsWhichAreAssignedToType
(com.github.javaparser.ast.CompilationUnit cu, int line, Integer column, String methodName, List<String> assignedToTypes) This finds all methods that match the given location, with the given name, and is assigned to a variable of one of the given types.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.NameExpr>
hasNamedTarget
(com.github.javaparser.ast.expr.AssignExpr assignExpr) Test for this pattern:AssignExpr
(assignExpr
) ->NameExpr
, where (expr
) is the left hand side of the assignment.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 com.github.javaparser.ast.expr.Expression
resolveLocalExpression
(com.github.javaparser.ast.expr.Expression expr) Tries to find the source of an expression if it can be uniquely defined, otherwise, returns self.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. -
resolveLocalExpression
public static com.github.javaparser.ast.expr.Expression resolveLocalExpression(com.github.javaparser.ast.expr.Expression expr) Tries to find the source of an expression if it can be uniquely defined, otherwise, returns self. -
hasNamedTarget
public static Optional<com.github.javaparser.ast.expr.NameExpr> hasNamedTarget(com.github.javaparser.ast.expr.AssignExpr assignExpr) Test for this pattern:AssignExpr
(assignExpr
) ->NameExpr
, where (expr
) is the left hand side of the assignment. -
findAllAssignments
public static Stream<com.github.javaparser.ast.expr.AssignExpr> findAllAssignments(LocalVariableDeclaration lvd) Finds all assignments of a local variable declaration -
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) Starting 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) Starting 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) Starting from theNode
start
, checks if there exists a local variable declaration whose name isname
. -
findMethodCallsWhichAreAssignedToType
public static List<com.github.javaparser.ast.expr.MethodCallExpr> findMethodCallsWhichAreAssignedToType(com.github.javaparser.ast.CompilationUnit cu, int line, Integer column, String methodName, List<String> assignedToTypes) This finds all methods that match the given location, with the given name, and is assigned to a variable of one of the given types.
-