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

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

3天内不再提示

利用正确的静态分析实现应用

星星科技指导员 来源:嵌入式计算设计 作者:Arthur Hicken,Wayne 2022-06-19 07:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一般来说,最佳实践是平台中立的——这就是为什么它们被称为“最佳实践”。尽管嵌入式开发特有的微妙之处,有已知的标准来确保质量,无论平台如何。例如,避免内存泄漏应该是通用的。此外,静态分析和软件之间的关系不一定由应用程序定义:它由设备的用途定义。也就是说,运行静态分析是嵌入式软件开发特别重要的最佳实践。

传统上,嵌入式软件在发布后访问起来非常昂贵且痛苦。出于这个原因,大多数质量或验证活动都集中在消除修补或重构嵌入式代码的需要上。发布后修复错误不仅对品牌而且对利润构成最大风险。在某些行业,特别是在安全关键领域,与软件缺陷相关的后果非常严重,以至于必须完美地执行质量和验证任务。嵌入到胰岛素泵、武器控制系统、汽车制动系统等关键设备中的软件需要使用全方位静态分析功能的预防策略;否则后果可能包括代价高昂的诉讼、C 级辞职,甚至丧生。这与敏捷相反,持续开发,Web 驱动的软件应用程序,例如智能手机、电视等,对于这些应用程序而言,预防策略不太重要。为此,在软件开发范围的预防策略方面进行了以下讨论,检查了各种静态分析实现:

积分时静态分析

持续集成时间 (CI) 静态分析

指标分析

编辑时静态分析

运行时静态分析

积分时静态分析

在集成期间运行静态分析以检测容易实现的目标和严重错误是实施预防策略的良好起点。集成时静态分析在不实际执行代码的情况下模拟可行的应用程序路径,这对于无法进行运行时分析的系统非常有用。静态分析可以跨多个函数和文件进行测试,并捕获常见的内存问题,例如未初始化的内存、溢出、空指针等。

当组织开始在集成期间进行测试时,静态分析在开发策略方面有几个目的。首先,工程师可以查看测试结果并确定它们对于特定应用的重要性。静态分析可能会发现可能对软件安全性、可靠性或性能产生严重影响的潜在缺陷。另一方面,它可能会返回企业可能不关心的东西。例如,企业可能并不关心游戏控制台中的缺陷会导致软件在发生不太可能的操作序列时崩溃。用户可以简单地重新启动并继续享受他们的系统。然而,在其他情况下解决同类问题可能对于防止灾难性后果至关重要。

静态分析还可以帮助软件工程师发现在风险评估阶段很难想到的潜在缺陷。工程师可以对潜在缺陷进行分类,以改进未来的风险评估迭代。

持续集成时间 (CI) 静态分析

在运行集成时静态分析之后,软件工程师应该对代码中潜在的系统问题有更强烈的认识。下一步是运行 CI 静态分析,以执行规划阶段概述的编码策略。这可以防止在集成时间分析期间发现的缺陷类型。

对于静态分析中发现的每个问题,在代码的其他地方至少还有 10 个完全相同的东西。静态分析是同时解决所有同类违规行为的理想工具。这与在代码中追逐每一条可能的路径相反。找到系统性问题,创造一个bug无法生存的环境要好得多。

当我们谈论静态分析时,在很多情况下我们指的是反模式分析。积极的模式是应该在代码中的东西。例如,要求工程师在声明函数指针时使用typedef的策略是正模式静态分析规则。这与例如在与标准 C 库交互时禁止使用字符串类中的data()成员函数的策略形成对比。

执行两种类型(正模式和反模式)的静态分析很重要,但值得一提的是这种区别,因为如果组织花时间基于正模式构建编码策略,这可以确保软件工程师准确地构建代码它应该符合业务目标或合规性要求。

指标分析

指标分析是一种静态分析实现,它评估代码特征并提供有关代码的洞察力,可以帮助软件工程师识别弱点(图 1)。它是一种关键传感器,可以突出显示可能容易出现逻辑错误的应用程序区域。指标分析是一个基本的基线测量,应该触发进一步的分析,例如代码审查或其他一些补救活动。

图 1: Parasoft 静态分析指标报告

pYYBAGKsSD-AA41VAAzutAkeNas576.png

指标分析最好尽早使用,因为它可能会影响软件工程师编写代码的方式。避免尝试被动地或在 QA 阶段实施指标分析。指标分析的目标不仅仅是检测潜在的缺陷;它以允许工程师遵循可持续编码轨迹的方式检测它们。对潜在缺陷热点运行指标分析,纠正任何违规行为,并实施基于模式的分析规则以防止将来发生。

任何与潜在问题相关的指标都是公平的游戏。例如,一家医疗设备公司可能会使用度量分析来衡量圈复杂度,因为高分表明设备在正常运行期间需要处理的决策点太多。当有 10 个分支需要削减时,知道复杂性分数超过了编码策略中设置的阈值,而不是在 QA 阶段发现,这将有助于保持项目按时和按预算进行。例如,组织可能想要测量公共变量,因为高数字可能与代码中过多的依赖关系相关。每个组织都需要决定哪些指标可以与代码中可能的缺陷相关联。

编辑时静态分析

静态分析的最佳点是开发人员在编辑器中工作时。在编辑时运行静态分析有几个目的。首先,它将软件工程师指出潜在的问题。其次,它通过确保系统地修复任何问题来实施风险评估策略。

但是什么时候应该实施静态分析呢?我们已经讨论了为什么太迟实施静态分析是一个问题。但是,它也可能实施得太早,因为静态分析必须有足够的上下文才能提供有意义的信息。对字符、行甚至语句运行静态分析会产生太多噪音而无用。实施积极的设计模式可确保新代码在编写时按预期构建。在编辑时运行静态分析是在开发团队中促进正确行为的一种有效方式,因为反馈是快速的并且是在正在编写的代码的上下文中。利用这种类型的分析可以提高代码审查的效率,因为工程师应该能够立即纠正基于策略的错误。

运行时静态分析

一些静态分析模式可以在运行时检测缺陷。如果嵌入式目标可以容纳开销,则组织应执行运行时静态分析以完善其预防策略。运行时静态分析在代码实际运行时检测错误,这使软件工程师能够使用真实数据测试真实路径。

关于静态分析和 QA 的最后说明

在理想的预防策略中,QA 运行静态分析时发现的错误应该已经知道并确定为可接受的。这是因为软件工程师应该已经针对设计模式进行了测试和调整以强制执行编码策略。此阶段的违规意味着流程存在问题,例如不正确的静态分析规则。在这些情况下,QA 需要将代码发送回开发人员,以便他们可以找到缺陷的系统原因并实施规则以防止将来发生。从这个角度来看,静态分析是一个比错误查找器更好的质量门。

作者:Arthur Hicken,Wayne Ariola,Adam Trujillo

审核编辑:郭婷

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

    关注

    2574

    文章

    54407

    浏览量

    786243
  • 智能手机
    +关注

    关注

    66

    文章

    18672

    浏览量

    185572
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问如何利用 Keil 分析 MCU 堆栈空间?

    如何利用 Keil 分析 MCU 堆栈空间?
    发表于 11-26 07:38

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

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

    知识分享 | 使用MXAM进行AUTOSAR模型的静态分析:Embedded Coder与TargetLink模型

    知识分享在知识分享栏目中,我们会定期与读者分享来自MES模赛思的基于模型的软件开发相关Know-How干货,关注公众号,随时掌握基于模型的软件设计的技术知识。使用MXAM进行AUTOSAR模型的静态
    的头像 发表于 08-27 10:04 500次阅读
    知识分享 | 使用MXAM进行AUTOSAR模型的<b class='flag-5'>静态</b><b class='flag-5'>分析</b>:Embedded Coder与TargetLink模型

    CoolSiC™ MOSFET G2如何正确选型 硬开关与软开关场景解析

    在功率电子领域,英飞凌的CoolSiCMOSFETG2以其卓越性能备受关注。本文将重点分析如何在硬开关和软开关两种应用场景下,正确选型CoolSiCMOSFETG2,以实现最佳系统性能。
    的头像 发表于 08-26 09:04 5278次阅读
    CoolSiC™ MOSFET G2如何<b class='flag-5'>正确</b>选型 硬开关与软开关场景解析

    网段隔离器实现静态NAT网络通信

    在许多网络场景中,不同网段之间需要进行通信,但又要保证各网段的相对独立性和安全性。如果缺少网络规划与网段隔离,会使网络面临巨大的安全风险,各类网络攻击更容易传播。而静态NAT能够在实现网段隔离的前提下,建立起不同网段间的通信桥梁,十分适用于需要固定IP地址进行通信的系统中
    的头像 发表于 08-16 13:44 656次阅读

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

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

    如何正确选购功率半导体器件静态参数测试机?

    主要的功率半导体器件特性分为静态特性、动态特性、开关特性。这些测试中最基本的测试就是静态参数测试。静态参数主要是指本身固有的,与其工作条件无关的相关参数。主要包括:栅极开启电压、栅极击穿电压、源极漏
    的头像 发表于 08-05 16:06 594次阅读
    如何<b class='flag-5'>正确</b>选购功率半导体器件<b class='flag-5'>静态</b>参数测试机?

    动态BGP与静态BGP的区别?

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

    SiC MOSFET并联运行实现静态均流的基本要求和注意事项

    通过并联SiC MOSFET功率器件,可以获得更高输出电流,满足更大功率系统的要求。本章节主要介绍了SiC MOSFET并联运行实现静态均流的基本要求和注意事项。
    的头像 发表于 05-23 10:52 1376次阅读
    SiC MOSFET并联运行<b class='flag-5'>实现</b><b class='flag-5'>静态</b>均流的基本要求和注意事项

    如何利用EPR分析USB PD?

    /ref_xdps2222_240w1/)。 我想知道是否有适用于 CY4500 或任何其他分析仪的新固件可以用于进行一些测试。 或者,您建议我们如何利用 EPR 分析 USB PD?
    发表于 05-21 06:40

    如何利用高光谱相机实现精确的光谱分析

    空间信息基础上增加第三维的光谱信息。 这种技术基于物质对不同波长光的吸收、反射特性具有"指纹"效应的原理。每种物质都有其独特的光谱特征,通过分析这些特征,我们能够准确识别物质的成分和状态。 一、实现精确光谱分析的关键
    的头像 发表于 03-28 17:05 845次阅读
    如何<b class='flag-5'>利用</b>高光谱相机<b class='flag-5'>实现</b>精确的光谱<b class='flag-5'>分析</b>?

    如何利用MES系统进行产能分析呢?

    利用MES系统进行产能分析是一个涉及数据收集、处理、分析和结果呈现的全过程。对生产过程加以监控,充分利用MES数据采集分析
    的头像 发表于 02-21 12:10 770次阅读
    如何<b class='flag-5'>利用</b>MES系统进行产能<b class='flag-5'>分析</b>呢?

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

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

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

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

    如何利用Google Play实现出海应用增长

    出海应用变现。本文我们将介绍市场趋势和如何利用 Google Play 实现增长。       "订阅疲劳" 破迷思, 澄清事实抓机遇 "吸引用户开始和保持订阅十分重要,但随着订阅业务的
    的头像 发表于 01-22 11:52 1104次阅读
    如何<b class='flag-5'>利用</b>Google Play<b class='flag-5'>实现</b>出海应用增长