2017-02-06 4 views
1

В настоящее время я пытаюсь использовать PMD как инструмент статического анализа, который может использовать наша компания. Я проанализировал файлы Java без каких-либо проблем, но я не мог бы это сделать с помощью Javascript, каждый раз, когда я выполняю pmd: pmd, он просто анализирует java-файлы снова. В любом случае, вот фрагмент моего pom.xml:Анализ Javascript с PMD Maven

* Использование 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, но не могу заставить его работать. Можете ли вы, ребята, сказать мне, если мне не хватает некоторых необходимых настроек/конфигураций? ТИА.

+0

Ошибка 'include', вы используете' * /. Js', а не '**/*. Js' – Johnco

+0

спасибо, я попробую проанализировать снова. – jeromecris

+0

Все еще не сработало. Неважно, выполняю ли mvn pmd: pmd или pmd: check? Кроме того, я публикую результаты на сайте maven, выполнив mvn-сайт: deploy. – jeromecris

ответ

1

Ваша конфигурация верна (при условии, что отсутствующие теги <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 делает волшебство зацепив выполнение в начале site жизненного цикла.

Если вы хотите использовать PMD с помощью mvn pmd:pmd или mvn pmd:check, то ваша конфигурация должна быть немного иной. Плагин PMD не должен быть частью раздела <reporting>, но частью <build>. К сожалению, плагин PMD maven не привязывается к событию жизненного цикла, поэтому в этом случае мы должны вручную убедиться, что запущен build-helper-maven-plugin:add-source. Еще раз, мы можем сделать это с помощью mvn generate-sources pmd:pmd

+1

'build-helper-maven-plugin: add-source' больше не требуется, поскольку maven-pmd-plugin 3.7 - до тех пор, пока вы настраиваете 'compileSourceRoots', как в [example] (https://maven.apache.org/plugins/maven-pmd-plugin/examples/javascriptReport.html) - **, если вы используете maven 3.3. 9 ** (см. [MPMD-212] (https://issues.apache.org/jira/browse/MPMD-212) и [MPMD-206] (https://issues.apache.org/jira/browse/ MPMD-206)) – adangel

+0

@johnco Он работает сейчас. Просто нужно было перенести плагин pmd в и выполнить mvn pmd: pmd. Все, что мне нужно сделать, это передать результат сайту maven. Большое спасибо. – jeromecris