我希望添加PMD检查以确保类没有太多的公共方法,但我不希望构造函数和getter / setter包含在检查中。
ExcessivePublicCount检查包括构造函数,getter / setter和公共变量,我看不到自定义它的方法。
TooManyMethods检查会排除getter / setter,但包含其他所有内容(包括私有方法)。检查的XPath代码如下。
//ClassOrInterfaceDeclaration/ClassOrInterfaceBody
[
count(descendant::MethodDeclarator[
not
(
starts-with(@Image,'get')
or
starts-with(@Image,'set')
)
]) > $maxmethods
]
任何人都可以帮我修改它以达到我想要的效果,或者建议用PMD做另一种方法吗?
答案 0 :(得分:6)
//ClassOrInterfaceDeclaration/ClassOrInterfaceBody [
count(descendant::MethodDeclarator[
..[@Public='true']
and
not
(
starts-with(@Image,'get')
or
starts-with(@Image,'set')
or
starts-with(@Image,'is')
)
] ) > $maxmethods
]
您正在计算MethodDeclarator,因此不应包括ctors
.. [@公共= '真']
从MethodDeclarator返回一个MethodDeclaration,然后检查它是否是公共的。