Подтвердить что ты не робот

Исключение классов в отчетах плагина Maven Checkstyle

У меня есть проект Maven 2, и я хочу настроить плагин отчета Checkstyle, чтобы анализировать только некоторые из моих классов. Я нашел свойство maven.checkstyle.excludes, но, несмотря на передачу этого параметра в командной строке (используя -D=maven.checkstyle.excludes=...), я не могу заставить его работать. Я не могу найти что-либо на странице документации плагина. В идеале я хочу иметь возможность установить это в разделе <configuration> моего POM.

4b9b3361

Ответ 1

Если этот вопрос касается 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 (затем просто добавьте эти комментарии к классам или частям кода, который вы не хотите проверьте).

Ответ 2

Если, как и я, вы пришли сюда, чтобы найти способ исключить сгенерированные источники из checkstyle, сделайте следующее:

<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> не работает.

Ответ 3

Кроме того, если вы хотите исключить независимые папки multiple, вы можете добавить несколько независимых путей, разделенных запятыми, например

<excludes>org/log4j/*,com/acme/**/*,com/companyb/*</excludes>