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