[英]How should I initialize an array of classes with a default (parameterless) constructor in Java?
[英]How can I supress the checkstyle message "Utility classes should not have a public of default constructor" when using Spring
在 Spring Java 项目中,我有以下类:
@SuppressWarnings({"PMD", "Checkstyle"})
@SpringBootApplication
public class ToolBoxApplication {
public static void main(final String[] args) {
SpringApplication.run(ToolBoxApplication.class, args);
}
}
使用 Jenkins 构建告诉我,我不应该在实用程序类中有公共或默认构造函数。
在我的带有 Treewalker 文件的 checkstyle.xml 中
<!-- Make the @SuppressWarnings annotations available to Checkstyle -->
<module name="SuppressWarningsHolder" />
和模块
我试图使用
@SuppressWarnings({"PMD", "checkstyle:HideUtilityClassConstructor"})
但这也不起作用。 “PMD”抑制确实有效(它有效地报告了相同的错误)。
抑制时需要以小写形式指定 checkstyle 名称。 这会做
@SuppressWarnings({"PMD", "checkstyle:hideutilityclassconstructor"})
我们有多个 spring boot 应用程序,因此我们没有添加多个@SuppressWarnings
注释,而是配置了一个 checkstyle 抑制过滤器并添加了以下抑制:
<!-- Spring Boot Application files get detected as utility classes and checkstyle wants them to have a private constructor, but a constructor is required to run the application. By convention application classes end with *Application -->
<suppress checks="HideUtilityClassConstructor" files=".*Application.java"/>
您也可以添加一个虚拟方法来避免该规则:
public void foo() {
throw new UnsupportedOperationException();
}
对于特定类,这可以优雅地处理。 由于 SpringBoot 需要此类来启动应用程序,因此它不会有任何其他方法,使其看起来像一个实用程序类。
在config/checkstyle文件夹中的suppressions.xml中添加以下行。 由于您仅针对特定文件排除它,因此这是一个很好的解决方案
<suppress files="ToolBoxApplication.java" checks="HideUtilityClassConstructor" />
如果您没有 suppressions.xml 文件,则创建一个。 它看起来像下面。 (理想情况下不应该有很多压制)
<?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="." checks="JavadocMethod"/>
<suppress files="." checks="JavadocPackage"/>
<suppress files="." checks="JavadocVariable"/>
<suppress files="." checks="MissingJavadocMethod"/>
<suppress files="." checks="JavadocPackage"/>
<suppress files="ConversionProxyApplication.java" checks="HideUtilityClassConstructor" />
</suppressions>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.