public void visitToken(DetailAST aAST) {}
我正在尝试编写自定义checkstyle规则。我对TokenTypes.STRING_LITERAL感兴趣。这种方法的问题是,字符串可能是串联字符串,StringBuffer,StringBuilder或可能在方法中。
请耐心等待我,因为我是Checkstyle编码的新手。
如果连接完整字符串,如何获取完整字符串。 aAST似乎将它们作为单独的字符串文字吐出。
还有其他方法可以获取完整的字符串吗?
任何指针,非常感谢。
答案 0 :(得分:0)
这在Checkstyle中很难做到,因为Checkstyle完全适用于AST。它不是编译器,因此它不了解运行时类型或语法含义。
因此,为了使用Checkstyle执行此操作,您必须手动分析AST并手动构建连接的String。如果String的一部分是由静态方法生成的,或者是使用StringBuilder / StringBuffer生成的,那么我会说通过AST分析找到完整的String的任务变得几乎不可能。
相反,您可能希望查看可能更适合您的任务的其他静态代码分析工具。例如,FindBugs适用于已编译的代码,通常能够执行相当复杂的检查。但是,运行比Checkstyle需要更多资源,在旧机器上,您可能无法在IDE中保存时自动运行FindBug。