javascript - 使用 PMD Maven 分析 Javascript

标签 javascript maven maven-plugin pmd

我目前正在尝试将 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/

相关文章:

java - Maven Cobertura 插件不会读取参数

javascript - 模态窗口后面的黑白叠加

javascript - 匿名函数存储效率

javascript - Flipswitch 使用 jquery-mobile 更新 mysql

java - pom.xml 中的 Maven 部署参数

spring - 我应该如何知道 Ivy 依赖项中有哪些可用配置?

build - Maven Checkstyle 插件创建空报告

javascript - 没有 Node js 的 ES6 或 uglify minify maven 插件

javascript - 检查下拉状态

java - 我应该在哪里跟踪我的 Java EE Web 应用程序版本