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。

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

    关注

    5069

    文章

    19023

    浏览量

    303456
  • 数据
    +关注

    关注

    8

    文章

    6899

    浏览量

    88844
  • 代码
    +关注

    关注

    30

    文章

    4752

    浏览量

    68364
收藏 人收藏

    评论

    相关推荐

    synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?

    公司某个项目用到了这个DW:DW_fpv_div,但是scan跑完,这个模块覆盖率只有60%多,现在要我用TMAX软件,通过功能去覆盖,我看了下rpt报的faults点,尝试去写了几个特殊值去做除法
    发表于 10-15 18:38

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

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

    利用静态检查工具完善功能安全中测试覆盖率

    在功能安全中测试覆盖率是比较重要的概念,也是在验证过程中通常需要花费时间较多的步骤,如果能借助于静态检查工具的逻辑查找和声明、测试用例自动补全等功能往往能取得事半功倍的效果。
    的头像 发表于 09-05 09:15 289次阅读
    利用静态检查工具完善功能安全中测试<b class='flag-5'>覆盖率</b>

    如何使用Polyspace Code Prover来统计堆栈

    前一篇文章介绍了堆栈和内存的一些背景知识。本次介绍如何使用 Polyspace Code Prover来统计堆栈,如何使用这些数据为软件优化服务。
    的头像 发表于 07-25 14:06 450次阅读
    如何使用<b class='flag-5'>Polyspace</b> Code Prover来统计堆栈

    电导检测方法有哪几种

    电导是衡量溶液中离子浓度和电荷传递能力的重要参数,广泛应用于水质分析、化工生产、生物医学等领域。电导检测方法有很多种,下面将介绍几种常
    的头像 发表于 07-14 11:45 1814次阅读

    单元测试工具TESSY 新版本亮点速览:提供测试驾驶舱视图、超级覆盖率代码访问分析、增强覆盖率审查

    各种测试对象和方法的所有覆盖率测量结果,并记录在新的测试总结报告中。 了解更多TESSY新版本功能详情或申请免费试用,欢迎咨询TESSY中国授权分销商——龙智。 新版本功能亮点速览: 1、超级覆盖率 逐行评估源代码。 基于标准
    的头像 发表于 07-08 16:20 414次阅读
    单元测试工具TESSY 新版本亮点速览:提供测试驾驶舱视图、超级<b class='flag-5'>覆盖率</b>、<b class='flag-5'>代码</b>访问<b class='flag-5'>分析</b>、增强<b class='flag-5'>覆盖率</b>审查

    该如何提高代码容错、降低代码耦合度?

    提高RT-Thread代码的容错和降低耦合度是确保代码质量和可维护性的关键,下面列举了几种在编写代码时,提高代码容错
    的头像 发表于 06-26 08:10 618次阅读
    该如何提高<b class='flag-5'>代码</b>容错<b class='flag-5'>率</b>、降低<b class='flag-5'>代码</b>耦合度?

    如何将SystemVerilog断言属性和覆盖属性置于在设计上?

    功能覆盖、激励生成和运行管理是当今功能验证的三大相互关联的任务。其中,功能覆盖率可以说是最重要的,主要是因为覆盖率收敛是tape的主要标准。
    的头像 发表于 05-28 10:30 682次阅读
    如何将SystemVerilog断言属性和<b class='flag-5'>覆盖</b>属性置于在设计上?

    芯海应用笔记:通用 MCU USART 自动波特检测

    本文档介绍和说明芯海科技旗下 CS32 系列 MCU 的自动波特检测功能,并为不具备硬件自动波特检测的 MCU 产品提供替代软件方法 。
    发表于 05-16 11:42

    PCB设计有必要去掉铜吗?铜能带来什么问题?

    在PCB设计中,铜即孤岛铜算是常见的问题,是指那些没有电气连接,孤立存在电路板上的铜区域,然而很多电子工程师遇见铜,都在忧虑是否要去除,下面本文将从多角度来分析,希望对小伙伴们有所帮助。 1、
    发表于 05-13 09:16 1599次阅读

    代码静态测试工具Helix QAC 2023.4新发布

    Helix QAC 2023.4 为新的 MISRA C++:2023 指南推出了 100% MISRA C++:2023® 规则覆盖率。此版本还包括扩展的 C++20 语言支持、数据流分析的性能改进以及整个产品中的许多产品体验增强功能。
    的头像 发表于 01-13 12:25 460次阅读
    <b class='flag-5'>代码</b>静态测试工具Helix QAC 2023.4新发布

    怎么用Vivado做覆盖率分析

    在做仿真的时候往往会去做代码覆盖率和功能覆盖率分析,来保证仿真是做的比较充分完备的。
    的头像 发表于 01-03 12:34 1582次阅读
    怎么用Vivado做<b class='flag-5'>覆盖率</b><b class='flag-5'>分析</b>

    软件代码结构化覆盖测试-MC/DC覆盖

    MC/DC的全称是Modified Condition/Decision Coverage,修正条件判定覆盖率。很多文章对于定义的解释都比较专业,通常也会让人感觉理解困难,本文我们用通俗易懂的说明给大家做介绍
    的头像 发表于 12-15 15:22 2922次阅读
    软件<b class='flag-5'>代码</b>结构化<b class='flag-5'>覆盖</b>测试-MC/DC<b class='flag-5'>覆盖</b>

    如何减少LED透明屏灯的问题?

    LED透明屏灯的原因分析入手,结合实际案例,提出解决方法和预防措施,以降低LED透明屏灯的频率,提高产品的可靠性和寿命。 一、LED透明屏灯的主要原因
    的头像 发表于 12-09 14:22 758次阅读

    形式验证最佳实践之五:收尾和总结

    在收集覆盖率之前,我们首先需要定义我们想要观察的内容。与模拟中的代码覆盖类似,正式覆盖可以观察分支、语句、条件和表达式。它还可以观察功能覆盖
    的头像 发表于 11-29 16:52 707次阅读
    形式验证最佳实践之五:收尾和总结