sonar能否动态捕获JVM引起的空指针异常

请问sonar能否在运行时发现java虚拟机引起的空指针异常??如果是,请告诉我哪个声纳规则为我们做的。我对此感到非常困惑,因为声纳 findbugs 配置文件中存在一些规则,这些规则说声纳捕获空指针异常。findbugs 规则之一Avoid Throwing Null Pointer Exception说我们应该避免抛出空指针异常。


ps.请澄清一下声纳可以捕获空指针异常还是由 JVM 抛出?或者它只能捕获自定义的空指针异常(由开发人员生成)以及这些声纳规则的含义(空指针异常、空指针取消引用等)。使用声纳的规则是什么?



NullPointerException是的,Sonar 可以通过使用引擎盖下的 FindBugs 工具来检测JVM 抛出的 s (NPE)。但是,它不能运行时动态地这样做,因为 FindBugs 是一个静态分析工具

FindBugs 检测器中,选择NP_其键中带有前缀的检测器,例如NP_ALWAYS_NULL大约有 30 个这样的检测器处理空指针分析。

请注意,FindBugs 通过代码的静态分析来工作。换句话说,它不会动态地“捕获”NPE 或以某种方式执行代码的模拟运行并“捕获”NPE。这很难做到,因为每个可能的代码路径都需要测试用例。相反,FindBugs 仅使用其检测器分析类文件。
因此,您不会找到所有可能发生 NPE 的情况,但由于检测器的绝对数量,您将捕获最多。此外,该领域的一些 FindBugs 检测器非常复杂,尽管总有改进的余地。

另请注意,为了帮助检测器完成其工作,您可能必须使用空指针分析注释来注释方法参数和返回值(也在此处的 JSR305 中)。如果你在 SO 中搜索这些注解,你会发现很多关于它们在各种环境中正确使用的有用建议。

文章来源地址https://www.toymoban.com/diary/problem/263.html

到此这篇关于sonar能否动态捕获JVM引起的空指针异常的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/problem/263.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
上一篇 2023年08月19日 16:46
下一篇 2023年08月19日 16:46

相关文章

  • C语言和C++中的空指针区别

    C语言中,空指针是 NULL ,是一个宏 在C++中 NULL 似乎也可以用,但是C++中的 NULL 其实是有问题的。C++大佬在设计的时候可能没有考虑全面 在C++98中,字面常量0既可以是一个整形数字,也可以是无类型的指针(void*)常量 但是编译器默认情况下 将其看成是一个整形常量,如果要将

    2024年01月25日
    浏览(53)
  • 【C++那些事儿】内联函数,auto,以及C++中的空指针nullptr

    君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C++ 游戏开发 Hello,米娜桑们,这里是君兮_,我之前看过一套书叫做《明朝那些事儿》,把本来枯燥的历史讲的生动有趣。而C++作为一门接近底层的语言,无疑是抽象且难度颇深的。我希望能努力把抽象繁多的知识讲的生

    2024年02月08日
    浏览(43)
  • 智能指针+拷贝构造+vector容器+多态引起的bug

    今天在调试一段代码的时候,VC编译提示: error C2280: “T485CommCtrlPara::T485CommCtrlPara(const T485CommCtrlPara )”: 尝试引用已删除的函数 函数执行部分如下:  看意思是这个pComm485Pro已经消亡了,后续push_back到vec485DevCommPara有问题,但智能指针已经move了,这样new出来资源的所有权应该

    2024年02月11日
    浏览(44)
  • 【C++】异常处理 ① ( 异常概念引入 | 抛出异常语法 | 捕获异常语法 | 异常捕获流程 | 异常处理代码示例 )

    异常是一种 特殊的程序流控制机制 , 用于处理程序中可能出现的错误或异常情况 ; 当程序执行错误时 , 由 throw 抛出异常 , 并即跳转到相应的异常处理程序中 ; 如果没有适当的异常处理程序处理该异常 , 程序会崩溃终止 ; 异常与函数对比 : 函数 是一种 以 栈结构 展开的

    2024年02月04日
    浏览(51)
  • 【Java基础教程】(三十一)常用类库篇 · 第一讲:Optional类——解锁Java的Optional操作,消灭那些隐匿的空指针,还程序世界一个安稳!~

    Optional 类是Java 8引入的新特性,旨在解决空值( null )的处理问题 。它的设计目的是为了提供一种更好的方式来处理可能为空的值,避免使用 null 导致空指针异常。 Optional 是一个容器对象,可以持有某个类型的非空值或者空值。它是一个包装类,用于替代可能为空的引用变

    2024年02月15日
    浏览(45)
  • 爬虫异常处理:异常捕获与容错机制设计

    作为一名专业的爬虫程序员,每天使用爬虫IP面对各种异常情况是我们每天都会遇到的事情。 在爬取数据的过程中,我们经常会遇到网络错误、页面结构变化、被反爬虫机制拦截等问题。在这篇文章中,我将和大家分享一些关于如何处理爬虫异常情况的经验和技巧。通过异常

    2024年02月11日
    浏览(44)
  • java异常处理机制(二)之异常处理与捕获

    1 Error(错误): 是指程序无法处理的错误,表示运行应用程序时比较严重的问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时JVM(Java 虚拟机)出现的问题。 2 异常(Exception): 是指在程序执行时由于程序处理逻辑上的错误而导致程序中断的一种指令流。通俗的

    2024年02月05日
    浏览(108)
  • Java 异常处理以及如何捕获和处理多个异常

    在Java中,我们使用异常处理程序组件try,catch和finally块来处理异常。 为了捕获和处理异常,我们将try...catch...finally代码块放置在可能产生异常的代码周围。finally块是可选的。 try...catch...finally的语法为: 可能会生成异常的代码放在try块中。 每个try块后面应紧跟着catch 或 fi

    2024年02月14日
    浏览(44)
  • c++捕获异常

    catch  块跟在  try  块后面,用于捕获异常。您可以指定想要捕捉的异常类型,这是由 catch 后的括号内的异常声明决定的。 try { // 保护代码 }catch( ExceptionName e ) { // 处理 ExceptionName 异常的代码 } 上面的代码会捕获一个类型为  ExceptionName  的异常。如果您想让 catch 块能

    2024年02月09日
    浏览(39)
  • Python 异常捕获与处理

    当我们写程序难免遇到报错,专业的称呼叫做异常,行业俗语叫做bug,由于异常情况出现会导致代码停止运行,所以在编写过程中要尽可能避免。 语法错误 这一类错误很好理解,相当于你不会写,比如用if或for的时候不知道他们怎么写,这种情况比较夸张了,好好学过的人都

    2023年04月22日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包