声纳有一条规则:
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);
}
};
}
}
How\u instaceObject
是一个非静态字段。我无法对非静态字段\u instanceObject
进行静态引用。正如sonar所说,我不能将此方法设置为静态,因为存在一个访问实例数据的方法。
我的问题是,Sonar没有在匿名内部类中看到\u instanceObject
的使用,因此Sonar向我显示了警告:不访问实例数据的私有“方法应该是“静态的”。Sonar说,我应该使该方法createSomething(字符串键)
静态。
使“创建一些东西”成为“静态”方法。
使用注释//NOSONAR忽略声纳指示的错误违规行为是否合适?
使用新的“//NOSONAR”注释忽略违规行为
NOSONAR标签告诉Sonar忽略特定行上的所有违规行为,无论使用何种规则引擎扫描代码。当然,声纳仍然能够管理广泛使用的//NOPMD和//CHECKSTYLE:OFF…ON。我们只是简单地添加了一种本地方法来管理误报。对于已经激活Findbugs规则的用户来说,这个功能是一个真正的改进,因为没有干净的方法将Findbugs标记为假阳性:现在有了“//NOSONAR”。
这是声纳中已知的臭虫吗?
声纳升级到5.1.2版本解决了这个问题
问题内容: 我从Sonar收到此提示: 实例方法不应写入“静态”字段 我不确定要解决此问题需要更改什么。 “ SemaMonitorProxy.applicationContext”是否必须等于静态方法? 问题答案: 实际上这种方法: 是写入静态字段的实例方法: 您不能将上述方法设为静态。因此,唯一的解决方案是从声明中删除static关键字。
我有一个关于静态方法访问的问题。我有一个类,其中有4个静态方法。如代码所示: } 我正在从下面的代码调用来自onLoadShipperDetailsListCtrl()的setSortingEnable()方法: } 因此,如果我从其他类调用setSortingEnabled()方法,我会认为它是公共的,而其他方法是私有的,但它会给我一个错误:Java . lang . nosuchmethode
为什么会这样?我的意思是,访问私有变量。
问题内容: 假设我有一个要实例化的类。我在类中有几个私有的“帮助器”方法,它们不需要访问任何类成员,而仅对它们的参数进行操作,并返回结果。 有没有指定任何特别的原因,并为静态方法-或任何特别的理由不? 将它们设置为非静态无疑是最容易的,即使它们可以肯定是静态的而不会引起任何问题。 问题答案: 我更喜欢这样的帮助方法; 这将使读者清楚地知道他们不会修改对象的状态。我的IDE还将以斜体显示对静态方
这将打印a.a=50 但是,如果我将更改为,那么我可以如何访问该变量呢?
尝试创建静态函数可授予对属性 xdate 的访问权限,该属性已在构造函数中初始化(在 typescript 1.5.3 中)。 this.xdate可在所有其他实例方法中访问。它在静态方法中仍然不可访问。 在静态方法中,我是否可以让this.xdate访问? 以下是我的代码:- 任何指点都会有很大的帮助。(如果这是一个重复的问题,请事先道歉) /* UglyHack#1:由于静态方法甚至在对象实例