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

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

3天内不再提示

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

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

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

那么什么是MISRA?

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

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

命令的

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

咨询 – 非强制性

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

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

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

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

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

不得使用继续语句;

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

不得使用 goto 语句;

如果。..否则,如果构造应以 else 子句终止;

那么,它的用途是什么?

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

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

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

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

函数末尾应该有一个单点出口;

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

静态分析的目的是什么?

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

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

克隆存储库。

poYBAGOAfWSAAqd6AABcW_J0tHM455.png

运行生成配置脚本。

poYBAGOAfWeABmCRAABoJzFS0OY498.png

在跟踪模式下运行 PVS-Studio 并生成项目。

poYBAGOAfWmAF1HPAAE_2NYp_cM931.png

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

pYYBAGOAfWuAFL9YAADkhTogRM4622.png

将日志转换为 html。

pYYBAGOAfW-AC5BnAABl5j3udLs781.png

审核编辑:郭婷

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

    关注

    48

    文章

    6192

    浏览量

    146473
  • C++
    C++
    +关注

    关注

    20

    文章

    1983

    浏览量

    72817
  • MISRA
    +关注

    关注

    0

    文章

    15

    浏览量

    6830
收藏 人收藏

    评论

    相关推荐

    编码标准规则?

    编码标准。谢谢!!!! 以上来自于百度翻译 以下为原文 Hello Guys,Recently I came to know about MISRA C
    发表于 12-18 16:00

    网络分析仪基础

    分析仪? 史密斯圆图 散射参数 高频器件特性 什么是网络分析仪 网络分析仪硬件结构 网络分析仪内部框图 激励源 信号分离装置 接收机 显示处理单元 网络分析仪测试校准技
    发表于 01-17 17:08 95次下载
    网络<b>分析仪</b>基础

    音频信号分析仪简介

    分析仪 音频信号分析仪 音频信号分析仪 音频信号分析仪 音频信号
    发表于 11-13 14:58 17次下载

    课题三_基本共射极放大电路的组成和静态分析(2学时)

    和静态分析基本共射极放大电路的组成
    发表于 11-13 17:00 21次下载

    简易逻辑分析仪的设计用源代码

    分析仪的设计用源
    发表于 06-07 15:07 18次下载

    IAR静态代码分析工具

    静态分析工具,主要通过对源代码等级进行分析来发现代码中的潜在问题,除了提高代码质量外,还有助于提高代码的规范如有异议,请指正主要特点C/C++代码分析检查是否符合
    发表于 12-03 10:36 2次下载
    IAR<b>静态</b><b>代码</b><b>分析</b>工具

    开源逻辑分析仪电路与代码汇总

    分析仪电路与代码汇总,可以DIY。
    发表于 09-23 15:44 6次下载

    金相分析仪的工作原理_金相分析仪的功能特点

    分析仪的软件内设200于样标准,并且是可以自行添加,金相分析仪是通过自动调控比对,达到精确度高,避免了认为的误差,重复再现性好。
    发表于 03-10 15:32 3391次阅读

    FreeRTOS编码规则及风格指南

    编码标准 FreeRTOS的核心源代码遵从MISRA编码标准指南。这个标准篇幅稍长,你可以在MISRA官方网站花少量钱买到,这里不再复制任何标准。 FreeRTOS源代码不符合
    的头像 发表于 01-10 11:00 2095次阅读

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

    MISRA 标准的应用应该在开发过程真正开始之前就开始,并且只有在真正需要的时候才开始。在其他情况下,特别是当代码库足够大并且不打算在嵌入式系统上使用时,开发人员将不得不进行漫长而乏味的重构。为什么这样?
    的头像 发表于 06-30 14:45 1195次阅读
    <b>MISRA</b><b>编码</b><b>标准</b><b>和静态</b><b>代码</b><b>分析</b>器

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

    的头像 发表于 10-21 09:31 237次阅读
    <b>MISRA</b><b>编码</b><b>标准</b><b>和静态</b><b>代码</b><b>分析仪</b>

    Harmony系统代码静态测试

    静态分析工具QAC,来分析测试Harmony系统代码对汽车行业内常用编码规范的遵循情况。
    的头像 发表于 08-01 14:22 402次阅读
    Harmony系统<b>代码</b>的<b>静态</b>测试

    什么是静态代码分析静态代码分析概述

    静态分析可帮助面临压力的开发团队。高质量的版本需要按时交付。需要满足编码和合规性标准。错误不是一种选择。 这就是开发团队使用
    的头像 发表于 07-19 12:09 465次阅读
    什么是<b>静态</b><b>代码</b><b>分析</b>?<b>静态</b><b>代码</b><b>分析</b>概述

    逻辑分析仪如何使用 逻辑分析仪使用教程

    分析仪如何使用 逻辑分析仪使用教程  逻辑分析仪是一种用来监测和分析数字信号的工具。它可以用来识别和解决电路故障,帮助做出可靠的设计决策。在本文中,我们将向您介绍如何使用逻辑分析仪进行
    的头像 发表于 09-19 16:03 192次阅读

    协议分析仪逻辑分析仪的区别

    分析仪逻辑分析仪的区别 协议分析仪和逻辑分析仪是常用的测试工具,常常用于电子设备开发、生产过程中的故障排除和性能测试。它们都能够捕获并显示底层信号,但是在应用场景和功能上有所不同。在本文中,我们
    的头像 发表于 09-19 16:33 209次阅读