用PMD-Maven分析Javascript

用PMD-Maven分析Javascript,javascript,maven,maven-plugin,pmd,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>

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

org.codehaus.mojo

但似乎无法让它工作。你们能告诉我我是否缺少一些必需的设置/配置吗?TIA。

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


使用当前配置,PMD将在站点生成期间作为报告运行,即
mvn站点
。但是,如果这样做,将不会运行
buildhelpermaven插件:addsource
target,也不会找到源代码

解决这个问题的最基本(无用)的方法就是调用
mvn生成源站点

您可以通过如下更改插件配置,在
mvn站点上自动运行
addsource

<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>

org.codehaus.mojo
构建助手maven插件
3.0.0
配置js
现场前
添加源
${basedir}/src/main/javascript
这里,
阶段
设置为
pre-site
的神奇之处在于将执行挂接到
站点
生命周期的开始


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

执行此操作
包含的
错误,您使用的是
*/.js
,而不是
***.js
,谢谢,我会再次尝试分析。仍然不起作用。执行mvn pmd:pmd或pmd:check是否重要?此外,我还通过执行mvn站点:deploy.Cross-Linking:
build helper maven plugin:add source
将结果发布到maven站点,maven pmd plugin 3.7应该不再需要了-只要您像中一样配置
compilesourceoots
,如果您使用maven 3.3.9(请参见和)@johnco,它现在就可以工作了。只需在内部传输pmd插件并执行mvn pmd:pmd。我现在需要做的就是将结果传递给maven站点。非常感谢你。