java 在Maven Checkstyle插件报告中排除类

nmpmafwu  于 2023-05-12  发布在  Java
关注(0)|答案(5)|浏览(202)

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

93ze6v8z

93ze6v8z1#

如果像我一样,你来到这里寻找一种从checkstyle中排除 generated 源代码的方法,请这样做:

<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>似乎不起作用。
编辑:在评论中,@Cyrusmith,@Ben和@Olivier Callioux报告说,截至2017年,<sourceDirectories>工作;我不能确认。

gijlo24d

gijlo24d2#

如果这个问题是关于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的注解之间的审计事件 *(然后只需将这些注解添加到您不想检查的类或代码部分)。

yquaqz18

yquaqz183#

另外,如果您想排除多个独立文件夹,您可以添加多个独立路径逗号分隔,如下所示

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

mwkjh3gx4#

上面的答案对我不起作用,因为我在maven中运行代码生成,它还将target/generated添加为源目录。
以下解决方案有效:您必须使用显式的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>
c2e8gylq

c2e8gylq5#

我用的是maven 3,排除似乎不起作用。成功的是sourceDirectories技巧:

<configuration>
                <sourceDirectories>
                    <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
                </sourceDirectories>
            </configuration>

相关问题