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