产品概述
CodeSonar是软件静态缺陷检查和安全性分析工具,帮助团队快速分析和验证代码,识别导致系统故障、可靠性差、系统漏洞或不安全条件的严重漏洞或错误。通过在并发性分析、污染数据流分析和全面检测等技术上的创新,CodeSonar比其他同类型工具发现更为重要的缺陷。
功能特性
l先进的静态分析算法
CodeSonar执行统一的数据流和符号分析,检查整个程序的运算。该方法不依赖于模式匹配或类似的近似。CodeSonar通过更为深入的分析自然而然地发现新的或不寻常的缺陷。
图1查看缺陷的每条路径追踪
l分析数百万行代码
CodeSonar可以执行千万行代码的全程序分析。一旦完成了起初的基线分析,CodeSonar的增量分析能力快速分析代码库的每日变化。分析能并发运行,充分利用多核环境的优势。
l支持编程标准
CodeSonar支持编程标准,如MISRA C:2012、IS0-26262、US-CERT以及CWE等。
l软件架构的可视化
可视化代码揭示和理解代码之间的关系。Visual Taint Analysis允许用户快速发现具有潜在危险信息流的来源。
图2 可视化软件架构理解代码
l查看质量趋势
图表显示数据,帮助用户管理开发和测试的工作。
图3 通过比较分析查看质量的趋势,发现引入的缺陷类型
l定制分析
提供C API,易于创建新的检查。很多内置的检查也可以根据本地需求进行配置。CodeSonar本身可以计算N种不同的代码度量,也可以使用API来定义自己的度量。
l检查项示例
缓冲区溢出
未初始化变量
释放非堆变量
释放后再使用
双重释放/关闭
格式化字符串漏洞
返回局部变量指针
数据竞争
死锁
空指针间接引用
双重关闭
被零除
危险函数转换
资源泄漏
l支持的语言
C
C++
JAVA/C#(需额外组件)
典型应用
CodeSonar关注的是那些“真正能够引发问题”的软件缺陷,因此被广泛使用在安全关键和任务关键的系统,比如汽车电子、航空航天。由于算法的科学性和先进性,往往能检测到其它静态工具可能遗漏的问题所在。例如,对某开源代码的检测,如下隐藏在特定路径里的“条件表达式永远为TRUE”的案例,CodeSonar给出了较其它静态分析工具更为准确的表现:
图4 条件表达式永远为TRUE的示例,隐藏在switch-case路径中
观察102行,t1v_type == -1如果为真,顶层的while循环将退出;在switch语句中,164行,t1v_type == -1则不可能为真。CodeSonar指出这里是一个“copy-paste错误”,此检查比较“智能”,它认为此处的t1v_type应该是中间复制变量sub_t1v_type,这两个变量在错误的路径中都已高亮显示。