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语言
    +关注

    关注

    183

    文章

    7649

    浏览量

    146401
  • 代码
    +关注

    关注

    30

    文章

    4983

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    德希科技双轨道自动雷达波测流系统维护所需工具与材料

    德希科技双轨道自动雷达波测流系统维护所需工具与材料
    的头像 发表于 05-14 10:16 139次阅读
    德希科技双轨道<b class='flag-5'>自动</b>雷达波测流系统维护<b class='flag-5'>所需</b>工具与材料

    FRED 应用:光束足迹分析

    简介当一个分析请求执行时,重要的是记住在FRED分析面只是在光线追迹结束后的后处理(过滤)光线。在光线追迹的过程,它们不收集光线信息,
    发表于 05-07 16:26

    Perforce 静态分析现已正式支持 Rust语言!

    是否正计划通过 Rust 编程来提升内存安全性,却又担心它无法覆盖所有的安全漏洞?Perforce QAC 和 Klocwork 现在已支持分析 Rust 代码,填补了开源代码检查工具在质量和治理工具链方面的空白。
    的头像 发表于 04-08 15:38 533次阅读
    Perforce <b class='flag-5'>静态</b><b class='flag-5'>分析</b>现已正式支持 Rust语言!

    如何使用 R&amp;S®ZNL 矢量网络分析仪设置并执行频谱分析测量

    RS®ZNL 设置并执行频谱分析测量,帮助用户高效、准确地获取所需数据。   一、准备工作 在开始测量前,确保 RS®ZNL 支持多种测量模式。通过主界面选择“频谱分析”模式,系统将自动
    的头像 发表于 02-09 16:30 401次阅读
    如何使用 R&amp;S®ZNL 矢量网络<b class='flag-5'>分析</b>仪设置并<b class='flag-5'>执行频谱分析</b>测量

    锁存器的时间借用概念与静态时序分析

    对于基于锁存器的设计,静态时序分析会应用一个称为时间借用的概念。本篇博文解释了时间借用的概念,若您的设计包含锁存器且时序报告存在时间借用,即可适用此概念。
    的头像 发表于 12-31 15:25 5734次阅读
    锁存器<b class='flag-5'>中</b>的时间借用概念与<b class='flag-5'>静态</b>时序<b class='flag-5'>分析</b>

    Simcenter FLOEFD for Solid Edge:在Solid Edge快速精准地执行流体流动和传热分析

    优势与功能优势快速精准地执行流体流动和传热仿真提前执行仿真,且不中断设计工作流提供强大的参数研究和设计比较功能,可更轻松地执行假设分析功能通
    的头像 发表于 12-10 17:48 990次阅读
    Simcenter FLOEFD for Solid Edge:在Solid Edge<b class='flag-5'>中</b>快速精准地<b class='flag-5'>执行</b>流体流动和传热<b class='flag-5'>分析</b>

    在线测径仪是否配备测控软件分析系统?

    值),存储容量大,时间长达一年以上,支持按批次、时间范围查询历史数据。 3、数据分析与统计 自动计算平均值、标准差,生成直方图、趋势图等; 识别生产过程的波动趋势,帮助优化工艺参数(如调整轧制速度
    发表于 12-03 14:10

    从代码执行看单片机内存的分配

    单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器事先存放的指令阶段)和执行指令(
    发表于 12-02 07:58

    语言模型是否自动驾驶的必选项?

    [首发于智驾最前沿微信公众号]自动驾驶的发展并非一成不变,在传统自动驾驶系统,通常采用分层的体系架构。最底层是感知层,负责将摄像头、雷达、激光雷达等传感器数据转化为车辆能够“看到”的环境信息;其上
    的头像 发表于 11-14 16:23 3834次阅读
    语言模型<b class='flag-5'>是否</b>是<b class='flag-5'>自动</b>驾驶的必选项?

    从设计到落地,音圈执行器如何适配你的自动化需求?​

    从设计到落地,音圈执行器如何适配你的自动化需求?​-速程精密 不少企业搞自动化升级时,都会遇到同一个困惑:“明明选了口碑不错的传动部件,怎么用起来总觉得‘水土不服’?” 其实问题往往出在 “适配性
    的头像 发表于 10-29 15:32 443次阅读

    如何获取蜂鸟内核执行模块浮点指令的运算数据

    是如何获取所需的两个操作数。 我们以浮点加法运算为例。 首先,经过分析我们发现整型指令寄存器的例化是通过循环完成的,所以我们可以用相同的方式例化32个32位浮点寄存器,相关代码如下: 我们进入例化
    发表于 10-24 07:10

    NICE指令的完整执行过程

    NICE指令的完整执行过程如下: 1、主处理器的译码单元提供EXU级译码得到指令的操作码,以判断其是否属于默认的自定义指令组。 如果该指令属于自定义指令,请根据命令编码的XS1位继续
    发表于 10-23 07:25

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

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

    知识分享 | MXAM入门简介:使用MXAM进行静态测试

    在汽车和自动化行业,从事基于模型的开发(MBD)的工程师致力于在保证模型质量的同时保证模型高效。在这一背景下,应用适当的建模工具十分关键。合适的工具不仅可以通过建模标准检查来分析和测试模型质量
    的头像 发表于 07-23 17:09 1757次阅读
    知识分享 | MXAM入门简介:使用MXAM进行<b class='flag-5'>静态</b>测试

    动态BGP与静态BGP的区别?

    的 IP,只要远端发起 BGP 握手,且来自 AS 65002,即自动建立对等关系。四、实战应用场景分析场景一:传统运营商边界路由器 使用静态 BGP BGP 对等关系固定,变化极少 需要手动管理
    发表于 06-24 06:57