如何使用 JDT-AST 在已知行中提取条件?

How to extract a condition in a known line using JDT-AST?

我有这样的方法:

public static int calc(int a, int b) {
        if (a >= b)
            return a - b;
        return 0;
}

我想知道在已知行号上使用的条件。在这种情况下,我的预期结果是条件的名称,例如“>=”。

我知道如何解析给定 ICompilationUnitCompilationUnit。但是我怎样才能得到条件呢?

为此你必须创建一个 ASTVisitor 来访问所有的中缀表达式。在访问者 class 中,访问方法将具有以下内容:

@Override
public boolean visit(InfixExpression node) {
    Operator op= node.getOperator();
    if(op.equals(Operator.GREATER) || op.equals(Operator.EQUALS) || ....)
        conditionalInfixExpressionList.add(node);
    return super.visit(node);
}

visit方法中的if语句中,你必须检查中缀表达式是否是一个条件变量,并相应地将它添加到列表中。