在Maven Checkstyle插件报告中排除类

时间:2010-03-02 11:10:55

标签: java maven-2 checkstyle

我有一个Maven 2项目,我想配置我的Checkstyle报告插件,以便只分析我的一些类。我找到了maven.checkstyle.excludes属性,但是尽管将其作为命令行参数传递(使用-D=maven.checkstyle.excludes=...),我无法使其工作。我在Plugin文档页面上找不到任何内容。理想情况下,我希望能够在我的POM的<configuration>部分进行设置。

4 个答案:

答案 0 :(得分:47)

如果像我一样,您来到这里寻找从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>似乎不起作用。

答案 1 :(得分:42)

如果这个问题是关于Maven 2的,那么属性是excludes并且采用逗号分隔的Ant模式列表。所以要么在命令行上传递它:

-Dexcludes=**/generated/**/*

或者在插件配置中进行设置:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-checkstyle-plugin</artifactId>
   <configuration>
       <excludes>**/generated/**/*</excludes>
   </configuration>
</plugin>

另一种选择是使用a suppression filter

例如,您可以使用SuppressionCommentFilter 来抑制包含CHECKSTYLE:OFF的评论与包含CHECKSTYLE:ON 的评论之间的审核事件(然后只需将这些评论添加到您不想检查的代码的类或部分。)

答案 2 :(得分:20)

此外,如果您要排除多个独立文件夹,您可以添加多个独立路径,以逗号分隔

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

答案 3 :(得分:2)

上面的答案对我不起作用,因为我正在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>