- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编写一个实用程序来检查 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/
发现一个类似的问题,关于 QAPlug-FindBugs 和 FindBugs-IDEA 之间的区别,但不是关于 CheckStyle... 我认为(根据以前的经验)这些插件的一个区别是 QAPlug
试图弄清楚我是否做错了什么,或者这是否是 maven checkstyle 插件中的错误。如果我执行 mvn checkstyle:check 我会得到这个: jonathanfisher@odin
我想确保我的代码不超过 5 级缩进,如下所示: class Foo { // 0 void bar() { // 1 if () { // 2 if (
FileTabCharacter检查似乎对我不起作用。下面是我的配置: .. .. .. .. .. .. 我有 XML 文件 - pom.xml和 checksty
有没有办法设置 checkstyle 来防止方法体中的前导、多个或尾随空行: 例如 private void a() { - int a = 1; doStuff(a); - - doMoreStuf
有没有办法设置 checkstyle 来防止方法体中的前导、多个或尾随空行: 例如 private void a() { - int a = 1; doStuff(a); - - doMoreStuf
我是 CheckStyle 等 Java 静态代码分析工具的新手。我下载了 Checkstyle 包并看到了 2 组检查: checkstyle_checks.xml sun_checks.xml。
我想使用//@checkstyle:off 和//@checkstyle:on 来免除代码的某些部分被 checkstyle 检查,但它仍然在提示。 public void invoke() {
我正在尝试将 import-control 添加到我们的 checkstyle 中,使 import-control 文件存在于制作 checstyle.xml 文件的项目中,而不是我们稍后构建的项目
我跑了mvn checkstyle:checkstyle ,但它没有使用我的自定义 checkstyle XML 文件。 请告诉我如何使用我自己的 checkstyle 文件而不是默认/现在配置的文件
执行命令mvn checkstyle:checkstyle时出现以下错误: An error has occurred in Checkstyle report generation. ... Cau
在我正在处理的一个项目中,我们有很多自定义 Checkstyle 检查。例如,我们使用 RegexpSingleline 模块排除所有类型的东西。我们的检查样式规则如下所示:
我正在使用 checkstyle获取有关我的源代码的报告。这个问题是关于MagicNumberCheck . 我正在使用 Date/(org.joda.)DateTime在我的源代码中是这样的: Da
我通过命令行上的 mvn 构建我的项目。 每当发生 checkStyle 错误时,我都会看到这种类型的输出: [ERROR] Failed to execute goal org.apache.mav
我有一个使用 Tycho 构建的 Eclipse 插件代码库。它使用在依赖 Artifact 中定义的父 POM,该 Artifact 指定 Checkstyle 配置的名称。 我还使用 checks
我是使用 Jenkins 的新手,我最近用它构建了一个项目并安装了“Checkstyle”插件并收到了一份报告。 我想知道如何配置“Checkstyle”以忽略空格或其他可能出现的标准? 谢谢! 最佳
我过去使用过检查样式,记得使用快捷键来应用检查样式修复(节省大量点击)。我不记得我是否为它设置了快捷方式,或者它是否已经附带了一个。 我的问题分为两部分:1)有没有一种简单的方法来检查是否有“Appl
我正在使用一个基本的 maven 项目,其中在 pom.xml 中只定义了以下内容: 依赖 javaee-api 依赖 junit 插件 maven-compile-plugin 插件 maven-w
我试图让 maven-checkstyle-plugin 对我们所有的项目使用相同的配置文件。 我尝试了几种方法,但没有一种是有效的。 唯一似乎有效的是当我将配置文件放在我的 maven 项目的根目录
我在 maven 构建中添加了 checkstyle 但由于某种原因它只检查 src/main 文件夹并忽略 src/test 文件夹,这是我的项目结构: Proj - Module A -
我是一名优秀的程序员,十分优秀!