Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以从Java程序中调用checkstyle?_Java_Checkstyle - Fatal编程技术网

有没有一种方法可以从Java程序中调用checkstyle?

有没有一种方法可以从Java程序中调用checkstyle?,java,checkstyle,Java,Checkstyle,我有一个Java程序,它创建了我想要运行checkstyle的文件路径列表。我很好奇是否有一种方法可以从程序中直接运行checkstyle,或者是否需要使用CLI。是的,这是可能的,尽管它不是一个文档化的API,而是一组有效的调用,并且保持了相当稳定。事实上,IDE插件就是这样 例如,IntelliJ的Checkstyle插件有一些代码,您可以查看这些代码来了解它: 但是,将Checkstyle作为命令行程序调用(例如,通过)并解析其XML报告可能更容易。也就是说,如果您不需要通过过程中提供直

我有一个Java程序,它创建了我想要运行checkstyle的文件路径列表。我很好奇是否有一种方法可以从程序中直接运行checkstyle,或者是否需要使用CLI。

是的,这是可能的,尽管它不是一个文档化的API,而是一组有效的调用,并且保持了相当稳定。事实上,IDE插件就是这样

例如,IntelliJ的Checkstyle插件有一些代码,您可以查看这些代码来了解它:

但是,将Checkstyle作为命令行程序调用(例如,通过)并解析其XML报告可能更容易。也就是说,如果您不需要通过过程中提供直接反馈

我有一个Java程序
是从我的程序中直接运行checkstyle的一种方法

您可以从另一个Java程序中调用任何Java程序。从命令行调用Java程序时,将调用
main
方法,该方法传入所有不适用于
Java
程序本身的命令行参数。在Java程序中需要做的就是调用与命令行调用相同的
main
。对于checkstyle,这是
com.puppycrawl.tools.checkstyle.Main
。看

然而,checkstyle的缺点是它调用
系统。完成后退出
,这样您就永远不会从调用中返回。要防止系统退出终止JVM,请参阅SecurityManager示例


您可以避免所有这些
系统。退出
业务,但这将要求您复制一组Checkstyle的代码,这些代码也在
类中。看见如何处理它取决于您。

这里有一个链接可能会对您有所帮助:@Mustahsan似乎是关于在IDE内部或作为Maven构建的一部分进行设置的-我感兴趣的是直接从Java程序中运行它,您也可以从Java运行终端命令。如果您询问如何简单地使用checkstyle运行进程,例如,见。如果您询问checkstyle是否有一个API,以便可以通过编程方式运行它,那么,这就不是本文的主题了。