我目前正在尝试将 PMD 作为我们公司可以使用的静态分析工具。我已经分析了 Java 文件,没有任何问题,但我似乎无法用 Javascript 来做到这一点,每次我执行 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
.
您可以拥有add-source
自动运行于 mvn site
通过更改插件配置如下:
<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
将执行 Hook 到 site
的开头确实有魔力生命周期。
如果您希望能够使用 mvn pmd:pmd
运行 PMD或mvn pmd:check
,那么您的配置应该略有不同。 PMD 插件不应属于 <reporting>
的一部分部分,但 <build>
的一部分。不幸的是,PMD maven 插件不会将自身 Hook 到生命周期事件,因此在这种情况下,我们必须手动确保 build-helper-maven-plugin:add-source
正在运行。我们可以再次使用mvn generate-sources pmd:pmd
来做到这一点。
关于javascript - 使用 PMD Maven 分析 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42060771/