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

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

3天内不再提示

静态分析中的自动执行是否提供所需

星星科技指导员 来源:嵌入式计算设计 作者:Fulvio Baccaglini 2022-09-10 15:26 次阅读

软件开发活动应包括源代码审查,以提高软件质量并防止或消除软件缺陷,静态分析工具可以自动化该活动的重要部分,同时降低其成本。代码审查通常基于定义应识别和纠正哪些违规或缺陷的编码标准和/或检查表进行。

尤其是 C 语言,编码标准的流行示例是 MISRA C 和 CERT C,它们分别提供了增强安全性和安全性的指南(尽管这两个范围之间存在一些重叠)。MISRA C 指南的制定特别关注其静态分析的可执行性,这反映在可以自动实现的大量执行中。

但是,有两个不可避免的限制阻碍了全自动执行:

1. 在某些情况下,将静态分析器完全执行准则所需的所有信息形式化是不切实际的或不可能的。

2. 对于某些准则,即使所有信息都可用于算法,即使算法可以扩展以清除任何特定的假阳性或假阴性。

最新版本的 MISRA C (2012) 中,这些限制反映在指南的分类中。当可以提供足够的信息时,将指南归类为规则;否则,它被归类为指令。当可以构造通用算法时,将规则分类为可判定的;否则,它被归类为不可判定。

指南有不同的优先级和不同的范围,但为了初步了解自动执行的潜在程度,159 条指南分为 16 条指令、27 条不可判定规则和 116 条可判定规则。

指令的一个示例是所有代码都应可追溯至文件化要求。在这种情况下,仅向静态分析器提供整个源代码和用于构建应用程序的编译器配置是不够的。首先,将任何重要的要求形式化是不切实际的或不可能的。

可判定规则的一个示例是不应使用#undef。在这种情况下,可以构造一个算法来扫描任何源代码并报告所有出现和仅出现#undef 预处理指令的情况。

不可判定规则的一个例子是项目不应包含无法访问的代码。你能想象一个算法可以精确识别任何项目中所有无法访问的代码实例吗?

不可判定性可能是一个相当不直观的概念。软件开发人员通常会面临一系列需要解决的问题,从微不足道到不可能,其中可以实现的限制通常由熟悉的因素决定,例如缺乏信息、问题过于复杂、资源消耗急剧增加域范围等

除了所有这些因素之外,编码标准的自动执行(或任何其他自动检测软件缺陷的非正式方式)涉及构建原则上可以自我分析的算法,这会引入一个循环性,如果一个额外的基本限制会导致一个悖论 - undecidability - 不妨碍构建一个健全和完整的分析仪。

审核编辑:郭婷

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

    关注

    180

    文章

    7551

    浏览量

    131877
  • 代码
    +关注

    关注

    30

    文章

    4596

    浏览量

    67332
收藏 人收藏

    评论

    相关推荐

    IAR通过多架构认证的静态分析工具加速代码质量自动

    公司推出经TÜV SÜD认证的C-STAT静态分析工具,适用于最新发布的IAR Embedded Workbench for RISC-V V3.30.2功能安全版。
    的头像 发表于 06-19 15:49 131次阅读

    ZR执行器,引领自动化新潮流

    ZR执行器,引领自动化新潮流 随着科技的不断进步和工业自动化需求的日益增长,传统的执行器已经难以满足现代工业生产对高效、精确、稳定的要求。在这个背景下,ZR
    的头像 发表于 05-08 18:18 481次阅读

    如何设置静态IP代理

    静态IP
    jf_60146132
    发布于 :2024年04月29日 07:46:31

    Visual Develop开发STM8S207MBT6时需要提供一个静态库,如何实现?

    我在使用ST Visual Develop开发STM8S207MBT6时需要提供一个静态库(例如MDK创建的.lib库文件)给客户调取接口使用,但是我并不想客户查看函数调取接口的具体源码,请问该如何操作呢?
    发表于 03-12 07:54

    如何将预编译静态库集成到PSoC™ Creator

    BSEC API 提供了要包含的头文件以及要链接的预编译静态库(适用于Arm® Cortex® M4 以及 M0+)。 如何在PSoC™ Creator 执行此操作? 谢谢
    发表于 03-06 08:07

    Klocwork—符合功能安全要求的自动静态测试工具

    Klocwork是Perforce公司产品,主要用于C、C++、C#、Java、 python和Kotlin代码的自动静态分析工作,可以提供编码规则检查、代码质量度量、测试结果管理等
    的头像 发表于 01-16 16:26 350次阅读
    Klocwork—符合功能安全要求的<b class='flag-5'>自动</b>化<b class='flag-5'>静态</b>测试工具

    如何在非Autosar应用执行I2C?

    驱动程序。 是否正确? 为什么CDD 仅用于 MCAL 标签? LLD 也在 CDD 执行 ? 为什么 I2C LLD 驱动器在标签“ 驱动器” 上图中没有使用“ IP ” ? 如下图所示,LLI(LLD)使用的是
    发表于 11-13 07:04

    静态代码块、构造代码块、构造函数及普通代码块的执行顺序

    在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序。 1、静态代码块 ①、格式 在java类中(方法
    的头像 发表于 10-09 15:40 575次阅读
    <b class='flag-5'>静态</b>代码块、构造代码块、构造函数及普通代码块的<b class='flag-5'>执行</b>顺序

    什么是静态?收音机放大电路的静态分析指标是什么?

    未加信号时三极管的直流工作状态被称为静态,也可以说成放大电路没有输入信号时的工作状态,放大电路的质量与静态值的关系很大。
    的头像 发表于 09-27 16:46 2148次阅读
    什么是<b class='flag-5'>静态</b>?收音机放大电路的<b class='flag-5'>静态</b><b class='flag-5'>分析</b>指标是什么?

    医疗器械软件风险分析介绍 医疗设备软件静态和动态分析技巧

    静态和动态分析是满足软件测试合规性的关键,但这些过程并不容易实施。这篇文章提供了有关如何自动化该过程的专家指南。
    的头像 发表于 08-11 11:07 1515次阅读
    医疗器械软件风险<b class='flag-5'>分析</b>介绍 医疗设备软件<b class='flag-5'>静态</b>和动态<b class='flag-5'>分析</b>技巧

    嵌入软件静态解析工具

    ANSI),以及汇编语言的源代码,制作包括流程图等的程序说明书的工具。不论是对以往的程序进行逻辑分析,还是为新开发的程序制作说明书,都提供了强有力的支援。作为程序静态分析功能,包括外部
    发表于 08-02 11:51

    自动化和机器人技术中的执行器应用

    如果你快速进行百度搜索,你会发现很多不同的答案。分析响应得出一个共同的主题——执行器是一种使物体移动或操作的设备。
    发表于 07-25 16:08 435次阅读
    <b class='flag-5'>自动</b>化和机器人技术中的<b class='flag-5'>执行</b>器应用

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

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

    STA分析-从一个案例开始

    静态时序分析(STA)是用来分析数字电路是否满足时序目标的技术手段之一。比如,检查CPU电路是否达到1GHz的目标频率。
    的头像 发表于 07-05 15:01 1080次阅读
    STA<b class='flag-5'>分析</b>-从一个案例开始

    静态时序分析的相关概念

      本文主要介绍了静态时序分析 STA。
    的头像 发表于 07-04 14:40 750次阅读
    <b class='flag-5'>静态</b>时序<b class='flag-5'>分析</b>的相关概念