Исключение классов в отчетах плагина Maven Checkstyle
У меня есть проект Maven 2, и я хочу настроить свой плагин отчетов Checkstyle, чтобы анализировать только некоторые из моих классов. Я нашел maven.checkstyle.excludes
свойство, но, несмотря на передачу этого в качестве параметра командной строки (используя -D=maven.checkstyle.excludes=...
Я не могу заставить его работать. Я не могу найти ничего на странице документации по плагину. В идеале я хочу иметь возможность установить это в <configuration>
раздел моего ПОМ.
6 ответов
Если этот вопрос о Maven 2, то свойство excludes
и принимает разделенный запятыми список шаблонов Ant. Так что либо передайте это в командной строке:
-Dexcludes=**/generated/**/*
Или настройте его в конфигурации плагина:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<excludes>**/generated/**/*</excludes>
</configuration>
</plugin>
Другой вариант - использовать фильтр подавления.
Например, вы можете использовать SuppressionCommentFilter
подавить события аудита между комментариями, содержащими CHECKSTYLE:OFF
и комментарий, содержащийCHECKSTYLE:ON
(затем просто добавьте эти комментарии к классам или частям кода, которые вы не хотите проверять).
Если, как и я, вы пришли сюда в поисках способа исключить сгенерированные источники из контрольного стиля, сделайте следующее:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.15</version>
<configuration>
<sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
</configuration>
</plugin>
По умолчанию checkstyle:checkstyle
цель использования плагина checkstyle ${project.compileSourceRoots}
, который, очевидно, включает в себя сгенерированные исходные каталоги.
Если вы измените его на ${project.build.sourceDirectory}
, он будет использовать только исходный каталог, а не любые сгенерированные исходные каталоги.
Обратите внимание, что в то время как <sourceDirectory>
устарела, альтернатива, <sourceDirectories>
Похоже, не работает.
Кроме того, если вы хотите исключить несколько независимых папок, вы можете добавить несколько независимых путей, разделенных запятой, как это
<excludes>org/log4j/*,com/acme/**/*,com/companyb/*</excludes>
Приведенные выше ответы не сработали для меня, поскольку я запускаю генерацию кода в maven, которая также добавляет цель / сгенерированную в качестве исходного каталога.
Следующее решение работает: вы должны использовать явный файл конфигурации checkstyle-suppressions.xml и активировать его из своей конфигурации:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<configLocation>checkstyle.xml</configLocation>
<suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
[...]
Файл подавления для исключения целевой папки выглядит так:
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
"https://checkstyle.org/dtds/suppressions_1_2.dtd">
<suppressions>
<suppress files="[/\\]target[/\\]" checks=".*" />
</suppressions>
Я использую maven 3 и исключаю, похоже, не работает. Этот плагин позор. Они как будто не проверяют собственный стиль, отсюда и баги. Что сработало, так это трюк sourceDirectories:
<configuration>
<sourceDirectories>
<sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
</sourceDirectories>
</configuration>
Я использую maven 3, и по какой-то причине оба исключения и sourceDirectory не работают. Добавление альтернативы для всех, кто сталкивается с той же проблемой.
Настройте пользовательское подавление контрольного стиля, как показано ниже.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${checkstyle.maven.plugin.version}</version>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>${com.puppycrawl.tools.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>validate</id>
<phase>validate</phase>
<configuration>
<configLocation>
src/main/resources/customized_google_checks.xml
</configLocation>
<suppressionsLocation>
src/main/resources/customized_suppressions.xml
</suppressionsLocation>
<consoleOutput>true</consoleOutput>
<failsOnError>true</failsOnError>
<failOnViolation>false</failOnViolation>
<violationSeverity>warning</violationSeverity>
<includeTestSourceDirectory>false</includeTestSourceDirectory>
</configuration>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
Используйте следующее в файле подавления, чтобы исключить определенные файлы.
<!DOCTYPE suppressions PUBLIC
"-//Puppy Crawl//DTD Suppressions 1.1//EN"
"http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<!--<!DOCTYPE module PUBLIC-->
<!-- "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"-->
<!-- "https://checkstyle.org/dtds/configuration_1_3.dtd">-->
<suppressions>
<suppress checks=".*" files=".ESAPI.properties" />
</suppressions>