我有一个Maven 2项目,我想配置我的Checkstyle报告插件,以便只分析我的一些类。我已经找到了maven.checkstyle.excludes属性,但是尽管将其作为命令行参数传递(使用-D=maven.checkstyle.excludes=...),我还是无法使其工作。我在插件文档页面上找不到任何内容。理想情况下,我希望能够在POM的<configuration>部分中设置此值。
maven.checkstyle.excludes
-D=maven.checkstyle.excludes=...
<configuration>
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>工作;我不能确认。
checkstyle:checkstyle
${project.compileSourceRoots}
${project.build.sourceDirectory}
<sourceDirectory>
<sourceDirectories>
gijlo24d2#
如果这个问题是关于Maven 2的,那么属性是excludes,并接受一个以逗号分隔的Ant模式列表。因此,要么在命令行中传递以下命令:
excludes
-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的注解之间的审计事件 *(然后只需将这些注解添加到您不想检查的类或代码部分)。
SuppressionCommentFilter
CHECKSTYLE:OFF
CHECKSTYLE:ON
yquaqz183#
另外,如果您想排除多个独立文件夹,您可以添加多个独立路径逗号分隔,如下所示
<excludes>org/log4j/*,com/acme/**/*,com/companyb/*</excludes>
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>
c2e8gylq5#
我用的是maven 3,排除似乎不起作用。成功的是sourceDirectories技巧:
<configuration> <sourceDirectories> <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory> </sourceDirectories> </configuration>
5条答案
按热度按时间93ze6v8z1#
如果像我一样,你来到这里寻找一种从checkstyle中排除 generated 源代码的方法,请这样做:
默认情况下,checkstyle插件的
checkstyle:checkstyle
目标使用${project.compileSourceRoots}
,它显然包括生成的源目录。如果将其更改为
${project.build.sourceDirectory}
,则它将仅使用源目录,而不使用任何生成的源目录。请注意,虽然
<sourceDirectory>
已被弃用,但替代方案<sourceDirectories>
似乎不起作用。编辑:在评论中,@Cyrusmith,@Ben和@Olivier Callioux报告说,截至2017年,
<sourceDirectories>
工作;我不能确认。gijlo24d2#
如果这个问题是关于Maven 2的,那么属性是
excludes
,并接受一个以逗号分隔的Ant模式列表。因此,要么在命令行中传递以下命令:或者在插件配置中设置它:
另一个选择是使用a suppression filter。
例如,您可以使用
SuppressionCommentFilter
* 抑制包含CHECKSTYLE:OFF
的注解和包含CHECKSTYLE:ON
的注解之间的审计事件 *(然后只需将这些注解添加到您不想检查的类或代码部分)。yquaqz183#
另外,如果您想排除多个独立文件夹,您可以添加多个独立路径逗号分隔,如下所示
mwkjh3gx4#
上面的答案对我不起作用,因为我在maven中运行代码生成,它还将target/generated添加为源目录。
以下解决方案有效:您必须使用显式的checkstyle-suppressions.xml配置文件,并从配置中激活它:
用于排除目标文件夹的抑制文件如下所示:
c2e8gylq5#
我用的是maven 3,排除似乎不起作用。成功的是sourceDirectories技巧: