Java Findbugs NP-NP\u NULL\u在某个路径上

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 =

Findbugs在某个路径上显示一行的
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()时。