Java Findbugs NP-NP\u NULL\u在某个路径上
Findbugs在某个路径上显示一行的Java Findbugs NP-NP\u NULL\u在某个路径上,java,findbugs,Java,Findbugs,Findbugs在某个路径上显示一行的NP\u NULL\u 它表示有一个语句分支,如果执行该分支,它保证null值将被解引用,这将在执行代码时生成NullPointerException 当然,问题可能是分支或语句不可行,并且永远无法执行null指针异常;确定这超出了FindBugs的能力 代码如下: public int compare(Object o1, Object o2) { .... String sTypeName1 =
NP\u NULL\u
它表示有一个语句分支,如果执行该分支,它保证null
值将被解引用,这将在执行代码时生成NullPointerException
当然,问题可能是分支或语句不可行,并且永远无法执行null
指针异常;确定这超出了FindBugs的能力
代码如下:
public int compare(Object o1, Object o2)
{
....
String sTypeName1 = row1.getFieldValue(OBJECT_TYPE_FIELD_NAME);
String sTypeName2 = row2.getFieldValue(OBJECT_TYPE_FIELD_NAME);
if (sTypeName1!= null && sTypeName1.indexOf("~") != -1)
{
sTypeName1 = m_oc.getString(sTypeName1);
}
if (sTypeName2!= null && sTypeName2.indexOf("~") != -1)
{
sTypeName2 = m_oc.getString(sTypeName2);
}
int cf = sTypeName1.compareTo(sTypeName2);
if (cf == 0)
{
cf = o1.toString().compareTo(o2.toString());
}
return cf;
}
它显示了代码的两个相同类型的错误:
int cf = sTypeName1.compareTo(sTypeName2);
在这里,它表示从sTypeName1
加载的值可能存在空指针解引用
所以我必须在这个代码前面加一个null
检查,比如:
if(sTypeName1 != null && sTypeName2 != null)
{
int cf = sTypeName1.compareTo(sTypeName2);
}
但问题并没有得到解决(
有人能提出解决方案吗?我的方法有什么问题吗
非常感谢您仔细阅读我的问题:)对我来说,问题已经解决了。此代码不会生成错误报告:
String sTypeName1 = row1.getFieldValue("qqq");
String sTypeName2 = row2.getFieldValue("www");
if (sTypeName1 != null && sTypeName1.indexOf("~") != -1) {
sTypeName1 = m_oc.getString(sTypeName1);
}
if (sTypeName2 != null && sTypeName2.indexOf("~") != -1) {
sTypeName2 = m_oc.getString(sTypeName2);
}
int cf = 0;
if (sTypeName1 != null && sTypeName2 != null) {
cf = sTypeName1.compareTo(sTypeName2);
}
if (cf == 0) {
cf = o1.toString().compareTo(o2.toString());
}
return cf;
可能您没有重新编译代码,或者没有再次执行FindBugs分析。对我来说,问题已经解决。此代码不会生成错误报告:
String sTypeName1 = row1.getFieldValue("qqq");
String sTypeName2 = row2.getFieldValue("www");
if (sTypeName1 != null && sTypeName1.indexOf("~") != -1) {
sTypeName1 = m_oc.getString(sTypeName1);
}
if (sTypeName2 != null && sTypeName2.indexOf("~") != -1) {
sTypeName2 = m_oc.getString(sTypeName2);
}
int cf = 0;
if (sTypeName1 != null && sTypeName2 != null) {
cf = sTypeName1.compareTo(sTypeName2);
}
if (cf == 0) {
cf = o1.toString().compareTo(o2.toString());
}
return cf;
可能您没有重新编译代码或没有再次执行FindBugs分析。它显示的另一个错误相同,但当wrt compareTo()时。它显示的另一个错误相同,但当wrt compareTo()时。它显示的另一个错误相同,但当wrt compareTo()时。