使用CheckStyle阻止对内部接口/类的公共访问



有没有一种方法可以更新checkstyle设置,只允许包私有内部接口或类?例如


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

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

您可以使用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.

最新更新