当前位置: 首页 > 知识库问答 >
问题:

FindBugs空指针解引用

殳俊
2023-03-14

我正在代码中运行findBugs测试。

if (list != null) {
            TestDTO testDTO;
            for (Object[] object : list) {
                testDTO = new TestDTO();
                testDTO.setId(object[0] != null ? (Integer) object[0] : null);
            }
        }

它报告NP_NULL_ON_SOME_PATH:以下代码中可能存在空指针解引用。

testDTO.setId(object[0] != null ? (Integer) object[0] : null);

我不明白为什么它会这样报告?

共有2个答案

胡鸿羲
2023-03-14

有一个语句分支,如果执行,保证空值将被取消引用,这将在代码执行时生成NullPointerExcure。当然,问题可能是分支或语句不可行,空指针异常永远无法执行;决定这超出了FindBugs的能力。

http://findbugs.sourceforge.net/bugDescriptions.html#NP_ALWAYS_NULL_EXCEPTION

何高旻
2023-03-14

根据测试预期,尝试将参数标记为@Nullable或@NonNull

检查此网址

FIndbug未识别空指针异常

 类似资料:
  • 嗨我有以下方法: 不得不提的是,startDate和endDate是长变量。我尝试在if条件中添加null检查,也尝试使用longValue()方法,但没有结果。你知道我怎样才能解决这个问题吗?可能是fndBugs端的bug?

  • 我正在通过Sonarqube在代码上运行findbugs,我得到一个空指针解引用错误: 有一个语句分支,如果执行,保证空值将被取消引用。 故障代码很简单: 我想知道这怎么可能。NPE唯一可能的地方是调用x.compareTo(y)时,但如果x=null,Java将永远不会分析该分支,对吗? 这是一个bug,还是我遗漏了Java分析这条语句的方法? 更新 谢谢你的意见。最后我建议他们改成: 我发现这

  • 我试图用以下代码指出声纳中的关键问题: 我也做了下面的更改,但仍然不起作用 请帮忙。

  • 对指针来说,解构(destructuring)和解引用(dereferencing)要区分开, 因为这两者的概念是不同的,和 C 那样的语言用法不一样。 解引用使用 * 解构使用 &,ref, 和 ref mut fn main() { // 获得一个 `i32` 类型的引用。`&` 表示获取一个引用。 let reference = &4; match reference

  • 指针变量也是变量,是变量就可以任意赋值,不要越界即可(32位编译器指针大小为4字节,64位编译器指针大小为8字节),但是,任意数值赋值给指针变量没有意义,因为这样的指针就成了野指针,此指针指向的区域是未知(操作系统不允许操作此指针指向的内存区域)。所以,野指针不会直接引发错误,操作野指针指向的内存区域才会出问题。 int a = 100; int *p; p = a; //把a的值赋值给指针变量p

  • 第一个示例:“源代码”https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/process_function.html“” 我正在尝试重写KeyedProcessFunction类的processElement()。ProcessElement有3个参数,其中一个参数是上下文对象。当我试图从上下文对象