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

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

3天内不再提示

关于使用Polyspace进行死代码检测和覆盖率度量的分析和介绍

MATLAB 来源:djl 2019-09-18 15:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Polyspace工具可帮助您识别软件中的死代码或执行不到的代码。这可以节省时间并降低与测试活动相关的成本,从而实现稳健性和完整的代码覆盖度。Polyspace产品提供的有关软件运行时行为的详细信息证明了死代码的存在,并帮助您将控制和数据流跟踪到潜在来源。这在遵守行业标准(如DO178B/C、ISO26262、IEC61508和IEC62304)时尤其重要。

死代码是您的应用中永远不会执行的部分。常见的原因包括:

条件分支中的编程错误

由于输入数据永远不会导致执行某个特定分支,代码永远不会得到执行

调试结构和其他非功能代码

针对不同运行时情景而设计的可重用组件

您的应用中存在死代码可能导致严重的后果,因为它可能是隐藏错误的根源。死代码还意味着该代码效率低下,因为它会增加可执行文件的大小,这对于嵌入式应用影响很大。还可能导致法律问题。

关于使用Polyspace进行死代码检测和覆盖率度量的分析和介绍

死代码的简单示例

此外,检测死代码的效率可能非常低,使用传统的测试方法几乎不可能检测到。根据DO-178C的形式方法补充DO—333,“涉及‘始终/从不’的需求一般不能由一组有限的测试用例进行验证,但可以通过形式分析进行验证。”

关于使用Polyspace进行死代码检测和覆盖率度量的分析和介绍

使用测试实现完整代码覆盖率的成本

Polyspace产品可以帮助您找到死代码,优化测试周期,并缩短整个验证周期。

这非常重要,因为它可以减少工程师试图获得100%代码覆盖率所花费的时间,还可以节省测试时间和开发资源。这对于必须遵守像DO178B/C之类的标准的高度完整性和安全关键型应用尤其如此。

DO-178B/ED-12B对死代码和停用代码的定义如下:

死代码- 由于设计错误而无法在目标计算机环境的操作配置中执行(代码)或使用(数据),并且不能被追溯至系统或软件需求的可执行目标代码(或数据)。一个例外是嵌入式标识符。

停用代码- 在设计上符合以下特征之一的可执行目标代码(或数据):

不是为了执行(代码)或使用(数据),例如以前开发的软件组件的一部分

仅在目标计算机环境的特定配置中执行(代码)或使用(数据),例如由硬件引脚选择或软件编程的选项启用的代码

DO-178B/ED-12B的基本要求是删除任何死代码,并验证停用的代码,证明它不会被意外激活。因此,测试的成本非常高。无论认证要求如何,识别死代码还是一个不错的开发实践,因为研究表明,死代码和停用代码是隐藏缺陷和运行时错误的根源。Polyspace产品可以帮助您优化测试周期,并缩短整个验证周期。

使用 Polyspace Bug Finder 识别执行不到的代码

即使在运行单个测试用例之前,您也可以使用PolySpace代码验证工具在模块级或在完整的应用中识别执行不到的代码。如下图所示,使用Polyspace Bug Finder,您可以直接在IDE(如Eclipse)中检测执行不到的代码部分。这还有助于您考虑任何此类死代码对您的应用的影响,从而使您能够在第一时间做出更改。

关于使用Polyspace进行死代码检测和覆盖率度量的分析和介绍


使用 Polyspace Bug Finder 在 Eclipse IDE 内直接在编译阶段识别死代码

使用 Polyspace Code Prover 证明死代码的存在

Polyspace Code Prover可让您证明死代码的存在,因为它提供了数学证明方式,突出显示某一段代码,对于任何代码路径或者应用中任何组合变量值,该段代码均不执行。凭借形式化方法和抽象解释技术,Polyspace Code Prover可以证明应用中的死代码,且误报率几乎为零。

关于使用Polyspace进行死代码检测和覆盖率度量的分析和介绍

在 Polyspace Code Prover 中证明死代码的存在,其中包括导致该问题的原因的详细信息

您可以使用详细的检查信息进一步了解此类冗余的原因。它可能会揭示在需求捕获中由于未识别或者未关联任何测试用例而错过的需求。还可以使用能够识别上下文验证参数范围的数据范围规范来识别死代码和停用代码。

代码覆盖率、代码度量指标和趋势

代码覆盖率是一项指标,用于量化表示某个软件应用是否经过全面测试并且包含错误的机率较低。结构化代码覆盖率主要用作一种度量,表示达到了足够的测试的情况。由于不可能测试所有可能的运行时场景,100%的代码覆盖率是指经过测试已经达到可接受水平的软件。死代码的存在使得不可能达到100%的代码覆盖率,并导致投入大量的时间和精力编写不必要的测试用例。

Polyspace工具可产生并合成有用的代码指标,准确地反映代码的质量。这些指标可以使用基于Web的仪表板查看。使用这一内置功能,您可以访问各种指标,如运行时错误、代码复杂度,以及编码违规。使用这些指标,您可以在从第一次迭代到最终交付版本的代码进化过程中跟踪达到预定义的软件质量目标的进度。您还可以测量实施的任何代码更改对代码库造成的增量影响,例如由于更改而引入任何死代码。

关于使用Polyspace进行死代码检测和覆盖率度量的分析和介绍

在 Polyspace 基于 Web 的仪表板中跟踪代码质量指标

此外,Polyspace产品还可以很好地与代码覆盖工具集成,如可以导入Polyspace产品验证结果并使用这些结果补充代码覆盖解决方案的VectorCast。

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

    关注

    5209

    文章

    20624

    浏览量

    336756
  • 数据
    +关注

    关注

    8

    文章

    7347

    浏览量

    95004
  • 代码
    +关注

    关注

    30

    文章

    4975

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    半导体嵌入式单元测试的核心技术、工具选型与落地全流程

    和问题,及时进行改进。例如,如果发现某个模块的测试用例执行时间过长,可以考虑优化测试用例的设计,减少不必要的测试步骤。如果发现测试覆盖率一直无法达到要求,可以检查代码是否存在未测试的分支或条件,及时补充
    发表于 03-06 14:55

    嵌入式软件单元测试必要性与专业工具重要性的系统性专业研究报告

    强制覆盖率要求 报告审计要求 ‌ISO 26262‌(ASIL D) 汽车电子 ‌100% MC/DC‌(修正条件/判定覆盖) 必须由自动化工具生成‌可追溯矩阵‌(需求→代码→测试用例) ‌IEC
    发表于 03-05 10:41

    海尔智家借助MATLAB技术提高测试覆盖率

    20,000 行。这会增加错误出现的概率。此外,它还会导致调试周期长、测试覆盖率低和效率低下等问题,从而影响项目期限。
    的头像 发表于 02-25 11:14 550次阅读
    海尔智家借助MATLAB技术提高测试<b class='flag-5'>覆盖率</b>

    芯片过热导致锁?全自动烧录机温控系统的优化实战

    片,让气流产生轻微紊流,打破芯片表面的静止空气隔热层。此举将有效冷却气流覆盖率从不足30%提升至80%以上。 第二步:优化压合机构,增加散热微间隙 与机械工程师协作,在压杆的接触头上贴附一层定厚
    发表于 02-11 09:34

    芯片测试覆盖率99%就够了吗?给DFT设计提个醒

    充分。必须将硅后验证向量导入ATPG工具进行覆盖率分析,否则会形成测试盲区。 二、从测试困境到DFT设计反馈 测试工程师的挑战应前置于设计阶段解决。 可测性设计(DFT)的早期介入:在架构设计阶段,测试
    发表于 02-06 11:06

    汽车软件质量跃迁的系统性路径:基于ISO 26262标准的单元测试体系重构与中日实践深度对比(2026学术研究报告)

    5要求 SWE.4 建立企业级测试模板与评审流程 基于覆盖率的量化度量(如MC/DC≥95%) AI预测性测试用例生成 MAN.3 制定测试KPI 缺陷密度纳入绩效考核 自动优化资源分配 中国车企
    发表于 01-05 14:58

    嵌入式软件单元测试中AI自动化与人工检查的协同机制研究:基于专业工具的实证分析

    ‌ ‌摘要****‌ 本文系统探讨嵌入式软件相较于通用软件在单元测试层面的特殊性,分析其对高覆盖率、可追溯性与实时性验证的严苛需求,并以专业工具winAMS为技术载体,深入研究AI驱动的自动化测试在
    发表于 12-31 11:22

    分析嵌入式软件代码的漏洞-代码注入

    找到所有应该做出这种修改的地方。但这对于大型程序来说可能是棘手的,特别是对于第三方代码库。 3、测试漏洞 测试这些类型的漏洞可能很困难; 即使能实现非常高的代码覆盖率的测试也不能触发这些问题。 测试
    发表于 12-22 12:53

    C语言单元测试在嵌入式软件开发中的作用及专业工具的应用

    编译器生成的中间代码(如GCC/LLVM的IR层) 实现代码结构与硬件行为的精准映射 可检测寄存器位操作异常、中断服务程序(ISR)时序冲突等深层缺陷 ‌目标代码
    发表于 12-18 11:46

    LED灯原因到底有多少种?

    于LED产业的科研检测机构,能够对LED进行严格的检测,致力于为客户提供高质量的测试服务,为LED在各个领域的可靠应用提供坚实的质量保障。以金鉴接触的失效分析大数据显示,LED
    的头像 发表于 10-16 14:56 988次阅读
    LED<b class='flag-5'>死</b>灯原因到底有多少种?

    FCT自动测试设备:电路板性能检测利器

    FCT自动测试设备能够实现对电路板的功能自动化测试,提高测试覆盖率。设备通过预设的测试程序和自动化操作流程,对电路板的各项功能和性能指标进行检测和验证。例如,在通信设备的电路板测试中,FCT测试设备
    的头像 发表于 08-07 16:35 2461次阅读
    FCT自动测试设备:电路板性能<b class='flag-5'>检测</b>利器

    太阳光模拟器关键参数 | 光谱匹配度、光谱覆盖率及光谱偏离

    太阳光模拟器作为模拟太阳辐射环境的核心设备,其性能直接关系到诸多领域实验数据的可靠性。光谱匹配度(SMD)、光谱覆盖率(SPC)和光谱偏离(SPD)作为评估其性能的关键指标,从不同维度决定了模拟
    的头像 发表于 07-24 11:26 1281次阅读
    太阳光模拟器关键参数 | 光谱匹配度、光谱<b class='flag-5'>覆盖率</b>及光谱偏离<b class='flag-5'>率</b>

    太阳光模拟器性能的影响参数:光谱匹配度、光谱覆盖率及光谱偏离

    太阳光模拟器作为模拟太阳辐射环境的核心设备,其性能直接关系到诸多领域实验数据的可靠性。光谱匹配度(SMD)、光谱覆盖率(SPC)和光谱偏离(SPD)作为评估其性能的关键指标,从不同维度决定了模拟
    发表于 07-21 15:35

    HarmonyOS AI辅助编程工具(CodeGenie)代码测试

    本功能从DevEco Studio 5.1.0 Release版本开始支持。 根据选中的ArkTS方法名称,CodeGenie支持自动生成对应单元测试用例,提升测试覆盖率。 在ArkTS文档中,光标
    发表于 07-14 17:33

    如何操作时域网络分析进行故障检测

    操作时域网络分析仪(TDNA)进行故障检测需结合仪器设置、校准、时域转换及数据分析等步骤。以下为系统化操作指南,涵盖关键流程、参数配置及典型案例:一、操作前准备1. 仪器连接与配置 硬
    发表于 04-30 14:15