我希望添加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
]
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我修改这个以实现我想要的,或者建议用PMD做另一种方法吗?
//ClassOrInterfaceDeclaration/ClassOrInterfaceBody [
count(descendant::MethodDeclarator[
..[@Public='true']
and
not
(
starts-with(@Image,'get')
or
starts-with(@Image,'set')
or
starts-with(@Image,'is')
)
] ) > $maxmethods
]
Run Code Online (Sandbox Code Playgroud)
您正在计算MethodDeclarator,因此不应包括ctors.
.. [@ Public ='true']
从MethodDeclarator返回一个到MethodDeclaration,然后检查它是否是公共的.
| 归档时间: |
|
| 查看次数: |
3344 次 |
| 最近记录: |