0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MISRA编码标准和静态代码分析仪

星星科技指导员 来源:嵌入式计算设计 作者:Ekaterina Nikiforova 2022-10-21 09:31 次阅读

近年来,软件质量、安全性和安全性已成为重中之重。在我们之前的文章中,我们已经提到了历史上的一些事件,这些事件既带来了巨大的经济损失,也带来了人员死亡。阿丽亚娜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 工作室可在此处下载

克隆存储库。

pYYBAGNR9mKAb0eBAABcW_J0tHM040.png

运行生成配置脚本。

poYBAGNR9mSAOZQnAABoJzFS0OY416.png

在跟踪模式下运行 PVS 工作室并生成项目。

pYYBAGNR9mWANv1XAAE_2NYp_cM659.png

根据上一步的结果分析项目文件。

poYBAGNR9meAO21ZAADkhTogRM4220.png

将日志转换为

pYYBAGNR9miAWYJgAABl5j3udLs963.png

我们可以查看日志。

poYBAGNR9mmADw7tAAGWum8bTEw050.png

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7463

    浏览量

    150876
  • C++
    C++
    +关注

    关注

    21

    文章

    2102

    浏览量

    73455
  • MISRA
    +关注

    关注

    0

    文章

    21

    浏览量

    6956
收藏 人收藏

    评论

    相关推荐

    Keysight 频谱分析仪(信号分析仪

    Keysight频谱分析仪(信号分析仪)足够的性能和卓越的可靠性,帮助您更轻松、更快速地应对常见的射频-微波测试测量挑战。可靠的频谱分析仪和信号分析仪提供准确可信的测量结果无论您是要在
    的头像 发表于 09-12 08:10 364次阅读
    Keysight 频谱<b class='flag-5'>分析仪</b>(信号<b class='flag-5'>分析仪</b>)

    whitepaper-perforce-what-is-misra

    如果您熟悉嵌入式软件的世界,您可能听说过安全关键系统的MISRA编码准则和合规性。最初为在汽车嵌入式软件行业,MISRA C for C 和 C++ 被广泛使用嵌入式行业,从航空航天和国防到医疗设备。本文提供
    发表于 08-08 15:54 0次下载

    网络分析仪工作原理 网络分析仪和频谱分析仪的区别

    网络分析仪和频谱分析仪是两种广泛应用于电子测量领域的仪器。它们各自具有独特的工作原理和应用场景。本文将详细介绍网络分析仪的工作原理,网络分析仪与频谱
    的头像 发表于 06-03 15:38 1238次阅读

    频谱分析仪检定规程标准

    频谱分析仪的测量精度和可靠性,需要对其进行定期的检定。本文详细介绍了频谱分析仪检定规程的标准。 检定目的 频谱分析仪检定的主要目的是确保仪器的测量精度和可靠性,满足实际应用中对信号
    的头像 发表于 06-03 09:26 534次阅读

    信号分析仪与频谱分析仪的区别

    在电子工程、通信、无线电以及生物医学等多个领域中,信号分析仪和频谱分析仪都是至关重要的测量和分析工具。虽然两者在功能和应用上有一定的重叠,但它们在设计和应用上存在着显著的差异。本文将对信号分析
    的头像 发表于 05-17 14:21 1404次阅读

    扫频频谱分析仪与实时频谱分析仪的区别

    在电子测量领域中,频谱分析仪是一种至关重要的工具,它能够帮助工程师和技术人员精确地测量和分析信号的频谱特性。传统的频谱分析仪,如扫频频谱分析仪,与新兴的实时频谱
    的头像 发表于 05-13 18:04 1467次阅读

    网络分析仪的分类

    网络分析仪主要可以分为两类:标量网络分析仪(Scalar Network Analyzer)和矢量网络分析仪(Vector Network Analyzer)。
    的头像 发表于 05-08 16:34 513次阅读

    如何选择适合您的USB频谱分析仪

    近几年,USB频谱分析仪行业兴起,各式各样的产品扑面而来,那么该如何选择一款USB频谱分析仪既符合你的使用标准的,又可以减少预算成本的产品呢?
    的头像 发表于 04-15 16:07 356次阅读
    如何选择适合您的USB频谱<b class='flag-5'>分析仪</b>?

    功率计与功率分析仪的区别?

    公司主营出售/回收:示波器、频谱分析仪、网络分析仪、信号发生器、万用表/示波器校准、手机综合测试、噪声系数分析仪、数据采集器、NI-GP
    的头像 发表于 04-01 10:15 886次阅读

    光谱分析仪是什么

    公司主营出售/回收:示波器、频谱分析仪、网络分析仪、信号发生器、万用表/示波器校准、手机综合测试、噪声系数分析仪、数据采集器、NI-GP
    的头像 发表于 03-29 11:47 559次阅读

    音频分析仪的原理

    公司主营出售/回收:示波器、频谱分析仪、网络分析仪、信号发生器、万用表/示波器校准、手机综合测试、噪声系数分析仪、数据采集器、NI-GP
    的头像 发表于 03-29 11:12 682次阅读

    浅谈阻抗分析仪

    公司主营出售/回收:示波器、频谱分析仪、网络分析仪、信号发生器、万用表/示波器校准、手机综合测试、噪声系数分析仪、数据采集器、NI-GP
    的头像 发表于 03-29 10:40 543次阅读

    解说网络分析仪

    公司主营出售/回收:示波器、频谱分析仪、网络分析仪、信号发生器、万用表/示波器校准、手机综合测试、噪声系数分析仪、数据采集器、NI-GP
    的头像 发表于 03-18 10:46 409次阅读

    Helix QAC—软件静态测试工具

    Helix QAC是Perforce公司(原PRQA公司)产品,主要用于C/C++代码的自动化静态分析工作,可以提供编码规则以及信息安全相关检查、
    的头像 发表于 01-10 17:35 615次阅读
    Helix QAC—软件<b class='flag-5'>静态</b>测试工具

    频谱分析仪的常见误差来源 频谱分析仪的校准方法

    频谱分析仪的常见误差来源 频谱分析仪的校准方法 频谱分析仪是一种广泛应用于电子测量领域的仪器,用于测量信号在不同频率上的功率分布。然而,频谱分析仪在测量过程中存在一些误差来源。这些误差
    的头像 发表于 12-21 15:03 1354次阅读