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

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

3天内不再提示

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

星星科技指导员 来源:嵌入式 作者:PAUL ANDERSON 2022-11-10 16:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

更新系统,揭示编码缺陷

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

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

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

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

另一个危险区域:标准库

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

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

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

审核编辑:郭婷

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

    关注

    68

    文章

    20164

    浏览量

    247808
  • 编译器
    +关注

    关注

    1

    文章

    1670

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    芯片制造检验工艺的全数检查

    在IC芯片制造的检验工艺,全数检查原则贯穿于关键工序的缺陷筛查,而老化测试作为可靠性验证的核心手段,通过高温高压环境加速潜在缺陷的暴露,确保芯片在生命周期内的稳定运行。以逻辑芯片与存
    的头像 发表于 12-03 16:55 522次阅读
    芯片制造检验工艺<b class='flag-5'>中</b>的全数检查

    什么是CVE?如何通过SAST/静态分析工具Perforce QAC 和 Klocwork应对CVE?

    本文将为您详解什么是CVE、CVE标识符的作用,厘清CVE与CWE、CVSS的区别,介绍CVE清单内容,并说明如何借助合适的静态分析工具(如Perforce QAC/Klocwork),在软件开发早期发现并修复漏洞。
    的头像 发表于 10-31 14:24 307次阅读
    什么是CVE?如何通过SAST/<b class='flag-5'>静态</b><b class='flag-5'>分析</b>工具Perforce QAC 和 Klocwork应对CVE?

    共聚焦显微镜如何检测半导体增材膜形貌与缺陷

    能力,成为揭示半导体增材膜微观形貌与内部缺陷的关键工具,为工艺优化与质量评估提供可靠依据。下文,光子湾科技将从测量原理、参数优化、形貌分析缺陷
    的头像 发表于 09-30 18:05 2513次阅读
    共聚焦显微镜如何检测半导体增材膜形貌与<b class='flag-5'>缺陷</b>

    第三届大会回顾第7期 | 面向OpenHarmony大规模代码的路径敏感的稀疏值流分析

    静态分析(Static Analysis)是软件开发不可或缺的一部分,它可以帮助开发人员提高代码质量、减少缺陷和安全风险。
    的头像 发表于 08-18 11:31 692次阅读
    第三届大会回顾第7期 | 面向OpenHarmony大规模代码的路径敏感的稀疏值流<b class='flag-5'>分析</b>

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

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

    协议分析仪能检测蓝牙设备的哪些潜在问题?

    协议分析仪能够检测蓝牙设备从物理层到应用层的全链路潜在问题,具体涵盖以下方面:一、物理层(PHY Layer)问题 信号衰减与遮挡 RSSI(接收信号强度)异常:识别设备距离过远、金属障碍物阻挡或
    发表于 07-21 14:27

    CMP工艺缺陷类型

    CMP是半导体制造关键的平坦化工艺,它通过机械磨削和化学腐蚀相结合的方式,去除材料以实现平坦化。然而,由于其复杂性,CMP工艺可能会出现多种缺陷。这些缺陷通常可以分为机械、化学和表
    的头像 发表于 07-18 15:14 2165次阅读

    揭秘ABAQUS强大到超乎想象的分析功能有哪些?

    和研究人员解决复杂工程问题的得力助手。本文将深入探讨ABAQUS那些强大到超乎想象的分析功能,揭示它如何在不同领域发挥关键作用。 一、静态与动态分析的双剑合璧 ABAQUS的核心功能之
    的头像 发表于 05-21 16:15 543次阅读
    揭秘ABAQUS强大到超乎想象的<b class='flag-5'>分析</b>功能有哪些?

    高光谱相机在生物医学的应用:病理分析、智慧中医与成分分析

    企业,深圳市达瑞和科技有限公司依托自主研发的高光谱相机与光谱云平台,在生物医学领域实现多项突破性应用。本文聚焦其在病理分析、病毒检测及成分分析
    的头像 发表于 04-24 11:25 531次阅读

    高光谱相机在工业检测的应用:LED屏检、PCB板缺陷检测

    随着工业检测精度要求的不断提升,传统机器视觉技术逐渐暴露出对非可见光物质特性识别不足、复杂缺陷检出率低等局限性。高光谱相机凭借其独特的光谱分析能力,为工业检测提供革命性的解决方案。以
    的头像 发表于 04-23 16:36 736次阅读

    【JVM开发者必看】IntelliJ IDEA代码分析实践指南:实时纠错、冗余检测、自动修复等

    【IntelliJ IDEA的代码分析技巧】静态代码分析是指在不实际运行代码的情况下扫描代码以发现潜在问题。IntelliJ IDEA
    的头像 发表于 03-13 10:34 883次阅读
    【JVM开发者必看】IntelliJ IDEA代码<b class='flag-5'>分析</b>实践指南:实时纠错、冗余检测、自动修复等

    从“被动检测”到“主动预防”,上海控安TestGrid推出动态缺陷检测功能模块

    在嵌入式系统与安全关键领域,如航空航天、轨道交通、自动驾驶、医疗设备,代码缺陷可能引发灾难性后果。传统静态分析仅能通过源代码语法、结构和编码规范发现问题,而复杂的系统级交互、多线程并发
    的头像 发表于 03-04 14:43 668次阅读

    集成电路设计静态时序分析介绍

    本文介绍集成电路设计静态时序分析(Static Timing Analysis,STA)的基本原理、概念和作用,并分析
    的头像 发表于 02-19 09:46 1356次阅读

    ADC的静态指标有专用的分析工具吗?

    请问:ADC的静态指标有专用的分析工具吗?该指标很少在评估ADC指标时使用,是否该指标不重要,应用什么情况下需要评估该指标? 另外ADC的SNR = 6.02*N + 1.76 +10*log10(fs/2BW)
    发表于 02-08 08:13

    碳化硅的缺陷分析与解决方案

    碳化硅作为一种新型半导体材料,因其高热导率、高电子饱和速度和高击穿电场等特性,被广泛应用于高温、高压和高频电子器件。然而,碳化硅材料中的缺陷,如微管、位错、堆垛层错等,会严重影响器件的性能和可靠性
    的头像 发表于 01-24 09:17 2387次阅读