使用 PMD Maven 分析 Javascript

Analyzing Javascript with PMD Maven

我目前正在试用 PMD 作为我们公司可以使用的静态分析工具。我已经分析了 Java 个文件,没有任何问题,但我似乎无法使用 Java 脚本来完成,每次我执行 pmd:pmd 它只是再次分析 java 个文件.无论如何,这是我的 POM.xml:

的片段

*使用 Maven 3.3.1

<build>
  <plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
        <sources>
            ${basedir}/src/main/webapp/js
        </sources>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>add-source</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
  </plugins>
</build>

<reporting>
  <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>3.7</version>
        <configuration>
        <language>javascript</language>
        <rulesets>
            <ruleset>ecmascript-basic</ruleset>
            <ruleset>ecmascript-braces</ruleset>
            <ruleset>ecmascript-unnecessary</ruleset>
        </rulesets>
        <includes>
            <include>**/*.js</include>
        </includes>
        </configuration>
    </plugin>
 </plugins>
</reporting>

所以我只是按照 this 中指示的说明进行操作,但似乎无法正常工作。如果我缺少一些必需的设置/配置,你们能告诉我吗? TIA.

您的配置是正确的(假设缺少的 <plugins> 标签只是编辑问题)。很可能您没有 运行 设置正确的 Maven 目标。

根据您当前的配置,PMD 将只是 运行 作为站点生成期间的报告,即 mvn site。但是,如果这样做,build-helper-maven-plugin:add-source 目标将不会 运行,并且将找不到源。

解决此问题的最基本(无用)方法是简单地调用 mvn generate-sources site

您可以通过如下更改插件配置在 mvn site 上自动设置 add-source 运行:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <id>config-js</id>
                    <phase>pre-site</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>${basedir}/src/main/javascript</sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

在这里,phase 设置为 pre-site 神奇地将执行挂钩到 site 生命周期的开始。

如果您希望能够 运行 PMD 使用 mvn pmd:pmdmvn pmd:check,那么您的配置应该略有不同。 PMD 插件不应属于 <reporting> 部分,而应属于 <build> 部分。不幸的是,PMD maven 插件不会将自身挂接到生命周期事件,因此在这种情况下,我们必须手动确保 build-helper-maven-plugin:add-source 是 运行。再一次,我们可以用 mvn generate-sources pmd:pmd