注意:此处的代码只是重新创建的最小代码,导致此问题的代码实际上涉及InitialContext
对象。
SonarQube规则squid:S2583,
当实例化对象时,更改此条件,使其不会始终评估为" true"
似乎会产生误报,即使构造函数抛出了已检查的异常。作为一个最小的例子,
public void falsePositive()
{
TestObject myValue = null;
try
{
myValue = new TestObject();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (myValue != null)
{
System.out.println("Not null");
}
}
}
将TestObject
声明为
public class TestObject
{
public TestObject() throws Exception
{
throw new Exception();
}
}
这会在if (myValue != null)
行产生问题,这意味着myValue
始终为非空,显然不是这样。
这是规则中的错误,还是我在这里遗漏了什么?
答案 0 :(得分:3)
此问题是由于某些流量分析错误导致的,并已在声纳java插件版本3.9
中解决