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 classANodeiterator iterating over all the nodes that precedes a given node in the pre-order of its AST. -
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 aListcontaining all the referenced oflocalDeclarationin its scope.static Optional<com.github.javaparser.ast.stmt.BlockStmt>findBlockStatementFrom(com.github.javaparser.ast.Node node) Searches up the AST to find theBlockStmtgiven theNode.static Optional<LocalDeclaration>findEarliestLocalDeclarationOf(com.github.javaparser.ast.expr.SimpleName name) Starting from theNodestart, 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 theNodestart, 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 theNodestart, 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 aSimpleNameuse 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 ofnamethat is in scope at the givenNodestartwithin the AST.static Optional<com.github.javaparser.ast.stmt.Statement>findParentStatementFrom(com.github.javaparser.ast.Node node) Searches up the AST to find theStatementgiven theNode.static com.github.javaparser.ast.body.ClassOrInterfaceDeclarationfindThisDeclaration(com.github.javaparser.ast.expr.ThisExpr thisExpr) Finds theClassOrInterfaceDeclarationthat is referenced by aThisExpr.static com.github.javaparser.ast.body.ClassOrInterfaceDeclarationfindTypeFrom(com.github.javaparser.ast.Node node) Searches up the AST to find theClassOrInterfaceDeclarationgivenNode.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), whereexpris 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), whereexpris 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->SimpleNamestatic 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, withnameas 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->SimpleNamestatic 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->SimpleNamestatic 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, withnameas 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->SimpleNamestatic 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<com.github.javaparser.ast.stmt.ExpressionStmt>isExpressionStmtExpr(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:ExpressionStmt->Expression(expr).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, withnameas theSimpleName.static booleanisFinalOrNeverAssigned(com.github.javaparser.ast.body.VariableDeclarator vd, LocalScope scope) Given aSimpleNamenameand aVariableDeclarationExprwith a declarator ofname, verifies ifnameis final or never assigned.static booleanGiven aLocalVariableDeclarationverifies 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->SimpleNamestatic 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->SimpleNamestatic 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->SimpleNamestatic 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->SimpleNamestatic booleanisLocalVariableDeclarator(com.github.javaparser.ast.body.VariableDeclarator vd) Checks ifvdis 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->SimpleNamestatic 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->SimpleNamestatic Optional<com.github.javaparser.ast.nodeTypes.NodeWithSimpleName<?>>isNamedMemberOf(com.github.javaparser.ast.body.BodyDeclaration<?> bodyDecl, String name) Test for this pattern:NodeWithSimpleName(bDecl) ->SimpleName, withnameas theSimpleName.static booleanChecks 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) ->SimpleNamestatic 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 anExpressionexpr, check ifexpris 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.ExpressionresolveLocalExpression(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.ReverseEvaluationOrderreversePreOrderIterator(com.github.javaparser.ast.Node n) Returns an iterator for all the nodes in the AST that precedesnin the pre-order ordering.
-
Method Details
-
isExpressionStmtExpr
public static Optional<com.github.javaparser.ast.stmt.ExpressionStmt> isExpressionStmtExpr(com.github.javaparser.ast.expr.Expression expr) Test for this pattern:ExpressionStmt->Expression(expr). -
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 anExpressionexpr, check ifexpris the scope of aMethodCallExpr.- Returns:
- A
MethodCallExprwithexpras 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, withnameas 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, withnameas 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, withnameas 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, withnameas 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), whereexpris 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), whereexpris an argument. -
isLocalVariableDeclarator
public static boolean isLocalVariableDeclarator(com.github.javaparser.ast.body.VariableDeclarator vd) Checks ifvdis 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 theBlockStmtgiven theNode. Eventually these other methods should be refactored to useOptionalpatterns. -
findParentStatementFrom
public static Optional<com.github.javaparser.ast.stmt.Statement> findParentStatementFrom(com.github.javaparser.ast.Node node) Searches up the AST to find theStatementgiven theNode. -
findTypeFrom
public static com.github.javaparser.ast.body.ClassOrInterfaceDeclaration findTypeFrom(com.github.javaparser.ast.Node node) Searches up the AST to find theClassOrInterfaceDeclarationgivenNode. 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 aLocalVariableDeclarationverifies 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 aSimpleNamenameand aVariableDeclarationExprwith a declarator ofname, verifies ifnameis 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 theClassOrInterfaceDeclarationthat 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 aListcontaining all the referenced oflocalDeclarationin 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 precedesnin 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 aSimpleNameuse 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
Nodethat contains a declaration ofnameif 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 ofnamethat is in scope at the givenNodestartwithin the AST. It assumesnameis 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
Nodethat contains a declaration ofnameif 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 theNodestart, 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 theNodestart, 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 theNodestart, 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.
-