近年来,软件质量、安全性和安全性已成为重中之重。在我们之前的文章中,我们已经提到了历史上的一些事件,这些事件既带来了巨大的经济损失,也带来了人员死亡。阿丽亚娜5号的爆炸,患者暴露于20,000拉德过量的Therac-25放射治疗机,89人死于丰田的故障。所有这些故事都有一个共同点:导致巨大损失的软件错误。
那么什么是米斯拉?
最初,MISRA(汽车工业软件可靠性协会)的成立是为了设计一套用于道路车辆的微控制器软件开发指南。从那时起,它已被应用于每个可靠性和安全性关键领域,包括汽车行业,医疗设备,航空航天和国防等。MISRA 标准是一个由一组规则和建议组成的文档,C 和 C++ 开发人员在开发应用程序时应遵守这些规则和建议。MISRA-C:1998版本有127条规则。
所有这些规则都可以分为以下几类:
命令的
必需 – 允许偏离规则(但建议记录在案)
咨询 – 非强制性
首先要提到的是,MISRA标准的应用应该在开发过程实际开始之前开始,并且只有在真正需要的时候才开始。在其他情况下,特别是当代码库足够大并且不打算在嵌入式系统上使用时,开发人员将不得不进行漫长而乏味的重构。为什么会这样?
WinMerge的源代码大约是25万行C和C++代码。这是一个小项目,但是规定用大括号括起来 if 语句的正文的规则在其中被破坏了大约两千次。有127-228条这样的规则(取决于标准的版本)。
Nana是一个用于创建图形用户界面的跨平台库,其源代码长度不到10万个LOC。在这个项目中,同样的规则被打破了大约三千次。
除了关于大括号的规则之外,还有一些:
不得使用继续声明;
每个 switch 语句都应有一个默认标签;
不得使用“转到”声明;
所有如果。..否则,如果构造应以other子句终止;
那么,它的用途是什么呢?
但是,这些规则并不意味着使开发人员的生活更加艰难。这些是用血液编写的规则,它们需要使安全关键代码不易出错。这个想法是简单明了的代码不太可能包含错误。以下是一些诊断示例作为证据:
赋值运算符不得用于返回布尔值的表达式中;
所有不无效的函数都应返回一个值;
环路计数器不得具有本质上的浮动类型;
函数末尾应具有单个退出点;
遵循 MISRA 指南将有助于提高软件的可靠性。但是,那些不熟悉MISRA的人可能想知道它是如何使用的。你真的必须把所有这127条规则都记在脑子里吗?这就是静态分析器提供帮助的地方。
静态分析的目的是什么?
手动检查代码是否符合MISRA标准是一项漫长而乏味的工作。但实际上,您不必记住所有这些规则。静态代码分析器可以为您完成所有操作。
静态代码分析是检测计算机程序源代码中的错误和微小缺陷的过程。它可以被视为自动代码审查。一些静态分析器可以检查代码是否符合MISRA规则,正是这些工具将帮助您查找和修复程序中不符合规则的所有位置。为此,您只需使用分析器检查项目,并研究检查结束时生成的分析报告。下面我将简要演示如何使用 PVS-Studio 分析器和项目 Shairport 作为示例来执行此操作。PVS 工作室可在此处下载。
克隆存储库。
运行生成配置脚本。
在跟踪模式下运行 PVS 工作室并生成项目。
根据上一步的结果分析项目文件。
将日志转换为
我们可以查看日志。
审核编辑:郭婷
-
微控制器
+关注
关注
48文章
7463浏览量
150876 -
C++
+关注
关注
21文章
2102浏览量
73455 -
MISRA
+关注
关注
0文章
21浏览量
6956
发布评论请先 登录
相关推荐
评论