【问题标题】:How to supress checkstyle HideUtilityClassConstructor rule for classes with main method?如何抑制具有 main 方法的类的 checkstyle HideUtilityClassConstructor 规则?
【发布时间】:2021-08-22 17:06:03
【问题描述】:

我想禁止具有 main 方法的类的“HideUtilityClassConstructor”规则。 看起来像这样:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
   public static void main(String[] args) {
       SpringApplication.run(Application.class, args);
   }
}
  • 由于所有 checkstyle 规则都位于公共库中 - 对于使用这些规则的任何模块,它应该是通用的跳过。
  • 主类的名称可以不同(跳过应该适用于所有具有公共静态主方法的类)
  • 更改应位于 checkstyle 通用 xml 文件中(不在主类中,如使用 @SupressWarnings 或 cmets)

有可能吗?

【问题讨论】:

    标签: java static-analysis checkstyle software-quality


    【解决方案1】:

    您可以通过SuppressionXpathFilter 实现此目的。 例如,对于您的代码,您需要将此模块添加到您的配置中(在此示例中,抑制位于文件 suppresss.xml 中)

    <?xml version="1.0"?>
    <!DOCTYPE module PUBLIC
          "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
          "https://checkstyle.org/dtds/configuration_1_3.dtd">
    <module name = "Checker">
    
        <module name="TreeWalker">
            <module name="SuppressionXpathFilter">
                <property name="file" value="suppressions.xml"/>
                <property name="optional" value="false"/>
            </module>
            <module name="HideUtilityClassConstructor"/>
        </module>
    </module>
    

    suppresss.xml 文件的内容是这样的。这里有 2 个抑制,你可以选择其中任何一个。第二个对我来说看起来更好,因为误报的可能性较小。

    <?xml version="1.0"?>
    
    <!DOCTYPE suppressions PUBLIC
    "-//Checkstyle//DTD SuppressionXpathFilter Experimental Configuration 1.2//EN"
    "https://checkstyle.org/dtds/suppressions_1_2_xpath_experimental.dtd">
    
    <suppressions>
      <!--  Suppress for any classes that contain method named "main"  -->
      <suppress-xpath checks="HideUtilityClassConstructor"
      query="//CLASS_DEF[//METHOD_DEF[./IDENT[@text='main']]]"/>
    
      <!--  Suppress for any classes that are annotated with "SpringBootApplication"  -->
      <suppress-xpath checks="HideUtilityClassConstructor"
       query="//CLASS_DEF[//MODIFIERS/ANNOTATION[./IDENT[@text='SpringBootApplication']]]"/>
    
    </suppressions>
    

    【讨论】:

      猜你喜欢
      • 2013-07-23
      • 1970-01-01
      • 2011-08-17
      • 2020-07-22
      • 1970-01-01
      • 2012-10-12
      • 1970-01-01
      • 2011-04-03
      相关资源
      最近更新 更多