【问题标题】:Block Public Access to Inner Interfaces/Classes with CheckStyle使用 CheckStyle 阻止对内部接口/类的公共访问
【发布时间】:2021-06-14 21:25:39
【问题描述】:

有没有办法更新 checkstyle 设置以只允许封装私有内部接口或类?例如


public class A {
 ...
 public interface B { // should flag it as error
  ..
 }
}

public class A {
 ...
 interface B { // valid syntax
  ..
 }
}

【问题讨论】:

    标签: java checkstyle


    【解决方案1】:

    您可以为此使用MatchXPath

    
    <?xml version="1.0"?>
    <!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
            "http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd">
    
    <module name="Checker">
        <property name="charset" value="UTF-8"/>
        <property name="haltOnException" value="true"/>
        <property name="severity" value="error"/>
    
        <module name="TreeWalker">
            <module name="MatchXpath">
                <property name="query" value="/CLASS_DEF/OBJBLOCK/(CLASS_DEF | INTERFACE_DEF)/MODIFIERS[(*)]"/>
                <message key="matchxpath.match"
                         value="Only package private inner interfaces or classes are allowed."/>
            </module>
        </module>
    </module>
    
    
    
    
    public class A {
    
        public interface B { // violation
    
        }
    
        public class C { // violation
    
        }
    
        public enum D { // ok, enum not specified in config
    
        }
    
        class E { // ok, no modifier
    
        }
    
        interface F { ok, no modifier
    
        }
    
        private class G { // violation
    
        }
    
        private interface H { // violation
    
        }
    }
    
    
    
    
    ➜  src java -jar checkstyle-8.41-all.jar -c config.xml A.java
    Starting audit...
    [ERROR] A.java:3:5: Only package private inner interfaces or classes are allowed. [MatchXpath]
    [ERROR] A.java:7:5: Only package private inner interfaces or classes are allowed. [MatchXpath]
    [ERROR] A.java:23:5: Only package private inner interfaces or classes are allowed. [MatchXpath]
    [ERROR] A.java:27:5: Only package private inner interfaces or classes are allowed. [MatchXpath]
    Audit done.
    Checkstyle ends with 4 errors.
    
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      相关资源
      最近更新 更多