25
社区成员
发帖
与我相关
我的任务
分享
静态缺陷检测工具SpecChecker是一个经典的、完全国产自主可控的面向ISO26262的静态分析解决方案,支持安全编码规则检查、典型故障模式检查、代码度量分析、运行时错误检测等功能。

图20 SpecChecker架构图
三大核心技术:
SpecChecker在载人航天工程等航天重大需求的牵引下,历时10余年,已成为国内领先的静态分析工具。

5.2.1 支持的编码标准
SpecChecker全面、精准的支持汽车、航天、军工行业多项编码标准的自动化检查,提供多个规则集对不同的编码标准进行覆盖。
表1 规则集列表
|
GJB 8114、GJB 5369 |
MISRA C:2004 |
|
载人航天工程C语言软件编程规范(921C-2017) |
MISRA C:2012 |
|
航天器C语言软件编程约定 |
MISRA C++ 2008 |
|
CERT C/C++、CWE |
AUTOSAR C++14 |
|
Python语言编程规范 |
Java语言编程规范 |
表2 编码标准规则数覆盖统计
|
编码标准 |
总数 |
适用工具检查 |
SpecChecker支持 |
|
MISRA C:2012 |
175 |
168 |
165 |
|
MISRA C++:2008 |
228 |
228 |
214 |
|
AUTOSAR CPP14 |
397 |
358 |
355 |
SpecChecker的全部检查报警信息均为精心设计,尽可能包含“哪个变量/语句”、“违反了哪些要求”提示信息,对于较难理解的规则尽可能添加“应该如何修改”指导信息。

图22 SpecChecker违反显示界面
对于在软件编码时没有编译错误,但运行时可能导致程序崩溃的问题,SpecChecker针对这些问题提供了单独的检查。目前支持了数组越界、内存泄漏、空指针解引用、整数溢出等23项运行时错误检测。

图23 运行时错误检查
数组越界检测引擎HASA
轩宇信息针对嵌入式软件位运算多、类型转换多以及I/O数据多等特征,提出了一种基于抽象解释的数组越界检测方法,开发了高精准嵌入式软件数组越界检测引擎HASA,误报率漏报率大大降低。

图24 数组越界检测

图25 同类产品对比
SpecChecker支持典型故障模式检测,内置了软件故障模式集。该模式集可以用于描述软件在各个层面的故障,作为软件故障识别、预防、缓解的一种公共基线标准。典型的故障模式如内存地址范围判断错误、C51 中连续开关中断操作导致开关中断失效、小数减大数导致结果溢出等。依托数十年承担国家航天嵌入式软件测试的深厚积累,对嵌入式软件中已知的错误或故障进行了系统的理解和固化,目前已经形成了超过217项典型故障模式,SpecChecker可对这些故障模式进行自动化检测,大幅提升了工具的检测能力。

图26 典型故障模式示例
5.2.4 针对中断的共享资源分析及并发缺陷检测
SpecChecker支持中断共享资源分析以及并发缺陷检测,可对ISO 26262中的中断使用、全局变量使用、共享资源管理等要求提供支撑。工具从函数入口开始,分析所有全局变量的访问情况;通过数据流分析框架和过程间分析,分析代码中可能存在的访问冲突;并通过可视化的缺陷场景视图报告给用户。

图27 中断数据访问冲突缺陷检测
5.2.5 代码度量分析
SpecChecker通过控制流、数据流分析、函数调用关系分析、图论等技术实现代码的度量分析,对组件大小和复杂度、接口大小等相关的要求提供了支撑。
工具提供了覆盖项目、文件、模块三个层次的70余项代码度量分析,可为软件内部质量度量提供基础数据,并提供了度量项目和度量对象双视角的度量结果查看视图。

图28 度量报告视图
5.2.6 支持的编译环境和语言规范
SpecChecker支持全部主流的C/C++语言标准和多种编译环境。
编译器及开发环境支持
语言标准支持
5.2.7 SpecChecker的多种形态
SpecChecker提供了命令行、Web、桌面端、IDE插件等多种形态,可用于各类使用场景。工具的桌面版本、命令行版本,可部署在物理机、虚拟机、云、docker等多种环境。同时,工具可满足单机使用、持续集成每日检查、代码提交门禁检查、IDE集成开发时检查等多种使用场景。

图29 工具命令行版本

图30 工具IDE插件

图31 工具Web版本
每一个规则检查器都经过了数十万行真实代码的严格对比测试,SpecChecker对MISRA C/C++/AUTOSAR 误报率、漏报率显著低于国外同类产品。


图32 规则检查结果
5.4 SpecChecker通过ISO 26262功能安全认证
SpecChecker于2017年通过ISO 26262功能安全认证,获得TÜV SUD颁发的认证证书,是国内首个通过认证的静态分析工具。至今为止,每个正式发布版本都进行功能安全认证,累计7次;依据证书和技术报告,工具可用于最高安全等级(ASIL D)软件的验证,工具检查结果和报告可作为ISO 20262功能安全认证证据。

图33 功能安全认证
SpecChecker广泛应用于航天、航空、兵器、电子、核电、汽车等领域的40余家单位,在航天等安全关键领域实现对国外同类产品的替代,年均提供客户支持百余次。
航天应用:每年检测上千万行代码,累计分析数亿行装备软件,用于神舟系列飞船、空间站、月球探测器、火星探测器、北斗导航等几乎所有航天器的嵌入式软件测试,其健壮性、易用性受到大规模项目的检验,较国外同类工具提高效率3倍。

图34 航天应用
汽车行业应用:在国内某大型智能汽车零部件供应商进行了应用,用于检查MISRA C 2012、MISRA C++ 2008和AUTOSAR CPP14编码标准符合性,作为其代码准入分析工具,每周检测千余次,误报率、漏报率远低于某商业工具。帮助企业顺利通过自主研发车载操作系统、智能驾驶辅助系统、智能座舱系统等的国际功能安全认证。
北京轩宇信息技术有限公司立足 20 余年国家重大型号嵌入式软件测试的深厚经验积累,突破了多项关键核心技术,成功研发功能完善、易用性强、成熟度高的源代码静态分析解决方案,解决了编码标准检查合规性差、缺陷检测种类少及误报高、国外工具卡脖子的问题,可以满足军工、汽车、轨交等各个行业的合规性测试,有效保障软件质量。
联系电话:167 1086 9068
联系邮箱:tech-support@sunwiseinfo.com
北京总部地址:北京市海淀区中关村南一条4号
欢迎访问产品网站:北京轩宇信息技术有限公司--高可信工具软件