静态代码扫描(六)——火线针对资源关闭问题的横向对比报告

2023-11-15

在上一篇文章中,我们列举了一些资源关闭需要考虑的特殊场景,并且预告了会在这篇放出火线和其他开源产品横向的扫描结果对比报告,包括Sonar、Infer、PMD和Findbugs(由于Lint没有针对资源关闭的规则,未加入对比)。

一. 对比结果

我们将资源关闭场景进行了细化和拆分,以保证代码扫描过程中既能检测出已有的问题,同时也不会对正确的写法产生误报。目前共计30个场景。
废话不多说,先上结果:

这里写图片描述

二. 结果分析

  1. PMD
    对比报告中使用的PMD版本为目前最新版本PMD5.6.1。
    PMD是业界老牌的开源静态代码扫描产品,于2002年发布了第一个版本,至今已有15年的积淀。它的优点是支持多种语言的静态扫描,同时由于其将源代码转化为抽象语法树进行分析的引擎特点,扫描速度快。但是也是由于引擎的特点,限制了它应对更加深入的检查需求,目前还难以满足。
    所以大家可以看到上面的结果中,PMD针对很多问题都无法成功检出。

  2. Findbugs
    对比报告中使用的Findbugs版本为目前最新版本Findbugs3.0.1。
    Findbugs也是业界老牌的开源静态代码扫描产品,同时也应该是知

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态代码扫描(六)——火线针对资源关闭问题的横向对比报告 的相关文章

  • ADC转换后的值推算还原实际测量电量

    ADC转换后的值推算还原实际测量电量 1 确定ADC用几位表示 最大数值是多少 例如一个8位的ADC 最大值是0XFF 就是255 2 确定最大值时对应的参考电压值 一般而言最大值对应5V 具体需参考芯片ADC模块的说明 寄存器有对于输入信
  • 开关电源基本工作原理

    本文以丰富的开关电源案例分析 介绍单端正激式开关电源 自激式开关电源 推挽式开关电源 降压式开关电源 升压式开关电源和反转式开关电源 随着全球对能源问题的重视 电子产品的耗能问题将愈来愈突出 如何降低其待机功耗 提高供电效率成为一个急待解决
  • 技术积累 — Ellisys软件及抓包器用户使用指南

    一 前言 Ellisys号称是业界最先进的蓝牙 Wi Fi USB协议分析仪 支持低功耗蓝牙协议分析测试 支持蓝牙5低功耗以及Wi Fi的物联网应用 支持与原始频谱 UART SPI HCI 逻辑信号等同步的宽带蓝牙5低能耗BLE Wi F
  • 主流安卓APP都中招了!“应用克隆漏洞”的快速检测修复方案

    2018年1月9日 国家信息安全漏洞共享平台发布了关于Android平台WebView控件存在跨域访问高危漏洞的安全公告 漏洞描述 攻击者利用该漏洞 可远程获取用户隐私数据 包括手机应用数据 照片 文档等敏感信息 还可窃取用户登录凭证 在受
  • Android应用的闪退(crash)分析

    文章转自阿里客户端工程师试题简析 Android应用的闪退 crash 分析 1 问题描述 闪退 Crash 是客户端程序在运行时遭遇无法处理的异常或错误时而退出应用程序的表现 请从crash发生的原因分类与解决方法 在出现crash后如何
  • 从端到端打通模型端侧部署流程(NCNN)

    文章目录 背景介绍 为什么要做端侧推理 端侧深度学习部署流程 一条主要技术路线 ONNX NCNN框架 NCNN的官方介绍 NCNN问题解决 NCNN使用样例 快速在NCNN框架下验证自己的模型 一般流程 YOLOv5的demo测试 全新部
  • 什么是XSS(跨站)攻击

    XSS 跨站 攻击的概念 XSS又叫CSS Cross Site Script 跨站脚本攻击 它指的是恶意攻击者往Web页面里插入恶意html代码 当用户浏览该页之时 嵌入其中Web里面的html代码会被执行 从而达到恶意用户的特殊目的 X
  • 关于C3P0容错和自动重连特性的研究

    最近常有数据库和网络设备升级和搬迁等事情 而各个应用都是基于数据库连接池做的 大部分都是基于C3P0 数据库或网络状况的变动都会导致客户端连接池中的connection失效 如何剔除这些blocked connection就和C3P0的各个
  • 程序静态分析第一课

    程序静态分析第一课 该课程主要内容来自北京大学熊英飞老师的 软件分析技术 事例一 飞机为了保证飞行安全 在很多设备上会设置冗余设备 一般来说都是一主二备三应急 一架飞机上同样功能的设备设施 会安装起码三套或更多来应付其中一套出故障而导致飞机
  • 【火线解码】001.避免在finally语句块中使用return语句

    火线团队推出 火线解码 系列文章 每一篇解释一种不规范的代码写法 用较短的篇幅让大家快速的了解代码规范问题 001 避免在finally语句块中使用return语句 错误的代码示例 public class Bar public Strin
  • php模块化供前端ajax调用的实现

    背景 没有使用php框架 由于临时需求 需要ajax调用php中的方法 简单的写了一个php文件 文件定义了两个方法 如何用ajax分别调用同一个php文件不同的方法 以下是abc php文件 我定义的两个方法a方法和b方法
  • ipconfig bash: ipconfig: command not found...

    在使用linux查看端口的时候 应该用ifconfig Windows才使用ipconfig
  • 静态代码扫描(六)——火线针对资源关闭问题的横向对比报告

    在上一篇文章中 我们列举了一些资源关闭需要考虑的特殊场景 并且预告了会在这篇放出火线和其他开源产品横向的扫描结果对比报告 包括Sonar Infer PMD和Findbugs 由于Lint没有针对资源关闭的规则 未加入对比 一 对比结果 我
  • 静态代码扫描(四)——Java资源关闭研究

    最近一直在研究java资源关闭的检查规则 发现市面上开源的工具针对资源关闭的检测都存在一定不足 同时也无法满足我们业务的需求 所以火线团队针对资源关闭进行了深度的研究 取得了一些不错的进展 但是过程的艰辛也远超了我们的预料 现在就跟大家聊聊
  • jsp 下载文件 AJAX不支持返回流类型 采用jquery easyui的表单提交

    JS filedownLoad function id downForm fileForm form downForm form submit url ctx file downLoad shtml fileid id type POST
  • synchronized 与 Lock 的异同

    最近在做一个监控系统 该系统主要包括对数据实时分析和存储两个部分 由于并发量比较高 所以不可避免的使用到了一些并发的知识 为了实现这些要求 后台使用一个队列作为缓存 对于请求只管往缓存里写数据 同时启动一个线程监听该队列 检测到数据 立即请
  • SHA-256算法实现过程

    整理一下SHA 256的实现步骤 1 定义8个32位常量 h0 0x6a09e667 h1 0xbb67ae85 h2 0x3c6ef372 h3 0xa54ff53a h4 0x510e527f h5 0x9b05688c h6 0x1f
  • PCIe 5.0 规范最新更新及PCIe 5.0测试挑战​

    PCIe 5 0 基础规范 v1 0 在 2019 年年中发布以后 Synopsys 发布了世界上第一款支持 PCIe 5 0 基础规范 v1 0 的 IP 并展示了在其实验室验证发射机 接收机 Tx Rx 性能的环境 Intel 也在 2
  • 技术积累 — Keil 查看内存占用/优化代码

    原文链接 转自Sugar的专栏 转载文章 若有不妥 通知后我会立即删除 一 查看内存占用 1 使用Keil编辑代码时 编译成功后 双击红色框框位置 就会弹出 map文件 2 那么map文件中能够读出哪些信息呢 Program Size Co
  • 静态代码扫描中Java资源对象关闭的探究

    本人在探究静态代码扫描中资源对象关闭规则遇到了一些疑惑 本文将这些疑惑记录下来并逐一找出解答 包括在哪些情况下 这些资源对象需要手动关闭 怎么正确的关闭 哪些情况下不需要手动关闭 以及为什么 资源对象包括很多种 本文重点关注输入输出流对象和

随机推荐

  • 史上最简单易懂、全面详细的“正则化”教程

    进入正文 全文摘要 在机器学习和深度学习中 最艰难的问题就是如何面对模型的过拟合问题 处理过拟合的方式手段多样 我们常常听见的方法是 正则化 但是 很多的资料对于正则化的介绍要么是单调片面 要么是晦涩难懂 本文汲取众家之长 由浅入深 彻底搞
  • 〖Linux〗git push orgin master不能解析域名的解决方法

    错误信息 git push origin master ssh Could not resolve hostname bitbucket org Name or service not known fatal Could not read
  • 视频播放器vue-core-video-player

    视频播放器 目前在做一个项目 需要视频播放器 便找到个视频播放器 看着挺好用的 来实操一下 vue core video player 文档链接 https core player github io vue core video play
  • ConfigEngine使用示例

    ConfigEngine使用示例 前提 本系统基于公开的原则 采用了Python作为开发语言 因此你需要下载安装Python环境才能运行本系统 当然 你还需要下载一份最新的ConfEngine配置编译引擎 地址在这里 http code g
  • RabbitMQ--扩展--05--学习脑图

    RabbitMQ 扩展 05 学习脑图 1 总体 2 RabbitMq 2 1 基本知识 2 2 交换器 2 3 工作队列 2 4 消息与事务 2 5 AMOP协议 2 6 基本架构 2 7 高可用 2 8 死信队列 2 9 消息相关3大问
  • 网页添加企业微信扫码登录-前端

    网页添加企业微信扫码登录 前端 1 在页面中创建二维码 2 扫码成功后会根据redirect uri重定向地址跳回网页 获取url地址中传递的code值 3 根据url中是否存在code值调取登录接口 4 后台流程 created 创建二维
  • 【干货】2021人工智能核心技术产业白皮书.pdf(附下载链接)

    大家好 我是文文 微信 sscbg2020 今天给大家分享中国信通院和中国人工智能产业发展联盟于2021年4月份联合发布的白皮书 2021人工智能核心技术产业白皮书 pdf 关注人工智能的伙伴们别错过啦 另外 我们也搭建了行业交流社群 涵盖
  • C++全局对象的初始化和析构

    众所周知 一个应用程序的开始是从main函数开始 到MAIN函数结束 那么对于下面的程序 1 cpp class A public A A A g a int main return 0 2 cpp A g a1 全局对象g a的初始化是谁
  • 事务的四大特性&脏读、幻读、不可重复读的区别&事务的隔离级别

    一 什么是事务 事务 是数据库操作的最小工作单元 是作为单个逻辑工作单元执行的一系列操作 这些操作作为一个整体一起向系统提交 要么都执行 要么都不执行 事务是一组不可再分割的操作集合 工作逻辑单元 事务的四大特性 1 原子性 atomici
  • arduino笔记37:nrf24l01的数据缓冲区(TX FIFO、RX FIFO)

    从本节开始 关于nrf24l01使用 我只会讲和 Enhanced ShockBurst 增强型短时猝发工作模式 有关的内容 Enhanced ShockBurst 就是前面屡次提到的 自动回复 工作模式的官方称呼 所以那种使用PTX PR
  • windows,同一台机器安装两个mysql问题,MySQL服务切换问题

    问题描述 windows安装多个版本的mysql 重启后发现无法连接原有的数据库 原因可能是mysql的服务的可执行程序路径不正确 问题解决 1 Ctrl R 输入regedit 回车打开注册表编辑器 2 根据路径HKEY LOCAL MA
  • JAVA程序员如何快速写一个QQ机器人?

    只要你有java环境 知道maven 建一个java版的qq机器人 只需要一条命令 通过命令创建 mvn archetype generate B DarchetypeGroupId com shr25 robot DarchetypeAr
  • Django项目,使用网上的html模板产生编码问题,爆出错误UnicodeDecodeError at / 'utf-8' codec can't decode byte 0xcf

    UnicodeDecodeError at utf 8 codec can t decode byte 0xcf in position 203 invalid continuation byte 错误截图 这个错误困扰了很长时间 主要原因
  • 域名限制注册有哪些原因?

    关注我们 获取更多域名相关知识 首先 英文域名的注册有几个基本规则 分别是 只能使用英文字母 a z 不区分大小写 数字 0 9 以及连接符 不支持使用空格及以下字符 等 连接符 不能连续出现 不能单独注册 也不能放在开头和结尾 域名长度不
  • openGL之API学习(十六)glViewport

    确定要绘制的区域 如果你打算把整个屏幕渲染到一个或大或小的纹理上 你需要用新的纹理的尺寸作为参数再次调用glViewport 要在渲染到你的帧缓冲之前做好 否则只有一小部分纹理或屏幕能够绘制到纹理上 void glViewport GLin
  • 【Docker基础入门】部署docker管理工具portainer-ce

    Docker基础入门 部署docker管理工具portainer ce 一 portainer ce介绍 1 portainer简介 2 portainer ce简介 3 portainer ce容器镜像说明 二 检查本地docker环境
  • python计算机视觉第五次实验

    相机标定 Camera calibration 摄像机标定简单来说是从世界坐标系转换为相机坐标系 再由相机坐标系转换为图像坐标系的过程 也就是求最终的投影矩阵P的过程 世界坐标系 用户定义的三维世界的坐标系 为了描述目标物在真实世界里的位置
  • vite项目中处理各种静态资源的引入方式介绍

    一 引用图片资源 在vite创建的vue3项目中 引用图片资源有以下两种方式 直接在模板中使用路径引用 在模板中使用标签 通过src属性引用图片 例如
  • Python os.path() 模块

    os path 模块主要用于获取文件的属性 以下是os path 模块的几种常用方法 方法 说明 os path abspath path 返回绝对路径 os path basename path 返回路径中最后一个元素 以 结尾时返回空字
  • 静态代码扫描(六)——火线针对资源关闭问题的横向对比报告

    在上一篇文章中 我们列举了一些资源关闭需要考虑的特殊场景 并且预告了会在这篇放出火线和其他开源产品横向的扫描结果对比报告 包括Sonar Infer PMD和Findbugs 由于Lint没有针对资源关闭的规则 未加入对比 一 对比结果 我