阿里巴巴的p3c发布在github上,你把它下载下来,你会发现,p3c-pmd源码中没有入口程序,因为阿里的Github中的p3c/p3c-pmd提供的只是规则代码。我在一篇文章中看到了答案,然后在PMD官网(P3C是继承PMD改写的)看到了PMD在命令行上执行的命令。(上面的提到的文章的链接是https://www.jianshu.com/p/b87ca8615c9c)
下面是PMD在命令行上执行的命令
截图中的pmd.bat 是PMD/bin/pmd.bat
它里面内容是:
@echo off
set TOPDIR=%~dp0..
set OPTS=
set MAIN_CLASS=net.sourceforge.pmd.PMD
java -classpath "%TOPDIR%\lib\*" %OPTS% %MAIN_CLASS% %*
最后一条命令是java在命令行上执行jar的命令
java在命令行上执行jar的命令模板是
java -参数 jar 包 -主类 --传过的参数
MAIN_CLASS是主类的意思,所以PMD的主类是net.sourceforge.pmd.PMD。
如果你去看上面的文章的链接的话
上面文章里面有一个执行命令是这样的
java -cp p3c-pmd-1.3.6.jar net.sourceforge.pmd.PMD -d E:\CodeRepos\data-server-test\data-server-core\src\main\java\com -R rulesets/java/ali-comment.xml
p3c-pmd-1.3.6.jar是已经打包好的可执行的jar包,是p3c的可执行Jar包,
java在命令行上执行jar的命令模板是
java -参数 jar 包 -主类 --传过的参数
上面的那两条命令中的主类是相同的,所以p3c的主类是在PMD中的net.sourceforge.pmd.PMD
去net.sourceforge.pmd.PMD类中可以找到main方法了
PS:PMD项目中有几个主类,也就是有几个main方法,具体的可以到PMD官网上看一下它的命令行上的执行JAR包的命令就知道了