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

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

3天内不再提示

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

星星科技指导员 来源:嵌入式计算设计 作者: Ekaterina Nikiforova 2022-06-30 14:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

近年来,软件质量、安全和保障已成为重中之重。在我们之前的文章中,我们已经提到了历史上的一些事件,这些事件既造成了巨大的经济损失,也造成了人员死亡。Ariane 5的爆炸,Therac-25放射治疗机使患者暴露于 20,000 拉德的过量剂量,89 人因丰田的过错而死亡。所有这些故事都有一个共同点:导致巨大损失的软件错误。

那么什么是 MISRA?

最初,MISRA(汽车行业软件可靠性协会)成立的目的是为道路车辆中使用的微控制器设计一套软件开发指南。从那时起,它就被应用于汽车工业、医疗设备、航空航天和国防等所有对可靠性和安全性至关重要的领域。MISRA 标准是由一组规则和建议组成的文档,C 和 C++ 开发人员在开发其应用程序时应遵守这些规则和建议。MISRA-C:1998 版本有127条规则。

所有这些规则都可以分为以下几类:

强制的

必需 – 允许偏离规则(但建议记录在案)

咨询——非强制性

(来源: 什么是 MISRA 以及如何烹饪)

首先要提到的是,MISRA 标准的应用应该在开发过程真正开始之前就开始,并且只有在真正需要的时候才开始。在其他情况下,特别是当代码库足够大并且不打算在嵌入式系统上使用时,开发人员将不得不进行漫长而乏味的重构。为什么这样?

WinMerge 的源代码长约 25 万行 C 和 C++ 代码。这是一个小项目,但是将if语句的主体括在花括号中的规则在其中被破坏了大约 2000 次。有 127-228 条这样的规则(取决于标准的版本)。

Nana 是一个用于创建图形用户界面的跨平台库,其源代码长度不到 10 万行。在这个项目中,同样的规则被打破了大约三千次。

除了关于花括号的规则之外,还有一些规则:

不得使用 continue 语句;

每个 switch 语句都应该有一个默认标签

不得使用 goto 语句;

所有 if 。.. else if 结构都应以 else 子句终止;

那么,它是用来做什么的呢?

但是,这些规则并不意味着让开发人员的生活更加艰难。这些是用鲜血写成的规则,它们用于使安全关键代码不易出现错误。这个想法是简单而清晰的代码不太可能包含错误。以下是一些作为证据的诊断示例:

赋值运算符不得用于返回布尔值的表达式;

所有非 void 的函数都应该返回一个值;

循环计数器不应具有本质上的浮动类型;

一个函数最后应该有一个退出点;

遵循 MISRA 指南将有助于提高软件的可靠性。但是,不熟悉 MISRA 的人可能想知道它是如何使用的。你真的必须记住所有这 127 条规则吗?这就是静态分析器可以提供帮助的地方。

静态分析的目的是什么?

手动检查代码是否符合 MISRA 标准是一项漫长而乏味的工作。但实际上你不必记住所有这些规则。静态代码分析器可以为您完成所有工作。

静态代码分析是检测计算机程序源代码中的错误和小缺陷的过程。它可以被视为自动代码审查。一些静态分析器可以检查代码是否符合 MISRA 规则,正是这些工具将帮助您找到并修复程序中所有不符合规则的点。为此,您只需使用分析仪检查您的项目并研究检查结束时生成的分析报告。下面我将简要演示如何使用 PVS-Studio 分析器和项目 Shairport 作为示例来执行此操作。PVS-Studio 可在此处下载。

克隆存储库。

pYYBAGK9Rq6AIaujAAE-aWH--yw308.png

运行构建配置脚本。

poYBAGK9RriASXBeAAF900aVcks432.png

在跟踪模式下运行 PVS-Studio 并构建项目。

poYBAGK9RsGAXSjhAASMtsi8K7Q047.png

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

poYBAGK9RsmAN4kbAANhT7WmPYM112.png

将日志转换为 html。

poYBAGK9RtOANvczAAFj9JPDt4k863.png

完毕。我们现在可以查看日志。

pYYBAGK9RtuAHx02AAR-jZpO5eI066.png

所以,我们今天了解了 MISRA:我们查看了一些规则,讨论了为什么需要这些指南,如何将它们应用到您的项目中,等等。我希望这篇文章足够有趣,不会让你昏昏欲睡,而且仍然能提供丰富的信息,让作者的工作值得。希望现在您对 MISRA 是什么以及需要什么静态代码分析器有了更好的理解。

审核编辑:郭婷

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

    关注

    49

    文章

    8862

    浏览量

    165656
  • C++
    C++
    +关注

    关注

    22

    文章

    2129

    浏览量

    77363
  • 源代码
    +关注

    关注

    96

    文章

    2953

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    [VirtualLab] 椭圆偏振分析器

    材料特性。它对入射辐射与所研究材料相互作用的光学响应变化非常敏感。此用例演示了椭圆偏振仪的基本原理,并说明了 VirtualLab Fusion中内置椭圆偏振分析器的使用。 椭圆偏振仪的基本原理 当
    发表于 04-09 08:07

    深入解析Microchip HCS370 KEELOQ® 代码跳变编码器

    深入解析Microchip HCS370 KEELOQ® 代码跳变编码器 在电子工程师的日常工作中,安全可靠的远程无钥匙进入(RKE)系统设计是一个重要的课题。Microchip的HCS370
    的头像 发表于 04-07 11:20 200次阅读

    深入解析Microchip HCS361 KEELOQ® 代码跳变编码器

    深入解析Microchip HCS361 KEELOQ® 代码跳变编码器 在当今的电子安全领域,代码跳变技术为我们提供了强大的安全保障。Microchip的HCS361 KEELOQ® 代码
    的头像 发表于 04-07 11:20 191次阅读

    探秘HCS301:安全可靠的代码跳变编码器

    探秘HCS301:安全可靠的代码跳变编码器 在电子工程领域,安全可靠的远程无钥匙进入(RKE)系统一直是研究和开发的重点。Microchip Technology Inc.推出的HCS301代码跳变
    的头像 发表于 04-07 11:05 146次阅读

    深入解析HCS300:高性能代码跳变编码器的技术探秘

    深入解析HCS300:高性能代码跳变编码器的技术探秘 在电子工程领域,安全可靠的远程无钥匙进入(RKE)系统一直是研究的重点。Microchip Technology Inc.推出的HCS300代码
    的头像 发表于 04-07 10:50 107次阅读

    深入解析Microchip HCS201 KEELOQ® 代码跳变编码器

    深入解析Microchip HCS201 KEELOQ® 代码跳变编码器 在电子安全领域,远程无钥匙进入(RKE)系统的安全性至关重要。Microchip的HCS201 KEELOQ® 代码跳变
    的头像 发表于 04-07 10:50 89次阅读

    深入解析Microchip HCS200 KEELOQ® 代码跳变编码器

    深入解析Microchip HCS200 KEELOQ® 代码跳变编码器 在电子工程领域,安全可靠的编码技术对于各种应用至关重要。今天,我们将深入探讨Microchip的HCS200 KEELOQ
    的头像 发表于 04-07 10:40 112次阅读

    深入解析Microchip HCS361 KEELOQ® 代码跳变编码器

    深入解析Microchip HCS361 KEELOQ® 代码跳变编码器 在当今的电子安全领域,可靠且安全的远程无钥匙进入(RKE)系统至关重要。Microchip的HCS361 KEELOQ
    的头像 发表于 03-26 16:15 172次阅读

    编码器接口定义及标准接线方法

    编码器以非接触式磁场检测技术为核心,具备抗油污、抗振动、宽温工作、可靠性高等突出优势,已广泛应用于伺服驱动、云台控制、机器人关节、AGV、数控机床、精密传动等工业与消费电子领域。接口定义标准
    的头像 发表于 03-12 15:42 258次阅读

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

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

    如何在Zephyr中进行静态代码分析

    在嵌入式软件开发中,“能编译通过”并不等于“可以放心交付”。安全性、可靠性和合规性是产品能否顺利量产的关键。进入量产的Bug会浪费宝贵的工程时间,也会削弱用户信任;安全漏洞可能暴露设备,带来严重后果;在受监管市场中,若未满足MISRA或CERT检查要求,甚至会直接导致产品发布延迟。
    的头像 发表于 10-17 10:28 1043次阅读

    汽车软件团队必看:基于静态代码分析工具Perforce QAC的ISO 26262合规实践

    ISO 26262合规指南,从ASIL分级到工具落地,手把手教你用静态代码分析(Perforce QAC)实现高效合规。
    的头像 发表于 08-07 17:33 1315次阅读
    汽车软件团队必看:基于<b class='flag-5'>静态</b><b class='flag-5'>代码</b><b class='flag-5'>分析</b>工具Perforce QAC的ISO 26262合规实践

    如何在AURIX Dev Studio中使用分析器

    由于 ADS 版本 V1.10.10 中的 DAS 8.2.0 不兼容,分析器已从 ADS 中删除 我们在这里有什么选择?
    发表于 07-28 06:22

    Helix QAC 2025.1 重磅发布!MISRA C:2025® 100%覆盖

    和服务存储占用。  编码规范支持(MISRA C:2025®、CERT C)    MISRA C:2025® 全规范覆盖 Helix QAC 2025.1 提供全新的 MC25CM
    的头像 发表于 05-13 16:48 1596次阅读
    Helix QAC 2025.1 重磅发布!<b class='flag-5'>MISRA</b> C:2025® 100%覆盖

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

    MISRA C:2025®发布!新增5条规则,并对部分现有规则进行了扩展、重组,以进一步简化安全关键型系统的开发流程。如何实现最新MISRA合规性?
    的头像 发表于 05-08 17:58 3460次阅读
    <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)