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

审核编辑:郭婷

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

    关注

    2552

    文章

    51217

    浏览量

    754611
  • 智能手机
    +关注

    关注

    66

    文章

    18502

    浏览量

    180447
  • 代码
    +关注

    关注

    30

    文章

    4801

    浏览量

    68735
收藏 人收藏

    评论

    相关推荐

    利用EVM对ADS1299进行内部产生方波的测试,如何才能从逻辑分析仪上获得正确的输出?

    利用EVM对ADS1299进行内部产生方波的测试,同时在ADS1299上接着逻辑分析仪,可是从逻辑分析仪获得的数据跟EVM获得的数据不一样,请问发生什么问题?我该如何才能从逻辑分析
    发表于 12-05 07:17

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

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

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

    ​和Klocwork的最新版本对静态分析工具进行了重大改进,通过尽早修复错误、降低开发成本和加快发布速度,使开发团队实现左移。本文中,我们将概述2024.2版本的新特性和新功能。CI/CD和左移以
    的头像 发表于 10-08 16:22 302次阅读
    Perforce<b class='flag-5'>静态</b><b class='flag-5'>分析</b>工具2024.2新增功能:Helix QAC全新CI/CD集成支持、Klocwork<b class='flag-5'>分析</b>引擎改进和安全增强

    利用静态电流和动态电压调节技术延长电池寿命

    电子发烧友网站提供《利用静态电流和动态电压调节技术延长电池寿命.pdf》资料免费下载
    发表于 09-04 10:14 0次下载
    <b class='flag-5'>利用</b>低<b class='flag-5'>静态</b>电流和动态电压调节技术延长电池寿命

    利用静态电流和动态电压调节技术延长电池寿命

    电子发烧友网站提供《利用静态电流和动态电压调节技术延长电池寿命.pdf》资料免费下载
    发表于 08-31 09:51 0次下载
    <b class='flag-5'>利用</b>低<b class='flag-5'>静态</b>电流和动态电压调节技术延长电池寿命

    通过LM74912-Q1睡眠模式实现超低静态电流和为常开负载供电

    电子发烧友网站提供《通过LM74912-Q1睡眠模式实现超低静态电流和为常开负载供电.pdf》资料免费下载
    发表于 08-28 09:35 1次下载
    通过LM74912-Q1睡眠模式<b class='flag-5'>实现</b>超低<b class='flag-5'>静态</b>电流和为常开负载供电

    静态链接和动态链接

    一、静态链接静态链接通过静态库进行链接,生成的目标程序中包含运行需要的所有库,可以直接运行,不过就是文件比较大。静态库是汇编产生的.o文件的集合,一般以.a文件形式出现。gcc在使用
    发表于 08-27 10:20

    基于ANSYS的高速磨削电主轴动静态性能分析

    以国产120MD60Y6型高速磨削电主轴为研究对象,使用有限元分析方法,基于ANSYS Workbench建立高速电主轴模型,先分析静态特性,计算工作条件下电主轴前端所受径向力和轴承径向刚度;然后
    的头像 发表于 08-05 11:20 152次阅读
    基于ANSYS的高速磨削电主轴动<b class='flag-5'>静态</b>性能<b class='flag-5'>分析</b>

    恒讯科技分析:香港站群服务器为什么要做伪静态处理呢?

    提高搜索引擎优化(SEO)效果:伪静态处理可以使得动态网页URL看起来像是静态网页的URL,这有助于搜索引擎更好地索引网站内容。搜索引擎通常偏好静态网页,因为它们认为静态网页更稳定、内
    的头像 发表于 07-31 12:49 281次阅读

    IAR通过多架构认证的静态分析工具加速代码质量自动化

    公司推出经TÜV SÜD认证的C-STAT静态分析工具,适用于最新发布的IAR Embedded Workbench for RISC-V V3.30.2功能安全版。
    的头像 发表于 06-19 15:49 393次阅读

    FPGA 高级设计:时序分析和收敛

    的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高 工作频率。 2、获得正确的时序分析报告 几乎所有的 FPGA 设计平台都包含静态时序分析工具,
    发表于 06-17 17:07

    CAN分析仪的驱动程序如何正确安装

    新手在使用USB转CAN时,可能会遇到一些常见问题。以下是一些常见的问题及其解决方法的清晰归纳: 1.驱动安装问题 问题描述:CAN分析仪的驱动程序没有正确安装,导致设备与计算机无法正常通信
    的头像 发表于 06-03 18:07 1294次阅读

    利用NVIDIA的nvJPEG2000库分析DICOM医学影像的解码功能

    本文将深入分析 DICOM 医学影像的解码功能。AWS HealthImaging 利用 NVIDIA 的 nvJPEG2000 库来实现此功能。
    的头像 发表于 05-28 14:27 829次阅读
    <b class='flag-5'>利用</b>NVIDIA的nvJPEG2000库<b class='flag-5'>分析</b>DICOM医学影像的解码功能

    如何设置静态IP代理

    静态IP
    jf_60146132
    发布于 :2024年04月29日 07:46:31

    计算机为什么利用反码来实现减法?

    计算机为什么利用反码来实现减法? 计算机在实现减法运算时利用反码的原因可以从历史背景、计算机设计优势和运算规则等方面来分析。 1. 历史背景
    的头像 发表于 02-19 15:10 908次阅读