java - Findbugs、PMD 或 Checkstyle 规则来查找字段的访问权限

标签 java findbugs checkstyle pmd

我有一个类在内部缓存一组值。这些值可以定期更新,缓存的内容也会适当更新。只要此类的用户执行以下操作:

...
public void anyMethod(anyParams) {
    AnyObject value = CacheClass.getValue(anyKey);
    ...
}

那么生活就会很好,因为“值(value)”不会在本地维持。但是,如果有人做了这样的事情:

public class MyClass {
    private AnyObject value = CacheClass.getValue(someKey);
   ...
}

然后,如果缓存的值被更新,则它的使用可能看不到新值。

我们通过 Sonar 在构建中使用 findbugs、checkstyle 和 PMD。所以我想知道是否有一种方法可以在这些系统中定义规则来检测和标记上面的第二种使用类型。我从未在任何这些系统中编写过规则,因此希望尽可能多地提供建议(例如,“可以做到,但你真的不想去那里......”:)

最佳答案

在 AST 节点上遵循 XPath 将捕获调用 CacheClass 方法的字段声明。

//FieldDeclaration[//PrimaryExpression/PrimaryPrefix/Name/@Image='CacheClass.getValue']

How to write PMD Custom Rule

关于java - Findbugs、PMD 或 Checkstyle 规则来查找字段的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16336216/

相关文章:

java - 为什么递归循环中的局部变量会被覆盖? Java For 循环内的递归循环

java - Possible null pointer dereference of 的说明和修复

java - src 的 findbugs 命令行

checkstyle - 如何编写涉及间接继承的Checkstyle自定义检查?

java - Maven checkstyle 未在目标中触发

java - Java中如何在打开新线程之前关闭线程?

java - 列出 Java 中的常见元素

java - 将 X-Frame-Options 的配置更改为 ALLOW-FROM 时 Spring Boot 中出现异常

java - 如何从 Eclipse findbugs 插件导出 findbugs 结果?

java - Checkstyle 'this' 关键字过度使用检测