【发布时间】: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