声纳警报:不访问实例数据的“私有”方法应该是“静态的”

时间:2015-10-15 09:00:02

标签: java sonarqube

声纳有这个规则:

  不访问实例数据的

try: your line to make http requests except: pass 方法应为private

     不访问实例数据的

static方法可以是private   防止对方法合同的任何误解。

我在一个从匿名内部类创建新对象的方法中有这个警告。

static

class Exemple { private Object _instanceObject; ........... private Something createSomething(String key) { return new Something(key) { @Override public Object getValue(Object element) { return _instanceObject.getSomething(element); } }; } } 如何是非静态字段。我无法对非静态字段_instaceObject进行静态引用。正如声纳所说,我不能将此方法设为静态,因为存在访问实例数据。

我的问题是,Sonar没有在匿名内部类中看到_instanceObject的使用,因此Sonar向我显示警报:不访问实例数据的私有“方法应该是”静态的“ 声纳说我应该将方法_instanceObject设为静态。

  

将“createSomething”设为“静态”方法。

使用注释// NOSONAR来忽略Sonar指示的这种错误违规是否合适?

  

Ignore violations with the new ‘//NOSONAR’ comment

     

NOSONAR标记告诉Sonar忽略特定的所有违规行为   排除用于扫描代码的任何规则引擎。当然,   Sonar仍然可以管理广泛使用的// NOPMD和// CHECKSTYLE:OFF   … 上。我们只是添加了一种本地方式来管理误报。   对于已激活的用户,此功能是一项真正的改进   Findbugs规则,因为没有干净的方法将Findbugs标记为false   积极的:现在有'// NOSONAR'。

它是声纳中的一个已知错误吗?

1 个答案:

答案 0 :(得分:0)

通过将Sonar升级到5.1.2版本来解决问题