【问题标题】:Findbugs, PMD or Checkstyle rule to find access by a fieldFindbugs、PMD 或 Checkstyle 规则以按字段查找访问权限
【发布时间】:2013-05-02 10:53:25
【问题描述】:

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

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

然后生活会很好,因为“价值”不会在本地保持。但是,如果有人这样做:

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

那么如果缓存的值被更新,它的使用可能看不到新的值。

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

【问题讨论】:

  • 一个短命的类(如 SimpleDateFormat)甚至可以合理地将对象存储在一个字段中。第一步是使用警报命名:CacheClass.retrieveValue(anyKey)

标签: java findbugs checkstyle pmd


【解决方案1】:

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

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

How to write PMD Custom Rule

【讨论】:

  • 谢谢!让我验证一下,然后我会检查你的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 2018-12-13
  • 2014-01-19
  • 2021-01-13
  • 2014-11-11
  • 2014-07-23
相关资源
最近更新 更多