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