伞源科技Pinpoint和sonarQube对比
源伞科技Pinpoint和sonarQube对比
测试背景
使用工具:
- 源伞科技Pinpoint
- Sonarqube
测试项目:
- 本地测试框架项目两个文件
文件1:AsyncHttpClientUtil.java
文件2:FileUtil.java
测试结果汇总
数据统计:
- 源伞科技Pinpoint结果:
- 文件1:
- 严重:14
- 中等:2
- 文件2:
- 严重:8
- 中等:1
- 文件1:
- SonarQube结果:
- 文件1:
- 严重:13
- 文件2:
- 严重:18
- 一般:4
- 建议:1
- 文件1:
测试细节:
- 1、数量:
- 从数量看,Pinpoint较SonarQube结果数量少。
- 2、安全隐患:
SonarQube报告包括
- 5处空指针异常,
- 4处无引用方法,
- 两处““InterruptedException” should not be ignored”问题,
- 1处注释问题,1处“Utility classes should not have public constructors”问题。
- 13处用日志记录代替标准输出问题
- 1处导致资源泄漏问题
- 1处字符串文本不应重复
- 1处 Try-with-resources should be used
- 1处 工具类不应该有公共构造函数,工具类不宜实例化,且应有一个私有构造方法。
- 2处 可合并的“if”语句应该合并。
Pinpoint报告
- 9处空指针,
- 5处返回null给函数调用者,
- 2处函数 instanceof<java.lang.Exception> 的返回值没有被检查
- 1处创建了一个java.io.BufferedReader类的对象
- 2处if else分支问题
- 1处导致资源泄漏问题
- 2处 在util.FileUtil.readerFile(String)中找到对默认编码的依赖:new java.io.InputStreamReader(InputStream)
- 1处 util.FileUtil.readerFile(String)在循环中使用+连接字符串
主要结论:
- 从报告总量上SonarQube比Pinpoint数量多,但是无效问题居多,多出的问题一般是代码规范问题。(本次两款软件均采用默认级别扫描。 )
- SonarQube报告的4处无引用方法、2处注释问题、13处打印输出问题、2处合并if问题,并不影响程序执行,而Pinpoint每个报告都是需要去查看修改。
- Pinpoint 规则里可以判断程序中出现的条件判断语句问题,发现该问题2处。而且支持跨函数和跨文件扫描,发现该问题一处。(这两种问题sonar扫描不到)
- Pinpoint和SonarQube关注点有区别,sonar关注于代码规范,Pinpoint更关注与代码错误,且有效问题较高。
- sonar开源支持语言比PinPoint多,规则也可以选择。
- 个人观点:sonar适合开发日常自检,Pinpoint适合验收检测。
相关数据支撑资料已发布在在csdn
伞源科技Pinpoint和sonarQube对比的更多相关文章
- 【转】HashMap,ArrayMap,SparseArray源码分析及性能对比
HashMap,ArrayMap,SparseArray源码分析及性能对比 jjlanbupt 关注 2016.06.03 20:19* 字数 2165 阅读 7967评论 13喜欢 43 Array ...
- Collections.synchronizedList 、CopyOnWriteArrayList、Vector介绍、源码浅析与性能对比
## ArrayList线程安全问题 众所周知,`ArrayList`不是线程安全的,在并发场景使用`ArrayList`可能会导致add内容为null,迭代时并发修改list内容抛`Concurre ...
- HashMap源码详解与对比
前几天工作忙得焦头烂额时,同事问了一下关于Map的特性,刹那间懵了一下,紧接着就想起来了一些关于Map的一些知识,因为只要涉及到Collection集合类时,就会谈及Map类,因此理解好Map相关的知 ...
- DownloadProvider源码解析——与Volley对比
1.AndroidHttpClient的创建 DownloadManager: 在DownloadThread的run方法里 public void run() { Process.setThread ...
- sonarQube本机扫描C#项目
因项目需要,需要使用sonarQube对代码进行扫描并查看,因对sonarQube不熟悉,所以先在本机进行查看. 参考了张老师的博客:http://www.cnblogs.com/danzhang/p ...
- @Controller和@RestController源码解析
2018年不知不觉已经走到了尾声,你还在为分不清@Controller和@Restcontroller而烦恼吗?这篇博文从源码层面分析这两个注解,值得一读. 首先贴一张源码的图,对比一下,左边是@Co ...
- Java源码安全审查
最近业务需要出一份Java Web应用源码安全审查报告, 对比了市面上数种工具及其分析结果, 基于结果总结了一份规则库. 本文目录结构如下: 检测工具 FindSecurityBugs 基于class ...
- sonarQube安装及本机扫描C#项目
因项目需要,需要使用sonarQube对代码进行扫描并查看,因对sonarQube不熟悉,所以先在本机搭建测试环境. 参考了张老师的博客:http://www.cnblogs.com/danzhang ...
- 三星语音AI助理背后的华人身影—73岁科技人三度创业成功(孙子兵法:道、天、地、将、法)
我绝对不当老二,也不当老大,我要当霸主!”说这句话的是富迪科技董事长黄炎松.他还把“独霸”当作公司愿景宣言,大剌剌的放在美国总公司进门最显眼的墙上. 集微网消息,据台湾商业周刊报道,黄炎松,是台湾 ...
- synchronized的jvm源码分析聊锁的意义
上篇写完了ReentrantLock源码实现,从我们的角度分析设计锁,在对比大神的实现,顺道拍了一波道哥的马屁,虽然他看不到,哈哈.这一篇我们来聊一聊synchronized的源码实现,并对比reen ...
随机推荐
- 信而泰OLT使用介绍-网络测试仪实操
一.OLT产品介绍 1.概述 PON作为FTTX网络发展的核心技术,局端设备OLT尤其重要. 本文档中主要介绍OLT的功能特性.业务配置 2.基本功能特性 2.1大容量和高集成度 ZXA10 C300 ...
- JavaFX 常见事件类型及事件处理
什么是事件驱动编程 事件驱动编程是一种编程范式,其中程序的执行流程是由外部事件(如用户输入.传感器读数.消息接收等)触发的.在这种模式下,程序不是按照预定的顺序执行,而是响应事件来执行代码.这种编程方 ...
- 【转】SQL 中 Drop、Delete 与 Truncate 的区别
删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作.TRUNCATE TABLE 与没有 WHERE 子句的 DELE ...
- 自己封装下AES_GCM加密
crypto-js不支持 AES_GCM 加密 ,听说可以用 crypto 支持?当时是自己写的.... crypto API 要求页面在安全上下文(Secure Context)中运行.localh ...
- C#零基础入门系列(二)——第一个C#程序
C#零基础入门系列目录 C#零基础入门系列(一)--C#简介 C#零基础入门系列(二)--第一个C#程序 C#零基础入门系列(三)--数据类型 C#零基础入门系列(四)--变量与常量 上一节,我们讲了 ...
- Lec 12 进程间通信
Lec 12 进程间通信 目录 Lec 12 进程间通信 License 使用多个进程的应用 常见IPC的类型 IPC接口类型 简单IPC设计与实现 信息的发送 信息的接收 信息的远程方法调用(rec ...
- P11820 [PA 2015] 健身房 / Siłownia
P11820 [PA 2015] 健身房 / Siłownia 也许是另一种贪心做法,但是似乎需要卡空间,所以输麻了. 题意 有 \(m\) 个器材,有 \(n\) 个人要健身. 第 \(i\) 个人 ...
- ORA-600 16703故障,客户找人恢复数据库,数据库被进一步恶意破坏—ORA-00704 ORA-00922---惜分飞
有朋友找到我,数据库报ORA-600 16703错误,这个本来是一个比较常见的破坏故障(警告:互联网中有oracle介质被注入恶意程序导致-ORA-600 16703数据库启动报错如下: 修复tab$ ...
- MySQL查询今天的数据(昨天、本月)
对于MySQL而言,它有自己的函数来查询时间和日期,查询今天的数据也有相应的做法. 数据库结构如下,进行说明: CREATE TABLE `orders` ( `id` int(11) NOT NUL ...
- echarts tooltip 内容太多,超出范围显示不全问题,亲测有效
参考文章:echarts tooltip显示不全问题 文章目录 前言 解决 1.如果盒子还够大,只是`tooltip`飘到上面或者下面被覆盖住了,可以考虑`confine: true`这个属性,将to ...