0
public void visitToken(DetailAST aAST) {}

我正在尝试编写自定义检查样式规则。我对 TokenTypes.STRING_LITERAL 感兴趣。这种方法的问题是,一个字符串可能是一个连接的字符串、StringBuffer、StringBuilder,或者可能在一个方法中。

请耐心等待,因为我是 Checkstyle 编码的新手。

  1. 如果将其连接起来,我如何获得完整的字符串。aAST 似乎将它们作为单独的字符串文字吐出。

  2. 还有另一种方法来获取完整的字符串吗?

任何指针,非常感谢。

4

1 回答 1

0

这在 Checkstyle 中很难做到,因为 Checkstyle 纯粹在 AST 上工作。它不是编译器,因此它不知道运行时类型或句法含义。

因此,为了使用 Checkstyle 执行此操作,您必须手动分析 AST 并手动构建您的串联字符串。如果部分字符串是通过静态方法或使用 StringBuilder/StringBuffer 生成的,那么我会说通过 AST 分析找到完整字符串的任务几乎是不可能的。

相反,您可能想查看可能更适合您的任务的其他静态代码分析工具。例如, FindBugs对编译后的代码起作用,并且通常能够执行非常复杂的检查。但是,它比 Checkstyle 需要更多的资源来运行,并且在旧机器上,您可能无法让 FindBugs 在保存到 IDE 时自动运行。

于 2013-01-30T22:29:56.573 回答