源伞科技Pinpoint,作为BAT都在使用的一款静态代码分析工具,到底有什么领先于其他厂商的能力?
1. 扩展和部署功能对比
- 源伞科技Pinpoint现有的检查器可以通过简单的json配置文件扩展业务逻辑。比如敏感数据泄露到日志检查器,企业或许有很多自己的日志打印函数,我们可以通过人工配置指定,即可提高检测质量。
- 如果不想人工配置,Pinpoint有未公开发布的库函数学习工具,可以通过线下分析企业代码库自动学习和生成上述配置文件。
- Pinpoint对分布式多机扫描部署支持比Coverity好,并发扫描和结果合并x性能也比Coverity更强,能更好支持BAT级别的数千代码库扫描(已在BT部署验证)。
2. 分析能力对比
本节补充一些人工构造的例子介绍Pinpoint在分析能力上比Coverity强的部分。本节所有代码示例,Coverity均有误报或漏报。
- Pinpoint更懂数据流
- 精确深度的指针分析,深入分析内存中的程序行为
- 高深度高精度函数调用链分析,查找跨越多层函数的深度问题
示例代码如下:
(链接:https://www.sourcebrella.com/online-showcase/?id=5b483da03a21cd078346028f),此示例代码基于空指针(Null Pointer Dereference)问题检测。
准备代码:
代码中我们定义了一个base基类和两个衍生类,其中Derived1的doit函数返回了空指针(见(1))这个空指针随后会被用到。后边我们又定义了一个user类,里边有两个变量,dat1初始化为derived1类型(有空指针),dat2初始化为derived2类型,是安