为了账号安全,请及时绑定邮箱和手机立即绑定

使用Checkstyle / PMD / Findbugs检查变量值

使用Checkstyle / PMD / Findbugs检查变量值

慕哥6287543 2021-05-06 10:06:18
我有一个多模块Maven项目,当前正在运行Checkstyle,PMD和Findbugs。在某些类中,我有带有注释的方法。这些注释具有一个参数,该参数的值需要遵循某个正则表达式。有没有一种简单的方法来查找此参数值并使用前面提到的任何工具来验证它是否遵循该模式。我尝试为Checkstyle编写自定义检查。但是,由于Checkstyle仅逐行显示,因此无法验证使用最终字符串设置的参数。我环顾四周,但找不到任何东西。非常感谢你。
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

就在这里。对于PMD的XPath规则来说,这似乎是一个很好的例子。

您可以在AST上编写XPath表达式,以匹配不符合您的定义的注释。另外,设计器对于帮助您开发和测试规则非常有用。

因此,您可能可以编写如下内容:

//Annotation[pmd-java:typeIs('java.lang.SuppressWarnings') and .//MemberValue//Literal[not(matches(@Image, '[0-9]+'))]]

将匹配所有@SuppressWarnings具有不匹配值的注释[0-9]+。如果需要,您可以进一步优化它以查找特定键的值。

一旦可以使用XPath,您只需将其写入规则集,即可开始在您的代码库上运行它。

请注意,示例中给出的XPath是XPath 2.0,因为它使用了matches旧版本中不提供的功能。PMD支持XPath 1.0、1.0兼容模式和2.0,默认为1.0,但在规则定义中可以覆盖


查看完整回答
反对 回复 2021-05-12
  • 1 回答
  • 0 关注
  • 198 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信