如何使用工具满足ISO26262软件验证要求(三)

高可信测试工具 2023-12-06 11:02:58
加精

第 5 章 面向ISO 26262的静态分析解决方案 

 

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

图20 SpecChecker架构图

三大核心技术:

  • 全自主的多元程序分析引擎:模式匹配、符号执行、抽象解释、数据流分析
  • 中断并发缺陷检测技术
  • 精确的代码规则检查技术

5.1 SpecChecker版本迭代情况

SpecChecker在载人航天工程等航天重大需求的牵引下,历时10余年,已成为国内领先的静态分析工具。

图21 SpecChecker版本演进

5.2 SpecChecker方案功能

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违反显示界面

5.2.2 运行时错误检测

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

图23 运行时错误检查

数组越界检测引擎HASA

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

图24 数组越界检测

图25 同类产品对比

5.2.3 基于静态分析的典型故障模式检测

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

图26 典型故障模式示例

5.2.4  针对中断的共享资源分析及并发缺陷检测

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

图27 中断数据访问冲突缺陷检测

 5.2.5 代码度量分析

SpecChecker通过控制流、数据流分析、函数调用关系分析、图论等技术实现代码的度量分析,对组件大小和复杂度、接口大小等相关的要求提供了支撑。

工具提供了覆盖项目、文件、模块三个层次的70余项代码度量分析,可为软件内部质量度量提供基础数据,并提供了度量项目和度量对象双视角的度量结果查看视图。

图28 度量报告视图

5.2.6  支持的编译环境和语言规范

SpecChecker支持全部主流的C/C++语言标准和多种编译环境。

编译器及开发环境支持

  • ARM/ ARM DS 5
  • Keil μVision2/3/4
  • GNU GCC
  • LLVM Clang
  • HighTec
  • Green Hills
  • WindRiver Workbench
  • Visual Studio
  • QNX
  • Code Composer Studio
  • ……

语言标准支持

  • C89/C90/C99/C11
  • C++03/C++05/C++11
  • C++14/C++17/C++20(部分)

5.2.7 SpecChecker的多种形态

SpecChecker提供了命令行、Web、桌面端、IDE插件等多种形态,可用于各类使用场景。工具的桌面版本、命令行版本,可部署在物理机、虚拟机、云、docker等多种环境。同时,工具可满足单机使用、持续集成每日检查、代码提交门禁检查、IDE集成开发时检查等多种使用场景。

图29 工具命令行版本

图30 工具IDE插件

图31 工具Web版本

5.4 SpecChecker与同类产品的对比

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

 

图32 规则检查结果

5.4 SpecChecker通过ISO 26262功能安全认证

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

图33 功能安全认证

5.5 SpecChecker应用成果

SpecChecker广泛应用于航天、航空、兵器、电子、核电、汽车等领域的40余家单位,在航天等安全关键领域实现对国外同类产品的替代,年均提供客户支持百余次。

航天应用:每年检测上千万行代码,累计分析数亿行装备软件,用于神舟系列飞船、空间站、月球探测器、火星探测器、北斗导航等几乎所有航天器的嵌入式软件测试,其健壮性、易用性受到大规模项目的检验,较国外同类工具提高效率3倍。

图34 航天应用

汽车行业应用:在国内某大型智能汽车零部件供应商进行了应用,用于检查MISRA C 2012、MISRA C++ 2008和AUTOSAR CPP14编码标准符合性,作为其代码准入分析工具,每周检测千余次,误报率、漏报率远低于某商业工具。帮助企业顺利通过自主研发车载操作系统、智能驾驶辅助系统、智能座舱系统等的国际功能安全认证。

 

第 6 章 总结 

北京轩宇信息技术有限公司立足 20 余年国家重大型号嵌入式软件测试的深厚经验积累,突破了多项关键核心技术,成功研发功能完善、易用性强、成熟度高的源代码静态分析解决方案,解决了编码标准检查合规性差、缺陷检测种类少及误报高、国外工具卡脖子的问题,可以满足军工、汽车、轨交等各个行业的合规性测试,有效保障软件质量。

 

联系我们

联系电话:167 1086 9068

联系邮箱:tech-support@sunwiseinfo.com

北京总部地址:北京市海淀区中关村南一条4号

  

企业公众号
微信客服

 

 

 

 

 

欢迎访问产品网站:北京轩宇信息技术有限公司--高可信工具软件

...全文
989 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

25

社区成员

发帖
与我相关
我的任务
社区描述
静态缺陷检测、单元/集成测试、虚拟仿真测试、软件安全、.......好用的工具让测试也可以如此简单~~
集成测试 企业社区
社区管理员
  • 轩宇老哥
  • 高可信测试工具
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧