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

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

3天内不再提示

在寻求无错误软件的过程中增强静态代码分析

星星科技指导员 来源:嵌入式计算设计 作者:Rutul Dave 2022-06-28 15:58 次阅读

嵌入式软件无处不在,并在各种设备中提供关键功能,从最新智能手机和游戏小工具到救生医疗设备。创建嵌入式软件的工程组织明白,确保代码质量是一个关键的差异化因素和竞争优势。与其他测试和验证方法一起,许多公司利用代码测试和现代静态分析的优势在开发早期识别缺陷。在过去几年中,嵌入式市场研究公司 VDC Research 的各种报告表明,采用静态分析作为关键测试自动化工具的公司增长强劲。现代静态分析可以说是应对确保复杂软件质量挑战的最具成本效益、自动化和可重复的方法。

推动这种增长的一个重要原因是,用于识别关键缺陷(如内存损坏、资源泄漏、空指针取消引用和无效内存访问)的技术已经成熟到可以发现大量难以发现的遍历函数的缺陷的程度现在可以准确地完成文件边界,从而导致非常少的误报。然而,真正的创新在于为每个已识别的缺陷提供上下文信息。开发人员需要知道缺陷存在的原因、会产生什么影响以及需要修复的地方。

需要修复的问题的答案并不像知道文件名和行号那么简单。用于版本控制、代码重用和代码组件重用以提高开发效率的代码分支和合并允许缺陷进入多个版本和产品

考虑一个软件团队的情况,该团队拥有多个产品的不同版本的分支。由于代码复制,其中一个分支中的错误可能存在于一个或多个其他分支中。在另一种情况下,考虑创建框架以支持智能手机应用程序的团队。因为他们可能将框架移植到 Windows、AndroidiPhone 等各种平台上,所以静态分析结果清楚地表明已识别的缺陷是仅存在于一个地方还是存在于多个平台上,这一点至关重要。同样,当软件是通过从多个来源聚合创建的时,如果在各种产品中使用特定组件,那将是一场噩梦,因为一个第三方组件的缺陷最终可能会影响包含它的所有不同产品。

不同版本操作系统的多个分支

想象一个负责为移动智能手机创建新操作系统 (OS) 的软件开发团队。由于必须支持多个手机供应商 (OEM),因此源代码控制管理系统中的每个供应商都需要一个开发分支。此外,每个供应商通常都有针对不同版本和产品代的多个分支。画面开始变得非常复杂。

对代码的每个分支执行的静态分析会生成一个缺陷列表。但是,根据引入缺陷的时间,它可能存在于所有版本或子集中。当孤立地查看单个分支中的单个缺陷时,开发人员面临的挑战是他们无法在不知道缺陷存在于何处的情况下评估缺陷的严重性。不限于单个版本或一个 OEM 客户端的缺陷将是严重的,修复它需要优先于其他任何事情。此外,编写代码来修复缺陷的开发人员需要准确地知道需要签入源代码控制管理系统中的哪些分支。

图 1:由于代码分支和合并导致的重复缺陷。

poYBAGK6tOeAM116AAHt4wi8mqc418.png

适用于多个平台的单一框架

在分支的另一面,通常需要编写设计为在多个平台上运行的代码。诸如移动应用程序框架之类的软件组件通常被构建为在各种类型的移动电话平台上运行。对于嵌入式设备,一个常见的要求是构建相同代码库的 32 位和 64 位版本。我们举一个简单的例子:

gcc --m32 -c foo.c

// 32 位编译。包含空指针取消引用缺陷。

gcc -c foo.c

// 64 位编译。包含相同的空指针取消引用缺陷。

在 32 位和 64 位二进制文件中触发的foo.c中的缺陷将被检测并报告为单个缺陷。但是,由于源代码相同,因此复杂的分析不会将其报告为重复缺陷。在失去开发人员对静态分析解决方案的信任方面,重复与误报一样有害。

共享通用代码组件

在最后一个示例中,考虑一个为一系列网络交换机开发平台软件的团队。由于平台软件提供的功能必须在所有产品中实现,因此该代码组件将被共享(参见图 2)。对于在这个团队工作的开发人员来说,静态分析报告的缺陷严重性的最佳评估不仅是它对一个交换机产品的影响,还包括使用该平台软件组件的所有产品的信息。

图 2:单个软件组件在多个产品中重复使用。

pYYBAGK6tRCAFAMlAAFmrErrXjs168.png

产品通常是通过组合许多这样的共享组件来创建的。每个组件不仅是一个项目本身,而且是使用它的各种其他项目的一部分。分析结果需要确定此共享组件中的缺陷对使用它的各个项目有影响。

消除代码测试中的猜测

采用静态分析等现代开发人员测试方法是嵌入式软件行业的一个积极趋势。该技术已经成熟到可以成为软件工程师武器库中强大武器的程度。无需创建复杂的测试用例和测试基础设施,静态分析就可以在编写和编译代码时自动发现关键缺陷。但是,要使静态分析成为开发人员最有价值的工具,分析必须提供诸如“此缺陷的影响是什么?”之类的问题的答案。和“我需要在哪里检查修复?” 帮助确定修复已识别缺陷的优先级,并消除猜测以确保软件尽可能无错误。

审核编辑:郭婷

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

    关注

    5064

    文章

    18994

    浏览量

    302601
  • Android
    +关注

    关注

    12

    文章

    3921

    浏览量

    127091
  • WINDOWS
    +关注

    关注

    3

    文章

    3523

    浏览量

    88374
收藏 人收藏

    评论

    相关推荐

    用TPA4411过程中,发现静态电流居然达100MA左右,为什么?

    用TPA4411过程中,发现静态电流居然达100MA左右,这对电池供电的产品来说,要命啊,是芯片特性还是芯片问题?求解
    发表于 10-25 06:12

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

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

    Perforce静态分析工具2024.2新增功能:Helix QAC全新CI/CD集成支持、Klocwork分析引擎改进和安全增强

    实现持续合规性现代软件开发实践要求开发团队具备适应性,确保代码质量和可靠性的同时,优先考虑灵活性和协作性。软件开发流程
    的头像 发表于 10-08 16:22 219次阅读
    Perforce<b class='flag-5'>静态</b><b class='flag-5'>分析</b>工具2024.2新增功能:Helix QAC全新CI/CD集成支持、Klocwork<b class='flag-5'>分析</b>引擎改进和安全<b class='flag-5'>增强</b>

    康谋分享 | 基于场景的AD/ADAS验证过程中,识别挑战性场景!

    基于场景的验证是AD/ADAS系统开发过程中的重要步骤,然而面对海量驾驶记录数据时,如何实现自动且高效地识别、分类和提取驾驶记录的挑战性场景?本文康谋为您介绍IVEX软件识别挑战性场景并进行数据
    的头像 发表于 08-28 10:16 999次阅读
    康谋分享 | <b class='flag-5'>在</b>基于场景的AD/ADAS验证<b class='flag-5'>过程中</b>,识别挑战性场景!

    DevOps的质量门工作原理,以及静态代码分析Klocwork和Perforce Helix QAC质量门的实践应用

    如何使用静态代码分析工具(如Klocwork 和 Helix QAC)实现质量门。 什么是质量门? 质量门是IT或开发项目中实施的检查点,这些检查点要求
    的头像 发表于 07-29 15:12 304次阅读

    RIGOL产品材料应力测试过程中的应用

    、强度、刚度、稳定性等,可以精确地控制产品质量。本篇解决方案将介绍RIGOL产品材料应力测试过程中的应用。
    的头像 发表于 07-12 17:01 271次阅读
    RIGOL产品<b class='flag-5'>在</b>材料应力测试<b class='flag-5'>过程中</b>的应用

    定华雷达知识讲堂:雷达物位计测量过程中的干扰有哪些?

    用户介绍一下DHE雷达物位计测量过程中产生干扰的具体因素都有哪些。 一、DHE雷达物位计测量过程中,常见的干扰可分为两种:直流干扰和交流干扰。 1、直流干扰       
    的头像 发表于 06-26 16:03 341次阅读

    Fx3控制器,USB数据包的数据有效载荷无法正常发送的原因?

    Fx3 控制器流式传输过程中,从主机收到了意外的端点停止请求。 调试过程中,我发现
    发表于 05-28 06:37

    量子计算最新突破 微软与量子计算公司Quantinuum合作实现14000次实验无错误

    微软与量子计算公司Quantinuum深度合作,宣布实验成功完成了多达14000次无错误的量子计算操作,刷新量子计算错误率纪录,将错误
    的头像 发表于 05-14 11:47 582次阅读
    量子计算最新突破 微软与量子计算公司Quantinuum合作实现14000次实验<b class='flag-5'>无错误</b>

    介绍一些常见的Modbus IO通信错误代码及其含义

    Modbus IO通信协议错误代码通常用于标识通信过程中出现的错误或异常情况。
    的头像 发表于 03-06 09:03 2339次阅读

    STM32G431RB使用软件生成代码过程中报错怎么解决?

    使用软件生成代码过程中报错,使用但是STM32G431RB 的开发板
    发表于 03-06 06:15

    Helix QAC—软件静态测试工具

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

    静电SMT贴片加工生产过程中存在的危害

    静电和静电放电我们的日常生活无处不见,但用于电子设备,有可能造成对电子设备造成严重损坏,静电SMT贴片加工生产过程中已被严格的控制,这是因为,高集成意味着线路单元将越来越窄,静电
    的头像 发表于 01-04 09:22 422次阅读

    AD2S1210使用的过程中出现“正弦 /余弦输入超过DOS失配阈值”的错误如何解决?

    AD2S1210使用的过程中,角度数据读取都没有问题,也很稳定,但一直出现“正弦 /余弦输入超过 DOS失配阈值”的错误,虽然不影响使用,但这个问题老是让人感觉不舒服,不知道该如何解决?有没有哪位知道,麻烦不吝赐教,谢谢!!板
    发表于 12-12 06:23

    c语言代码错误怎么找

    ,它们通常是由于C语言编写规则被打破所引起的。实际上,C编译器会提供非常详细的错误消息,告诉我们在哪个地方发生了错误。 当我们在编译过程中遇到语法错误时,我们需要仔细阅读编译器提供的
    的头像 发表于 11-24 10:05 3566次阅读