使用 Checkstyle/PMD/Findbugs 检查变量值
Checking for variable value using Checkstyle/PMD/Findbugs
我目前有一个多模块 Maven 项目 运行 Checkstyle、PMD 和 Findbugs。在某些 类 中,我有带注释的方法。这些注释有一个参数,其值需要遵循特定的正则表达式。是否有一种简单的方法来查找此参数值并使用前面提到的任何工具验证它是否遵循模式。我尝试为 Checkstyle 编写自定义检查。但是,由于 Checkstyle 只能逐行查看,因此它无法验证使用最终字符串设置的参数。我环顾四周,但找不到任何东西。非常感谢你。
是的。这看起来像是 PMD XPath rules.
的主要情况
您可以在 AST 上编写 XPath 表达式来匹配不符合您定义的注释。此外,the designer 对帮助您开发和测试规则非常有用。
所以你可能会写这样的东西:
//Annotation[pmd-java:typeIs('java.lang.SuppressWarnings') and .//MemberValue//Literal[not(matches(@Image, '[0-9]+'))]]
将匹配所有 @SuppressWarnings
个注释,其值不匹配 [0-9]+
。如果需要,您可以进一步优化它以查找特定键的值。
一旦您对 XPath 感到满意,您只需编写它 into your ruleset 并可以在您的代码库上启动它 运行。
请注意示例中给出的 XPath 是 XPath 2.0,因为它使用旧版本中不可用的 matches
函数。 PMD 支持 XPath 1.0、1.0 兼容模式和 2.0,默认为 1.0,但在规则定义中可覆盖
我目前有一个多模块 Maven 项目 运行 Checkstyle、PMD 和 Findbugs。在某些 类 中,我有带注释的方法。这些注释有一个参数,其值需要遵循特定的正则表达式。是否有一种简单的方法来查找此参数值并使用前面提到的任何工具验证它是否遵循模式。我尝试为 Checkstyle 编写自定义检查。但是,由于 Checkstyle 只能逐行查看,因此它无法验证使用最终字符串设置的参数。我环顾四周,但找不到任何东西。非常感谢你。
是的。这看起来像是 PMD XPath rules.
的主要情况您可以在 AST 上编写 XPath 表达式来匹配不符合您定义的注释。此外,the designer 对帮助您开发和测试规则非常有用。
所以你可能会写这样的东西:
//Annotation[pmd-java:typeIs('java.lang.SuppressWarnings') and .//MemberValue//Literal[not(matches(@Image, '[0-9]+'))]]
将匹配所有 @SuppressWarnings
个注释,其值不匹配 [0-9]+
。如果需要,您可以进一步优化它以查找特定键的值。
一旦您对 XPath 感到满意,您只需编写它 into your ruleset 并可以在您的代码库上启动它 运行。
请注意示例中给出的 XPath 是 XPath 2.0,因为它使用旧版本中不可用的 matches
函数。 PMD 支持 XPath 1.0、1.0 兼容模式和 2.0,默认为 1.0,但在规则定义中可覆盖