Class ASTs

java.lang.Object
io.codemodder.ast.ASTs

public final class ASTs extends Object
A static library for querying and returning patterns over AST nodes.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static final class 
    A Node iterator iterating over all the nodes that precedes a given node in the pre-order of its AST.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static Stream<com.github.javaparser.ast.expr.AssignExpr>
    Finds all assignments of a local variable declaration
    static List<com.github.javaparser.ast.expr.NameExpr>
    Returns a List containing all the referenced of localDeclaration in its scope.
    static Optional<com.github.javaparser.ast.stmt.BlockStmt>
    findBlockStatementFrom(com.github.javaparser.ast.Node node)
    Searches up the AST to find the BlockStmt given the Node.
    findEarliestLocalDeclarationOf(com.github.javaparser.ast.expr.SimpleName name)
    Staring from the Node start, checks if there exists a local variable declaration whose name is name.
    findEarliestLocalDeclarationOf(com.github.javaparser.ast.Node start, String name)
    Staring from the Node start, checks if there exists a local variable declaration whose name is name.
    findEarliestLocalVariableDeclarationOf(com.github.javaparser.ast.Node start, String name)
    Staring from the Node start, checks if there exists a local variable declaration whose name is name.
    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 given Node.
    static Optional<com.github.javaparser.ast.Node>
    findNonCallableSimpleNameSource(com.github.javaparser.ast.expr.SimpleName name)
    Tries to find the declaration that originates a SimpleName 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 of name that is in scope at the given Node 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 the Statement given the Node.
    static com.github.javaparser.ast.body.ClassOrInterfaceDeclaration
    findThisDeclaration(com.github.javaparser.ast.expr.ThisExpr thisExpr)
    Finds the ClassOrInterfaceDeclaration that is referenced by a ThisExpr.
    static com.github.javaparser.ast.body.ClassOrInterfaceDeclaration
    findTypeFrom(com.github.javaparser.ast.Node node)
    Searches up the AST to find the ClassOrInterfaceDeclaration given Node.
    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), where expr 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), where expr 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, with name as the SimpleName.
    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, with name as the SimpleName.
    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, with name as the SimpleName.
    static boolean
    isFinalOrNeverAssigned(com.github.javaparser.ast.body.VariableDeclarator vd, LocalScope scope)
    Given a SimpleName name and a VariableDeclarationExpr with a declarator of name, verifies if name is final or never assigned.
    static boolean
    Given a LocalVariableDeclaration 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 if vd 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, with name as the SimpleName.
    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 an Expression expr, check if expr is the scope of a MethodCallExpr.
    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.
    reversePreOrderIterator(com.github.javaparser.ast.Node n)
    Returns an iterator for all the nodes in the AST that precedes n in the pre-order ordering.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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 an Expression expr, check if expr is the scope of a MethodCallExpr.
      Returns:
      A MethodCallExpr with expr 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,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)
      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,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)
      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, with name as the SimpleName.
      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, with name as the SimpleName.
      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, with name as the SimpleName.
      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, with name as the SimpleName.
      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,com.github.javaparser.ast.body.VariableDeclarator>> isClassFieldDeclarationOf(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,com.github.javaparser.ast.body.VariableDeclarator>> isForVariableDeclarationOf(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,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)
      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), where expr 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), where expr is an argument.
    • isLocalVariableDeclarator

      public static boolean isLocalVariableDeclarator(com.github.javaparser.ast.body.VariableDeclarator vd)
      Checks if vd 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,com.github.javaparser.ast.body.VariableDeclarator>> isVariableOfLocalDeclarationStmt(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 given Node. 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 the BlockStmt given the Node. Eventually these other methods should be refactored to use Optional patterns.
    • findParentStatementFrom

      public static Optional<com.github.javaparser.ast.stmt.Statement> findParentStatementFrom(com.github.javaparser.ast.Node node)
      Searches up the AST to find the Statement given the Node.
    • findTypeFrom

      public static com.github.javaparser.ast.body.ClassOrInterfaceDeclaration findTypeFrom(com.github.javaparser.ast.Node node)
      Searches up the AST to find the ClassOrInterfaceDeclaration given Node. 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

      public static boolean isFinalOrNeverAssigned(LocalVariableDeclaration lvd)
      Given a LocalVariableDeclaration 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 a SimpleName name and a VariableDeclarationExpr with a declarator of name, verifies if name 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 the ClassOrInterfaceDeclaration that is referenced by a ThisExpr.
    • isNotInitializedAndAssignedAtMostOnce

      public static boolean isNotInitializedAndAssignedAtMostOnce(LocalVariableDeclaration lvd)
      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 a List containing all the referenced of localDeclaration 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

      public static ASTs.ReverseEvaluationOrder reversePreOrderIterator(com.github.javaparser.ast.Node n)
      Returns an iterator for all the nodes in the AST that precedes n 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 a SimpleName 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 of name 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 of name that is in scope at the given Node start within the AST. It assumes name 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 of name 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 the Node start, checks if there exists a local variable declaration whose name is name.
    • findEarliestLocalDeclarationOf

      public static Optional<LocalDeclaration> findEarliestLocalDeclarationOf(com.github.javaparser.ast.expr.SimpleName name)
      Staring from the Node start, checks if there exists a local variable declaration whose name is name.
    • findEarliestLocalDeclarationOf

      public static Optional<LocalDeclaration> findEarliestLocalDeclarationOf(com.github.javaparser.ast.Node start, String name)
      Staring from the Node start, checks if there exists a local variable declaration whose name is name.