gpt4 book ai didi

java - 如何以编程方式在文件 *content* 上运行 Checkstyle、Findbugs 或 PMD

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:28 26 4
gpt4 key购买 nike

我正在编写一个实用程序来检查 Atlassian Stash修改文件的拉取请求 - 目标是通过 Checkstyle(或 Findbugs 或 PMD)运行每个 Java 文件,然后让插件对每一行有问题的行进行评论。

为此,插件必须通过 Checkstyle(或其他代码风格实现实用程序)运行请求中每个修改 Java 文件的内容。 Atlassian Stash API 使得获取修改文件的内容变得非常容易,但似乎不可能以编程方式通过 Checkstyle 运行这些内容——唯一的方法是在磁盘上保存一个临时文件并运行 Checkstyle通过调用 Runtime.getRuntime().exec(...) 命令来对抗它。

是否有任何可以使用 Java API 以编程方式运行的类似 Checkstyle 的简化实用程序?

我基本上需要可以做这样的事情的东西:

String contentsOfJavaFile = ; //stuff
List<Problem> problems = CheckstyleOrSomethingElse.analyze(contentsOfJavaFile);

for(Problem p : problems) {
// p.getLine();
// p.getDescription();
// add comment to Stash
}

最佳答案

这可能只是对您问题的部分回答,但它仍然可以为其他人节省一些时间:

我已经为 Checkstyle 研究了这个问题。 Checkstyle(从 5.7 源开始)不提供分析文件以外任何东西的方法。唯一相关的Checker方法是 int process(List<File> aFiles) .我还查看了 Eclipse-CS 和 Checkstyle-IDEA 插件,看看它们是如何处理这个问题的。两者都通过(临时)文件。

因此,如果您的工具是 Checkstyle,则必须创建一个临时文件。

让我补充一点(即使您没有明确要求),我相信您只有在包含 Checkstyle 的情况下才能认真追求“免费的、单独的工具”方法。仅使用 FindBugs 和 PMD 而不使用 Checkstyle 可能是不够的(并且它们可能还需要临时文件)。因此,您可以创建临时文件,也可以使用完全不同的解决方案,例如免费的 SonarQube 或与您的 Atlassian 工具套件集成的商业解决方案。

关于java - 如何以编程方式在文件 *content* 上运行 Checkstyle、Findbugs 或 PMD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24501153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com