Checkstyle DetailAST,StringLiteral

时间:2013-01-30 19:39:44

标签: antlr checkstyle rule

public void visitToken(DetailAST aAST) {}

我正在尝试编写自定义checkstyle规则。我对TokenTypes.STRING_LITERAL感兴趣。这种方法的问题是,字符串可能是串联字符串,StringBuffer,StringBuilder或可能在方法中。

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

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

  2. 还有其他方法可以获取完整的字符串吗?

  3. 任何指针,非常感谢。

1 个答案:

答案 0 :(得分:0)

这在Checkstyle中很难做到,因为Checkstyle完全适用于AST。它不是编译器,因此它不了解运行时类型或语法含义。

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

相反,您可能希望查看可能更适合您的任务的其他静态代码分析工具。例如,FindBugs适用于已编译的代码,通常能够执行相当复杂的检查。但是,运行比Checkstyle需要更多资源,在旧机器上,您可能无法在IDE中保存时自动运行FindBug。