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。

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

    关注

    4981

    文章

    18274

    浏览量

    288362
  • 数据
    +关注

    关注

    8

    文章

    6511

    浏览量

    87590
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66746
收藏 人收藏

    评论

    相关推荐

    怎么用Vivado做覆盖率分析

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

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

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

    GSM覆盖增强技术和超远覆盖原理的研究分析

    电子发烧友网站提供《GSM覆盖增强技术和超远覆盖原理的研究分析.pdf》资料免费下载
    发表于 11-17 16:36 0次下载
    GSM<b class='flag-5'>覆盖</b>增强技术和超远<b class='flag-5'>覆盖</b>原理的研究<b class='flag-5'>分析</b>

    代码覆盖率记录

    为确保具体的产品(例如,医疗或航空电子市场)质量合格, 通常需要提供语句覆盖与判定覆盖认证证明。对于各种嵌 入式系统,规范要求高度优化的代码需要实时测试。禁止 代码插装和运行时篡
    发表于 11-03 11:02 0次下载
    <b class='flag-5'>代码</b><b class='flag-5'>覆盖率</b>记录

    如何使用valgrind对代码进行内存泄露检测

    代码可能存在 内存泄露 怎么办? 使用 valgrind 可以对代码进行内存泄露检测。 valgrind下载安装 安装: 1 、tar –jxvf valgrind- 3 . 21
    的头像 发表于 10-04 14:56 390次阅读
    如何使用valgrind对<b class='flag-5'>代码</b><b class='flag-5'>进行</b>内存泄露<b class='flag-5'>检测</b>

    软件代码结构化覆盖测试-分支覆盖

    本篇我们介绍分支覆盖,从测试技术对代码的测试程度上来说,在复杂代码中,分支覆盖比语句覆盖效果要好
    的头像 发表于 09-01 11:34 394次阅读
    软件<b class='flag-5'>代码</b>结构化<b class='flag-5'>覆盖</b>测试-分支<b class='flag-5'>覆盖</b>

    使用NUC123 PWMA频道0来通过PWM捕捉功能检测UART1失败

    功能在发现反值下降时可以重新装入反值 用户可以传输关于 RXD 的指定数据, 并使用这个方法通过计算 UART 数据的低时间来检测 UART 失败 。 要使用此示例代码, 用户应该
    发表于 08-30 07:25

    Vivado仿真器和代码覆盖率简析

    编写 HDL 通常是 FPGA 开发中耗时最少的部分,最具挑战性和最耗时的部分可能是验证。根据最终应用程序,验证可能非常简单,也可能非常复杂,简单的话只需对大多数功能进行检查或执行完全独立开发的测试平台来演示功能和代码覆盖率
    的头像 发表于 08-03 09:23 1289次阅读
    Vivado仿真器和<b class='flag-5'>代码</b><b class='flag-5'>覆盖率</b>简析

    静态代码测试多语言特长生: Klocwork 2023.2更新快讯

    随着 2023.2 的发布,Klocwork 为 C、C++、C#、Java 和 JavaScript 分析提供了更新和改进。MISRA C:2012 AMD 2覆盖率和DISA STIG ASD
    的头像 发表于 08-01 15:19 561次阅读
    静态<b class='flag-5'>代码</b>测试多语言特长生: Klocwork 2023.2更新快讯

    静态代码分析器工具Helix QAC 2023.2: 提供 100% 的 MISRA C:2012 和 MISRA C:2023 规则覆盖率

    Helix QAC 2023.2 提供 100% 的 MISRA C:2012 和 MISRA C:2023 规则覆盖率,并更新相应的合规性模块以支持 MISRA C:2023。 此外,此版
    的头像 发表于 07-31 22:53 771次阅读
    静态<b class='flag-5'>代码</b><b class='flag-5'>分析</b>器工具Helix QAC 2023.2: 提供 100% 的 MISRA C:2012 和 MISRA C:2023 规则<b class='flag-5'>覆盖率</b>

    什么是静态代码分析?静态代码分析概述

    静态分析可帮助面临压力的开发团队。高质量的版本需要按时交付。需要满足编码和合规性标准。错误不是一种选择。 这就是开发团队使用静态分析工具/源代码分析工具的原因。在这里,我们将讨论静态
    的头像 发表于 07-19 12:09 921次阅读
    什么是静态<b class='flag-5'>代码</b><b class='flag-5'>分析</b>?静态<b class='flag-5'>代码</b><b class='flag-5'>分析</b>概述

    解读芯片验证中的机器学习技术

    许多ML算法已经在功能验证的不同领域进行了尝试,并取得了不错的效果。ML在功能验证中的应用主要分为:需求工程、静态代码分析、验证加速、覆盖率收集和BUG的
    发表于 07-03 10:27 300次阅读
    解读芯片验证中的机器学习技术

    SystemVerilog的覆盖率建模方式

    为了确保验证的完备性,我们需要量化验证目标。SystemVerilog提供了一套丰富的覆盖率建模方式。
    的头像 发表于 06-25 10:44 568次阅读

    代码覆盖检测

    1 代码覆盖率概述 覆盖率(code coverage rate)是反映测试用例对被测软件覆盖程度的重要指标,也是衡量测试工作进展情况的重要指标。在
    的头像 发表于 05-12 22:26 2485次阅读
    <b class='flag-5'>代码</b><b class='flag-5'>覆盖</b><b class='flag-5'>检测</b>

    Verilog边沿检测的基本原理和代码实现

    本文将从Verilog和边沿检测的基本概念入手,介绍Verilog边沿检测的原理和应用代码示例。
    的头像 发表于 05-12 17:05 2332次阅读
    Verilog边沿<b class='flag-5'>检测</b>的基本原理和<b class='flag-5'>代码</b>实现