我正在尝试在 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/