Mik*_*icz 6 java findbugs checkstyle pmd atlassian-plugin-sdk
我正在编写一个实用程序来检查Atlassian Stash对已修改文件的拉取请求 - 目标是通过Checkstyle(或Findbugs或PMD)运行每个Java文件,然后对每行有插件注释有问题.
为此,插件必须通过Checkstyle(或其他代码样式执行实用程序)运行请求中每个已修改 Java文件的内容.Atlassian Stash API使获取修改文件的内容变得非常容易,但似乎无法以编程方式通过Checkstyle运行这些内容 - 唯一的方法是将临时文件保存在磁盘上并运行Checkstyle通过调用Runtime.getRuntime().exec(...)命令来反对它.
是否有任何简化的类似Checkstyle的实用程序可以使用Java API以编程方式运行?
我基本上需要能做类似这样的事情:
String contentsOfJavaFile = ; //stuff
List<Problem> problems = CheckstyleOrSomethingElse.analyze(contentsOfJavaFile);
for(Problem p : problems) {
// p.getLine();
// p.getDescription();
// add comment to Stash
}
Run Code Online (Sandbox Code Playgroud)
这可能只是您问题的部分答案,但它仍然可以节省其他人一些时间:
我已经为 Checkstyle 查看过这个问题。Checkstyle(从 5.7 源代码开始)不提供分析文件以外的任何内容的方法。唯一相关的Checker方法是int process(List<File> aFiles). 我还查看了 Eclipse-CS 和 Checkstyle-IDEA 插件,看看它们是如何处理这个问题的。两者都经过(临时)文件。
因此,如果您的工具是 Checkstyle,则必须创建一个临时文件。
让我补充一下(即使您没有明确要求这一点),我相信您只能认真追求“免费、个性化工具”方法,如果它包括 Checkstyle。仅使用 FindBugs 和 PMD 而不使用 Checkstyle 可能是不够的(并且它们可能还需要临时文件)。因此,您可以创建临时文件,也可以使用完全不同的解决方案,例如免费的 SonarQube 或与 Atlassian 工具套件集成的商业解决方案。