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

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

3天内不再提示

静态分析揭示了传统软件中的潜在缺陷

星星科技指导员 来源:嵌入式 作者:PAUL ANDERSON 2022-11-10 16:31 次阅读

静态分析工具可以帮助找到并发性和其他缺陷,以减少遗留的延迟。

从基于软件的旧系统迁移到新技术时,能够重用尽可能多的代码非常重要。即使这些代码已经过彻底的测试,并且在旧系统中的实践中被证明是可靠的,它仍然可能包含潜在的错误。这些错误可能从未在旧系统中触发,因为该系统非常特定的属性,例如用于编译代码的工具链、处理器体系结构或主机操作系统。当移植到这些属性不同的新系统时,潜在缺陷可能表现为有害错误。但好消息是,先进的静态分析工具可以清除这些潜在的缺陷,以帮助应对挑战。

更新系统,揭示编码缺陷

迁移遗留系统最重要的动机之一是利用自原始系统首次部署以来硬件技术的进步。由于采用了更新更快的处理器,最常见的好处可能是性能提高。从代码的角度来看,这也是一个最重要的变化。新处理器可以具有不同的位宽或字节序,并且可用内核的数量可以不同。在从旧平台移植到下一个平台的代码期间,大部分重新编码工作将用于使代码适应这些差异。

编译器、工具链和潜在错误

与实现新处理器相比,还有许多其他不太明显的差异,这些细微差别很容易被忽视。以用于编译代码的工具链为例。从表面上看,这应该不会有太大区别。毕竟,如果代码是编写为符合 ANSI C 标准,并且如果编译器声称支持 ANSI C,那么当由任一编译器编译时,代码肯定会具有相同的语义吗?不幸的是不是。C 和 C++ 标准充斥着“编译器依赖”的子句,这意味着该标准并不确切规定如何编译某些结构,选择取决于编译器编写者。其中许多对于程序员来说是显而易见和众所周知的,例如计算操作数的顺序,但其他的则非常微妙。潜在错误在旧系统上可能是无害的,因为编译器选择以特定方式编译它,但在新系统上是危险的,因为新编译器会做出不同的选择。

当然,编译器也是程序,它们本身并非没有缺陷。最近一项针对 C 编译器的研究发现,他们测试的每个编译器都有代码生成缺陷[1]。易失性关键字的处理在嵌入式安全关键型软件中至关重要,因为它经常用于读取传感器数据,特别容易出现编译器错误,从而导致传感器值的更改被静默忽略。程序的正确运行甚至可能依赖于这些缺陷。

另一个危险区域:标准库

另一个可能导致潜在缺陷变得危险的细微软件迁移差异涉及与操作系统接口的标准库。人们可能希望这样的库在各个平台上保持一致,但这种情况很少见。最显着的区别是在错误处理方面。新平台可能具有与旧平台完全不同的故障模式,可能需要更改代码才能处理这些差异。更糟糕的是,根据最近的一项研究,错误案例的记录似乎非常糟糕[2]。

静态分析胜出,补充传统测试

显然,任何遗留迁移项目都必须包括大量时间来测试软件的新版本。但是,测试结果仅与测试输入一样好。如果测试用例未能执行发生错误的路径,则该缺陷可能无法检测到。生成新的测试用例也很昂贵。因此,清除这些潜在缺陷的明智策略是使用高级静态分析工具作为遗留转换工作的一部分。此类工具能够发现本文所述的缺陷,包括那些依赖于平台微妙之处的缺陷。他们特别擅长发现并发缺陷,例如使用传统测试方法极难发现的数据争用。他们还擅长查找代码实例,这些代码虽然不是绝对错误的,但与错误高度相关,或者在移植到不同环境时特别危险。

审核编辑:郭婷

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

    关注

    68

    文章

    19156

    浏览量

    229068
  • 编译器
    +关注

    关注

    1

    文章

    1618

    浏览量

    49044
收藏 人收藏

    评论

    相关推荐

    eda与传统数据分析的区别

    进行初步的探索和理解,发现数据潜在的模式、关系、异常值等,为后续的分析和建模提供线索和基础。 方法论 :EDA强调数据的真实分布和可视化,使用多种图表和可视化工具来展示数据的特征和趋势。分析
    的头像 发表于 11-13 10:52 198次阅读

    主线科技荣登中国潜在独角兽企业榜单

    独角兽企业榜单是长城咨询依据《高成长企业分类导引》潜在独角兽企业标准评选,旨在揭示中国潜在独角兽企业群体最新发展态势的专业榜单。此榜单基于严谨的评选标准和专业的评审机制,在行业内赢得
    的头像 发表于 11-12 17:17 406次阅读

    万协通亮相2024潜在独角兽企业发展大会

    近日,2024潜在独角兽企业发展大会成功举办,会上重磅发布《GEI中国潜在独角兽企业研究报告2024》揭示中国
    的头像 发表于 11-04 11:20 268次阅读

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

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

    黑盘缺陷分析-Black-Pad-Defect PPT

    黑盘缺陷分析-Black-Pad-Defect PPT
    的头像 发表于 08-22 16:24 390次阅读
    黑盘<b class='flag-5'>缺陷</b><b class='flag-5'>分析</b>-Black-Pad-Defect PPT

    静态 ARP 表项的潜在问题

    在计算机网络,地址解析协议(ARP)将 IP 地址转换为物理地址(MAC 地址),以便在局域网实现数据的传输。静态 ARP 表项的设置为网络管理员提供一种手动控制地址映射的方式,
    的头像 发表于 07-29 11:51 324次阅读
    <b class='flag-5'>静态</b> ARP 表项的<b class='flag-5'>潜在</b>问题

    第二届大会回顾第22期 软件缺陷漏洞分析

    哩哔哩APP,观看更清晰视频 正文内容 软件缺陷是影响软件质量的关键因素,软件缺陷分析能够帮助开发和测试团队及时识别和分析
    的头像 发表于 06-27 08:42 286次阅读
    第二届大会回顾第22期  <b class='flag-5'>软件缺陷</b>漏洞<b class='flag-5'>分析</b>

    基于深度学习的芯片缺陷检测梳理分析

    虽然表面缺陷检测技术已经不断从学术研究走向成熟的工业应用,但是依然有一些需要解决的问题。基于以上分析可以发现,由于芯片表面缺陷的独特性质,通用目标检测算法不适合直接应用于芯片表面缺陷
    发表于 02-25 14:30 1266次阅读
    基于深度学习的芯片<b class='flag-5'>缺陷</b>检测梳理<b class='flag-5'>分析</b>

    机器视觉在织物缺陷图像识别的应用与分析

    基于图像的织物疵点自动检测技术已成为了该领域近年来的的研究热点,其代替人工织物疵点检测的研究算法也逐渐成为可能,主流方法一般分为两大类, 一是基于传统图像处理的织物缺陷检测方法,二是基于深度学习算法的织物缺陷检测定位方法。
    发表于 02-20 14:24 546次阅读
    机器视觉在织物<b class='flag-5'>缺陷</b>图像识别<b class='flag-5'>中</b>的应用与<b class='flag-5'>分析</b>

    源代码审计怎么做?有哪些常用工具

    源代码审计是一种通过检查源代码来发现潜在的安全漏洞的方法。 下面是常用的源代码审计工具: 1、Fortify:通过内置的五大主要分析引擎,对源代码进行静态分析,并与特有的
    发表于 01-17 09:35

    什么是波峰焊?波峰焊接缺陷原因分析及对策

    什么是波峰焊?波峰焊接缺陷原因分析及对策
    的头像 发表于 01-15 10:07 1001次阅读
    什么是波峰焊?波峰焊接<b class='flag-5'>缺陷</b>原因<b class='flag-5'>分析</b>及对策

    Helix QAC—软件静态测试工具

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

    SiC外延层的缺陷控制研究

    探索SiC外延层的掺杂浓度控制与缺陷控制,揭示其在高性能半导体器件的关键作用。
    的头像 发表于 01-08 09:35 1872次阅读
    SiC外延层的<b class='flag-5'>缺陷</b>控制研究

    人工智能在软件测试的应用

    测试的应用。 人工智能在软件测试的应用可以有效地提高测试的效率和准确性。通过机器学习、自然语言处理、模式识别等人工智能技术,测试工具可以自动分析
    的头像 发表于 12-26 11:02 578次阅读

    如何确定FMEA每个潜在失效模式的严重度?

    在进行故障模式和影响分析(FMEA)时,确定每个潜在失效模式的严重度至关重要。通过合理地评估潜在失效模式的严重程度,可以为制定相关的风险控制和预防措施提供指导。下面将分享一些常用的方法来确定FMEA
    的头像 发表于 12-13 15:02 1396次阅读
    如何确定FMEA<b class='flag-5'>中</b>每个<b class='flag-5'>潜在</b>失效模式的严重度?