PMD问题为空指针异常

问题描述

我有一个通过maven pom为多个Apex自定义规则创建的jar文件。 我的src / main / java文件夹包含8个Java程序。 我已经从中创建了一个jar文件,但是不确定执行jar时将执行哪个类?我想通过单个jar文件运行分析 当我使用pmd.bat命令运行此命令时,我得到了空指针异常,因为jar无法获取要首先调用哪个主类来运行分析

解决方法

您必须检入.jar,文件META-INF/MANIFEST.MD,该文件在Main-Class键中被引用。如果有的话,可以在运行时使用java -jar myjar.jar com.test.Main指定它(如果您的班级是com.test.Main)。

但是,最好在MANIFEST.MD中直接指定它,例如通过一个maven插件

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        ...
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>fully.qualified.MainClass</mainClass>
            </manifest>
          </archive>
        </configuration>
        ...
      </plugin>
    </plugins>
  </build>
  ...
</project>
,

我想,您想执行以下操作:

  • 您已经为Apex语言创建了自定义PMD规则。
  • 您要编译自定义规则。
  • 您要创建一个自定义PMD发行版,其中包含所有库存规则和自定义规则,以便您可以轻松地安装和使用它。

为此,请看一个示例项目(https://github.com/pmd/pmd-examples)-特别是Java的示例:https://github.com/pmd/pmd-examples/tree/java 可能有些过时,您需要针对顶点进行调整,但是它描述了您拥有的两个选项(使用自定义发行版或仅将自定义规则jar复制到lib文件夹中)。

一旦您将自定义规则集成到PMD安装中,您的规则在执行PMD时就会可用。