Analyzing Javascript with PMD Maven

别说谁变了你拦得住时间么 提交于 2019-12-08 04:11:21

问题


I'm currently trying out PMD as a possible static analysis tool that our company can use. I've analyzed Java files with no problems whatsoever, but I couldn't seem to do it with Javascript, everytime I execute pmd:pmd it just analyses java files again. Anyways, here is a snippet of my POM.xml:

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

So I just followed the instructions indicated in this but can't seem to make it work. Can you guys please tell me if I'm missing some required setups / configurations ? TIA.


回答1:


Your configuration is correct (assuming the missing <plugins> tags are simply edit issues). Most probably you are not running the proper maven targets.

With your current configuration, PMD will just be run as a report during site generation, that is mvn site. However, if doing that, the build-helper-maven-plugin:add-source target would not run, and the sources would not be found.

The most basic (useless) way around this, is simply calling mvn generate-sources site.

You can have the add-source run automatically on mvn site by changing the plugin config as follows:

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

Here, the phase set to pre-site does the magic of hooking the execution to the beginning of the site lifecycle.

If you want to be able to run PMD using mvn pmd:pmd or mvn pmd:check, then your configuration should be slightly different. The PMD plugin should not be part of the <reporting> section, but part of <build>. Unfortunately, the PMD maven plugin doesn't hook itself to a lifecycle event, so on this case, we have to manually make sure build-helper-maven-plugin:add-source is run. Once again, we can do so with mvn generate-sources pmd:pmd



来源:https://stackoverflow.com/questions/42060771/analyzing-javascript-with-pmd-maven

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!