如何使用Checkstyle Maven插件完全禁用Javadoc检查

15

我想使用Maven Checkstyle插件,并使用自定义配置来告诉Checkstyle不要在缺少Javadoc时发出警告或错误。 有没有方法可以做到这一点?


可能是如何忽略缺少@Test方法的@throws CheckStyle警告?的重复问题。 - Manuel Allenspach
3
非重复问题,此问题是如何永久禁用它,而不仅仅针对特定文件。 - Wim Deblauwe
3个回答

13

一个不错的选择是配置抑制过滤器

插件配置:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <!-- ... -->
  <build>
    <plugins>
      <!-- ... -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.17</version>
        <executions>
          <execution>
            <id>verify</id>
            <phase>verify</phase>
            <configuration>
              <encoding>UTF-8</encoding>
              <consoleOutput>true</consoleOutput>
              <failsOnError>true</failsOnError>
              <linkXRef>false</linkXRef>
              <suppressionsLocation>
                checkstyle-suppressions.xml
              </suppressionsLocation>
              <suppressionsFileExpression>
                checkstyle.suppressions.file
              </suppressionsFileExpression>
            </configuration>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <!-- ... -->
</project>

checkstyle-suppressions.xml文件:

<?xml version="1.0"?>

<!DOCTYPE suppressions PUBLIC
     "-//Puppy Crawl//DTD Suppressions 1.0//EN"
     "http://www.puppycrawl.com/dtds/suppressions_1_0.dtd">

<suppressions>
  <suppress checks="Javadoc" files="."/>
</suppressions>

然后运行

$ mvn verify

不会输出任何与 Javadoc 相关的 Checkstyle 错误。

许多其他有关压制过滤器的示例可以在 checkstyle repository 中找到。


你可能希望在“验证”阶段运行maven-checkstyle-plugin,因为编译某些代码而最终不符合checkstyle规范是没有意义的。 - Kalle Richter

13

我自己也刚刚发现这个。要完全忽略所有内容的Javadoc检查,请将以下内容添加到您的Checkstyle配置中:

    <!-- No need for Javadoc -->
    <module name="JavadocType">
        <property name="severity" value="ignore"/>
    </module>
    <module name="JavadocMethod">
        <property name="severity" value="ignore"/>
    </module>
    <module name="JavadocVariable">
        <property name="severity" value="ignore"/>
    </module>

...或者干脆从配置中完全删除这些模块。 - barfuin
4
对我来说似乎没起作用,它似乎回到了默认配置。 - Wim Deblauwe
2
你确定它能正常工作吗?我仍然会收到这些错误:(javadoc) JavadocVariable: Missing a Javadoc comment. - zygimantus
我可以确认它与(javadoc) JavadocVariable: Missing a Javadoc comment.不兼容。而且仅仅移除配置是不够的,它仍然会回退到默认设置。 - Lukenzo
它对我也不起作用。 - Yorgos Lamprakis
不适用于我。 - ErmannoS

1
以下是使用Gradle 7.3.2设置的示例。
build.gradle
 plugins {
    id 'checkstyle'
}

文件夹结构(根目录层级)。

    ├── config
    └── checkstyle
        ├── checkstyle.xml
        └── suppressions.xml

以下是在checkstyle.xml中包含suppressions.xml的条目:
<module name="SuppressionFilter">
    <property name="file" value="${config_loc}/suppressions.xml" />
</module>

现在,您可以在 suppressions.xml 文件中添加抑制项来忽略特定类型的检查。

例如,下面的代码库将忽略所有文件的指定检查(可以应用正则表达式来忽略特定匹配集的文件)。

 <suppressions>
    <suppress files="." checks="JavadocMethod"/>
    <suppress files="." checks="JavadocPackage"/>
    <suppress files="." checks="JavadocVariable"/>
    <suppress files="." checks="MissingJavadocMethod"/>
    <suppress files="." checks="JavadocPackage"/>
</suppressions>

现在,通过执行Checkstyle任务对合并的项目文件进行检查:

gradle check

如果需要执行特定的操作,则使用checkstyleMain或checkStyleTest在源文件或测试文件上执行checkstyle报告。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接