避免使用易失性修复程序



PMD规则集中定义的规则之一是:"避免使用Volatile",这解释了"不建议使用修饰符Volatile"。PMD的有争议的规则集中提到了此规则
在我的团队中,我们在各种模块上配置了Sonar,这些模块间接地具有来自PMD的规则集,因此任何使用易失性弹出窗口的行为都是严重警告。

问题是我们为什么使用volatile
volatile关键字用于布尔变量,以控制外部会话的状态。该状态在不同的线程之间访问,因此要知道状态是UP还是DOWN,它被维护为布尔易失性变量,以便在多个线程之间共享可见性。

我的问题是如何修复这个声纳警报
一种解决方案是从规则集中删除该规则,这是不允许的,因为:首先,不建议这样做,因为这些规则构成了从PMD规则集中定义的基本准则;其次,我所在组织中的SONAR服务器是所有团队都在使用的中心服务器。因此是不允许的。

另一种解决方案是通过使用一些注释来忽略声纳警告,这在基本规则集上也是不推荐的。

有人能建议我们如何用代码修复这个声纳警告吗?

提前谢谢。

首先,这个规则并没有指出代码中的一般问题-volatile是一个非常好的关键字,它没有任何问题。这就是为什么它是一个有争议的规则。

另一方面,使用它确实是一种高级技术,需要你知道自己在做什么。在某些情况下,您会知道,比如说,维护代码的人员将没有足够的Java知识。在这种情况下,规则可能有意义。

为了满足您的情况下的规则,请使用AtomicBoolean。

为什么不使用注释来抑制警告?

@SuppressWarnings("PMD.AvoidUsingVolatile")

最新更新