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

    文章

    7604

    浏览量

    136842
  • 代码
    +关注

    关注

    30

    文章

    4788

    浏览量

    68617
收藏 人收藏

    评论

    相关推荐

    自动零件分析仪的原理和应用

    自动控制技术和数据处理技术。其主要由进样系统、分析系统和数据处理系统三部分组成。 进样系统:负责将待测零件或样品送入分析系统。这一系统通常通过泵、阀等组件将样品从样品容器抽取并送入
    发表于 12-23 15:22

    FPGA基础知识及设计和执行FPGA应用所需的工具

    本文将首先介绍FPGA的基础知识,包括FPGA的工作原理以及为什么要使用FPGA等,然后讨论设计和执行FPGA应用所需的工具。
    的头像 发表于 11-11 11:29 857次阅读
    FPGA基础知识及设计和<b class='flag-5'>执行</b>FPGA应用<b class='flag-5'>所需</b>的工具

    汽车异构硬件平台开发如何进行静态代码分析

    先进的静态代码分析工具,其新版本引入的多CCT功能为开发人员提供了强大的支持,该功能不仅简化了多编译器环境下的代码分析过程,还可以极大增强
    的头像 发表于 10-09 16:15 530次阅读
    汽车异构硬件平台开发如何进行<b class='flag-5'>静态</b>代码<b class='flag-5'>分析</b>

    静态链接和动态链接

    一、静态链接静态链接通过静态库进行链接,生成的目标程序包含运行需要的所有库,可以直接运行,不过就是文件比较大。静态库是汇编产生的.o文件的
    发表于 08-27 10:20

    恒讯科技分析:如何测试海外静态IP服务的稳定性和速度?

    Speedtest.net)或其他专业的代理测试工具。 2、连接到静态IP:按照服务提供商的指示配置你的网络设置,连接到分配给你的海外静态IP。 3、进行ping测试:使用ping命令测试IP地址的响应时间和丢包率。低响应时间和
    的头像 发表于 08-14 14:58 357次阅读

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

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

    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

    verilogfor循环是串行执行还是并行执行

    在Verilog,for循环是并行执行的。Verilog是一种硬件描述语言,用于描述和设计数字电路和系统。在硬件系统,各个电路模块是同时运行的,并且可以并行执行多个操作。因此,在V
    的头像 发表于 02-22 16:06 2931次阅读

    DC电源模块在工业自动的应用案例分析

    着重要的作用,而机器人的控制系统需要稳定可靠的电源供应。DC电源模块可以提供稳定的直流电源,满足机器人控制系统的需求。 DC电源模块在工业自动的应用案例分析 2.
    的头像 发表于 02-22 11:08 463次阅读
    DC电源模块在工业<b class='flag-5'>自动</b>化<b class='flag-5'>中</b>的应用案例<b class='flag-5'>分析</b>

    静态测试方案

    随着自动驾驶、车联网等技术突飞猛进的发展,汽车包含的软件越来越多。如何保证这些软件的质量就成了重中之重。经纬恒润拥有十几年的嵌入式软件研发及测试经验,经验丰富的软件测试团队,能够借助测试工具及设备给客户提供优质的
    的头像 发表于 01-29 11:36 2076次阅读
    <b class='flag-5'>静态</b>测试方案

    电路的电感是否可以用大电感替换小电感

    电子发烧友网站提供《电路的电感是否可以用大电感替换小电感.docx》资料免费下载
    发表于 01-22 09:28 0次下载

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

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

    Helix QAC—软件静态测试工具

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

    DC电源模块在工业自动的关键应用案例分析

    BOSHIDA DC电源模块在工业自动的关键应用案例分析 DC电源模块在工业自动化中有多种关键应用,以下是几个案例分析: DC电源模块在
    的头像 发表于 01-03 14:18 477次阅读
    DC电源模块在工业<b class='flag-5'>自动</b>化<b class='flag-5'>中</b>的关键应用案例<b class='flag-5'>分析</b>