风险来源 | 风险描述 | 处置措施 |
Adopted code 采用的代码 | 指南6提及的6种Adopted code: 1.标准库 2.驱动文件 3.中间件 4.第三方库 5.自动生成的代码 6.现有代码(其它项目或者现有项目代码的过往版本) “如果项目建立在已经具有可靠记录的代码上,那么通过重构现有代码来获得合规性的好处可能会被引入缺陷的风险所抵消。 在这种情况下,需要根据可能获得的净收益做出判断” | • 6 种类型对应参见合规指南第 6 章节的处理措施; • 所应在新产品平台或项目中导入应用 MISRA 规则, 不建议在旧平台项目上实施以符合规范 |
10.1.1 静态测试要求Misra官网出版的2020版符合性指南给出了较为完整的体系流程要求:
10.9.2.1 修复代码静态扫描问题
供应商应对所负责的所有代码进行静态扫描,并修复所有发现的缺陷。无法修复的缺陷需要经过公司同意。
C/C++ 代码需要遵守MISRA C/C++规范,公司使用QAC 和Coverity 进行扫描。
其他语言和工具,需满足至少以下异常被包含:
栈溢出
访问越界
资源泄露
空指针
未初始化
数值溢出
10.9.2.2 Code Metric 要 求
Code Metric 由特定工具(QAC、Coverity、Logiscope 等)生成,公司不指定特定工具。
以下Code Metric 需要被测试并且跟踪:
圈复杂度(Cyclomatic Complexity “v(G)”), 不高于 15.
注释密度(Comment Density, COMF), 0.2 到 1
路径数量(Numbers of PATHs, PATH),1 到 80.
10.1.2 可靠性测试要求
供应商需针对软件可靠性要求和测试方案进行可靠性测试,并提供测试数据和结果。
In order for a claim of MISRA compliance to have meaning, it is necessary to establish:
●Use of a disciplined software development process;
使用规范的软件开发流程;
●Exactly which guidelines are being applied;
明确使用哪份指南
●The effectiveness of the enforcement methods;
执行方法的有效性
●The extent of any deviations from the guidelines;
偏离指导原则的程度;
●The status of any software components developed outside of the project.
项目外开发的任何软件组件的状态
如第5.1节所述,在项目开始时制定了一个指导性的重新分类计划,作为详细说明如何将指南应用于项目的本机代码的意向声明。此外,还可制定额外的GRP,以适应由采用的规范组成的项目组成部分。
在项目结束时,应编制一份指南合规摘要(GCS),以记录项目总体要求的最终合规水平。GCS包括指南中每个指南的条目,并记录其MISRA类别允许的遵守程度。
指南的合规性等级如下:
1. 合规-项目中没有违反指南的情况;
2. 偏差-项目中存在违反指南的情况,这些都有偏差支持;
3. 违规-项目中存在未得到偏差支持的违反指南的行为;
4. 不合格-没有检查是否符合指南。
更多回帖