java - 如何使用antlr或javaparser查找Java中将字符串文字分配给变量的所有赋值语句?

标签 java antlr javaparser

我正在尝试在 Java 中找到硬编码的字符串赋值语句。我正在尝试使用 antlr 或 javaparser,但不知道如何查找赋值语句?

Javaparser 似乎是一个不错的选择。它支持声明等。我试图找到变量声明等,但不是赋值语句。我如何使用它来查找将字符串文字分配给变量的赋值语句。

最佳答案

这是我使用的一种方法。

  • 生成示例 Java 文件的可视化 AST,例如包含您要查找的硬编码表达式的文件。 JavaParser 可以输出 DOT 文件(例如 blog entry ),这是在 AST 中查找您感兴趣的节点的好方法。
  • 我从可视化中看到我感兴趣的节点是带有初始值设定项的 VariableDeclarator,因此我遵循 example使用 VoidVisitorAdapter 并覆盖相应的 visit 方法。一个好的 IDE (IntelliJ) 帮助我完成了剩下的事情:

    public void visit(VariableDeclarator variableDeclarator, Void arg) {
        super.visit(variableDeclarator, arg);
        variableDeclarator.getInitializer().ifPresent(expression -> {
            expression.ifStringLiteralExpr(stringLiteralExpr -> {/* do something */})
    }
    

关于java - 如何使用antlr或javaparser查找Java中将字符串文字分配给变量的所有赋值语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54363810/

相关文章:

Java Map - 整数值转换为字符串

java - 如何在流迭代期间使用丰富(外部)调用?

c#-4.0 - 如何在 Antlr4 中的解析器给出的运行时收集错误

antlr - 从 ANTLR 文法生成 AST

Javaparser:获取方法返回类型的泛型类,如 List<MyClass>

java - 如何计算Java中的时差?

java - 如何使用 itext 进行分页

java - ANTLR 解析器规则中的/s/S

java - 使用 Javaparser 访问 Javadoc 返回 null

java - 如何在 Java 中自动实现跟踪关注点