2015-02-27 4 views
4

Я читаю интересный учебник здесь: http://www.avajava.com/tutorials/lessons/how-do-i-generate-pmd-and-cpd-reports-for-a-site.html?page=1Maven PMD плагин не создает отчет с командой «МВН сайта» или «PMD: PMD»

В этом учебнике показано, как использовать Maven для запуска с открытым исходным кодом инструмент статического анализа, PMD и увидеть сгенерированный вывод на веб-сайте Maven. Maven может легко создавать веб-сайты с помощью команды mvn site, но в этом руководстве показано, как использовать PMD для более полезных показателей исходного кода.

Инструкции были выполнены в максимально возможной степени. Вот мой файл pom.xml, который пришел от чтения учебника:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.name.bookstore</groupId> 
    <artifactId>bookstore</artifactId> 
    <packaging>jar</packaging> 
    <version>1</version> 
    <name>bookstore</name> 
    <url>http://maven.apache.org</url> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 

    <build> 
    <extensions> 
     <!-- start for deploying using webdav --> 
     <extension> 
     <groupId>org.apache.maven.wagon</groupId> 
     <artifactId>wagon-webdav</artifactId> 
     <version>1.0-beta-2</version> 
     </extension> 
    </extensions> 
    </build> 

    <distributionManagement> 
    <!-- start -location where site is deployed --> 
    <site> 
     <id>site.deployments</id> 
     <name>Site deployments</name> 
     <url>dav:localhost/${basedir}</url> 
    </site> 
    </distributionManagement> 

    <reporting> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-pmd-plugin</artifactId> 
     <version>3.4</version> 

     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jxr-plugin</artifactId> 
     <version>2.5</version> 
     </plugin> 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-javadoc-plugin</artifactId> 
     <version>2.10.1</version> 
     </plugin> 
    </plugins> 
    </reporting> 

</project> 

Когда я запускаю команду: mvn clean site я получаю сайт построен по Maven с кучей разных страниц, но ни один из них не показывает ничего относительно ПМД. Что мне здесь не хватает? Почему я не вижу ничего в отношении PMD на сгенерированном веб-сайте?

Кроме того, когда я запускаю mvn pmd:pmd, есть успешная сборка, но я не получаю полезных PMD-показателей. Я даже кодировал некоторые неиспользуемые переменные и методы в одном из моих исходных файлов Java, как показано в приведенном выше связанном учебнике, и нет полезного вывода.

Команда mvn pmd:pmd действительно создает некоторые файлы. Пара - это файлы правил для механизма, которые он выглядит, а остальные пустые. Пожалуйста, смотрите скрин-шоты из этого ниже:

Files created with mvn pmd:pmd command Рисунок 1: Файлы, созданные с помощью PMD: PMD команды

empty file for pmd

Рисунок 2: Пустой файл PMD - даже если есть очевидные ошибки в исходном файле Java

Кто-нибудь знает, что случилось? Почему PMD не работает с Maven для меня?

Спасибо за это.

Кроме того, из того, что я прочитал в Интернете по телефонам PMD's website и Maven's website, в разделе «Отчеты по проектам» должна быть какая-то информация. Здесь нет данных, но из PMD. См. Приведенный ниже снимок экрана.

No PMD Data in Project Reports

Рисунок 3: Нет PMD данных содержится в проекте Отчеты

С уважением

UPDATE

При изменении в разделе PMD файла pom.xml к ниже snippet Я получаю результаты CPD через PMD, но все же ничего не получаю от PMD на ошибках кода. Я даже закодирован в NullPointerException, и PMD ничего не сказал даже при выдаче команды mvn pmd:check.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-pmd-plugin</artifactId> 
    <version>3.4</version> 
    <configuration> 

     <linkXref>true</linkXref> 
     <sourceEncoding>utf-8</sourceEncoding> 
     <minimumTokens>1</minimumTokens> 
     <targetJdk>1.7</targetJdk> 
    </configuration> 
    </plugin> 

В этом фрагменте я изменил sourceEncoding тег быть UTF-8, потому что все, что я вижу в отношении это UTF-8. Я также изменил значение minimumTokens на 1, чтобы попытаться получить больше выходных данных из этого подключаемого модуля. Я также поставил этот фрагмент в разделе <build>, чтобы попытаться получить результаты, но до сих пор ничего ...:/

Спасибо за изучение этого ...

ответ

11

maven-pmd-plugin по умолчанию скачет в наши дни пустых отчетов (имущества skipEmptyReport). Вы должны будете установить это ложь, чтобы на вашем сайте всегда отчет/CPD PMD:

<reporting> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-pmd-plugin</artifactId> 
     <version>3.4</version> 
     <configuration> 
     <skipEmptyReport>false</skipEmptyReport> 
     </configuration> 
    </plugin> 
    </plugins> 
</reporting> 

Это относится как PMD и НПР. Я полагаю, это ваша проблема, как показано на рисунке 2, вы обнаружите, что обнаружены нарушения PMD (файл pmd.xml пуст).

Свойство minimumTokens настраивает CPD и определяет, как долго сокращенный код должен быть объявлен как дубликат. Чем меньше число, тем больше дубликатов обнаружено, но дубликаты также могут быть намного короче и, следовательно, чаще всего ложными срабатываниями.

Без дальнейшей настройки maven-pmd-plugin он использует по умолчанию эти три набора правил PMD: java-basic, java-imports, java-unusedcode. Смотрите также недвижимость rulesets. Если вы хотите определить конкретные проблемы, вам необходимо включить эти правила. См. Также How to make a ruleset.

+0

А, это сработало. Спасибо вам за помощь. :) Я добавил некоторые правила, чтобы поработать с PMD, и он показал это в отчете! Еще раз спасибо за эту помощь с Maven и PMD. Потрясающие. – user3870315

Смежные вопросы