2

クラスにパブリックメソッドが多すぎないことを確認するためにPMDチェックを追加したいのですが、コンストラクターとゲッター/セッターをチェックに含めたくありません。

ExcessivePublicCountチェックには、コンストラクター、ゲッター/セッター、およびパブリック変数が含まれていますが、カスタマイズする方法がわかりません。

TooManyMethodsチェックは、ゲッター/セッターを除外しますが、他のすべて(プライベートメソッドを含む)を含みます。チェックのXPathコードは次のとおりです。

//ClassOrInterfaceDeclaration/ClassOrInterfaceBody
[
    count(descendant::MethodDeclarator[
        not
        (
        starts-with(@Image,'get')
            or
        starts-with(@Image,'set')
        )
    ]) > $maxmethods
]

誰かが私が望むものを達成するためにこれを変更するのを手伝ってくれるか、PMDでこれを行う別の方法を提案できますか?

4

1 に答える 1

7
//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をカウントしているため、ctorを含めないでください。
.. [@ Public ='true']
MethodDeclaratorからMethodDeclarationに戻り、パブリックかどうかを確認します。

于 2009-10-21T14:30:19.693 に答える