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

审核编辑:郭婷

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

    关注

    49

    文章

    8881

    浏览量

    165746
  • C++
    C++
    +关注

    关注

    22

    文章

    2131

    浏览量

    77384
  • MISRA
    +关注

    关注

    0

    文章

    22

    浏览量

    7459
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何选择合适的功率分析仪

    在电力电子、能源管理、电机控制及众多工业领域中,功率分析仪作为测量、记录和分析电功率及其相关参数的关键工具,其重要性不言而喻。选择合适的功率分析仪不仅能够提高测试精度,还能优化系统设计,降低成本
    的头像 发表于 04-27 15:27 90次阅读
    如何选择合适的功率<b class='flag-5'>分析仪</b>

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

    在现代电子测量领域,频谱分析仪与信号分析仪是两种广泛应用且功能强大的仪器,它们在无线通信、雷达系统、电子对抗及科研开发中发挥着不可替代的作用。尽管两者均用于信号的采集与分析,功能上亦有交集,但其设计定位、
    的头像 发表于 03-17 15:29 237次阅读
    频谱<b class='flag-5'>分析仪</b>与信号<b class='flag-5'>分析仪</b>的区别

    网络分析仪的设置与基本原理

    一、网络分析仪简介 网络分析仪(Network Analyzer)是射频与微波领域中用于表征电子元器件和电路网络特性的关键测试仪器。其名称中的“网络”并非指计算机网络,而是源于电路理论中对任意
    的头像 发表于 03-03 17:44 1251次阅读
    网络<b class='flag-5'>分析仪</b>的设置与基本原理

    频谱分析仪的工作原理与应用

    频谱分析仪是一种关键的电子测量设备,广泛应用于射频(RF)与微波信号的分析与检测。它通过将信号从时域转换到频域,帮助工程师和技术人员深入了解信号的特性,确保信号质量并优化系统性能。   一、频谱分析仪
    的头像 发表于 03-02 17:05 833次阅读
    频谱<b class='flag-5'>分析仪</b>的工作原理与应用

    C语言安全编码指南:MISRA C、CERT C、CWE 与 C Secure 标准对比与Perforce QAC应用详解

    如何编写真正安全的C语言代码?指南涵盖MISRA C、CERT、CWE等国际安全编码标准对比,以及如何借助Perforce QAC自动检测漏洞。推荐给嵌入式/汽车/工业软件的开发者!
    的头像 发表于 01-26 17:38 1098次阅读
    C语言安全<b class='flag-5'>编码</b>指南:<b class='flag-5'>MISRA</b> C、CERT C、CWE 与 C Secure <b class='flag-5'>标准</b>对比与Perforce QAC应用详解

    矢量网络分析仪与标量网络分析仪的区别

    在网络分析领域,矢量网络分析仪(VNA)与标量网络分析仪(SNA)是两种核心测量工具,尽管名称相近,其测量能力与应用场景却存在显著差异,核心区别可归结为“测大小”与“测全貌”的本质不同。   一
    的头像 发表于 01-22 15:58 980次阅读
    矢量网络<b class='flag-5'>分析仪</b>与标量网络<b class='flag-5'>分析仪</b>的区别

    网络分析仪为什么需要校准?

    正确的校准是使用网络分析仪 VNA 的一个难点。网络分析仪VNA测量出来的S参数是否有错误并不能通过VNA直接能检查出来,只有导入仿真软件仿真出结果发现有问题时可能会怀疑是S参数测量有问题,再返回
    的头像 发表于 01-16 16:34 440次阅读
    网络<b class='flag-5'>分析仪</b>为什么需要校准?

    矢量网络分析仪与标量网络分析仪技术差异与应用场景解析

    在射频与微波测试领域,网络分析仪是评估电路与器件性能的核心工具。矢量网络分析仪(Vector Network Analyzer, VNA)与标量网络分析仪(Scalar Network
    的头像 发表于 12-11 17:16 1697次阅读
    矢量网络<b class='flag-5'>分析仪</b>与标量网络<b class='flag-5'>分析仪</b>技术差异与应用场景解析

    如何合理选择频谱分析仪,便携式频谱分析仪,手持式频谱分析仪

    频谱分析仪作为参考看看以下关键指标和特性: 功能一、标准频谱分析(SWP) 一、核心技术指标(决定测量精度与范围) 1.频率范围 频率范围作为实时频谱分析仪最基础的参数,指能
    的头像 发表于 09-17 17:53 991次阅读

    同步热分析仪的联用技术的应用

    同步热分析仪是一款可同时测量样品的tg和dsc信号的热分析仪器,被广泛应用在材料科学、高分子工程师、医药生物、能源等领域。随着同步热分析仪性能技术的不断提升,同步热分析仪可与其他仪器联
    的头像 发表于 08-28 16:04 1077次阅读
    同步热<b class='flag-5'>分析仪</b>的联用技术的应用

    热重分析仪品牌有哪些?具备哪些优势

    热重分析仪是一种通过程序控温下测量样品质量变化的检测仪器,其用于测量材料热稳定性、反应动力学、组分分析等特性。热重分析仪的应用领域较多,其中包括:食品工业、材料科学、化工、医药生物、电子电器、能源等
    的头像 发表于 07-23 13:39 839次阅读
    热重<b class='flag-5'>分析仪</b>品牌有哪些?具备哪些优势

    热重分析仪在塑料领域的应用

    热重分析仪作为材料研究中的关键设备,在塑料领域发挥着至关重要的作用。其工作原理基于热重法,通过精准测量物质在程序控制温度下的质量变化,从而揭示材料的热稳定性和组分特性。在塑料行业中,热重分析仪
    的头像 发表于 07-17 10:40 664次阅读
    热重<b class='flag-5'>分析仪</b>在塑料领域的应用

    AI数据分析仪设计原理图:RapidIO信号接入 平板AI数据分析仪

    AI数据分析仪, 平板数据分析仪, 数据分析仪, AI边缘计算, 高带宽数据输入
    的头像 发表于 07-17 09:20 875次阅读
    AI数据<b class='flag-5'>分析仪</b>设计原理图:RapidIO信号接入 平板AI数据<b class='flag-5'>分析仪</b>

    MISRA C:2025新标准解析:新增规则、优化点与静态代码分析工具支持(Perforce QAC、Klocwork)

    MISRA C:2025®发布!新增5条规则,并对部分现有规则进行了扩展、重组,以进一步简化安全关键型系统的开发流程。如何实现最新MISRA合规性?
    的头像 发表于 05-08 17:58 3518次阅读
    <b class='flag-5'>MISRA</b> C:2025新<b class='flag-5'>标准</b>解析:新增规则、优化点与<b class='flag-5'>静态</b><b class='flag-5'>代码</b><b class='flag-5'>分析</b>工具支持(Perforce QAC、Klocwork)

    是德N9917A FieldFox手持分析仪 N9917B便携式分析仪

    电压表。 N9917A FieldFox 手持式微波分析仪 主要特性和功能 18 GHz 最大频率 *随身携带功能齐全的手持式分析仪标准型号包括电缆和天线分析仪 *添加 VNA、频谱
    的头像 发表于 05-07 16:58 1555次阅读