我有一个Java程序,它创建了一个要在checkstyle上运行的文件路径列表。我想知道是否有一种方法可以直接从我的程序中运行checkstyle,或者我是否需要使用CLI。
我有一个Java程序,它创建了一个要在checkstyle上运行的文件路径列表。我想知道是否有一种方法可以直接从我的程序中运行checkstyle,或者我是否需要使用CLI。
是的,这是可能的,虽然它不是一个正式文档化的API,而是一组有效且相对稳定的调用。实际上,IDE插件就是这样实现的。
例如,IntelliJ的Checkstyle插件有一些代码可以供您参考:
https://github.com/jshiell/checkstyle-idea/tree/5.26.0/src/csaccess/java/org/infernus/idea/checkstyle/service/cmd
但是,如果您不需要通过 AuditListeners 在进程中直接获得反馈,则更容易调用Checkstyle作为命令行程序(例如通过 zt-exec)并解析其XML报告。
System.exit
,因此您将永远无法从调用中返回。为了防止System.exit
完全终止JVM,请参见Java:如何测试调用System.exit()的方法?以获取SecurityManager示例。
您可以避免所有这些System.exit
业务,但这需要您复制一堆Checkstyle的代码,这些代码也在Main
类中。请参见https://github.com/checkstyle/checkstyle/blob/bd7621fae3b1b887d46b8a678600db7e6d03185c/src/main/java/com/puppycrawl/tools/checkstyle/Main.java#L332。由您决定如何处理它。