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。

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

    关注

    5186

    文章

    20166

    浏览量

    329100
  • 数据
    +关注

    关注

    8

    文章

    7315

    浏览量

    94001
  • 代码
    +关注

    关注

    30

    文章

    4942

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【产品介绍】Questa One Sim软件

    优势与平台支持优势行业领先的高性能多语言仿真器用于可测性设计(DFT)向量验证的最快仿真器高性能、高容量的集成调试环境覆盖率加速功能,助力更快实现覆盖率收敛智能编译(SmartCompile)和多核
    的头像 发表于 11-17 10:39 217次阅读
    【产品<b class='flag-5'>介绍</b>】Questa One Sim软件

    关于系统链接脚本的介绍

    Flash里面,但上电后上载至ITCM中进行执行(flash模式) 三、关于物理地址与虚拟地址 物理地址是该程序要被存储的存储器地址(调试器下载程序时会遵从从此物理地址进行下载) 虚拟地址是该程序真正运行
    发表于 10-30 08:26

    LED灯原因到底有多少种?

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

    嵌入式软件测试与专业测试工具的必要性深度解析

    。提升测试效率与覆盖率专业工具通过以下方式优化测试过程: ‌静态代码分析‌:通过MISRA-C等规则检查防止缓冲区溢出等隐患 ‌动态符号执行‌:自动探索代码路径生成测试用例 ‌目
    发表于 09-28 17:42

    边聊安全 | FMEDA实践干货,手把手带你分析

    在之前发的公众号文章中已经介绍了一些关于FMEDA工作的基础概念,比如有针对随机失效率、诊断覆盖率和软失效等话题的入门介绍。在文章发表之后,笔者陆陆续续收到了一些小伙伴们的留言和提问。
    的头像 发表于 09-05 16:22 21次阅读
    边聊安全 | FMEDA实践干货,手把手带你<b class='flag-5'>分析</b>

    HarmonyOSAI编程单元测试用例

    根据选中的ArkTS方法名称,CodeGenie支持自动生成对应单元测试用例,提升测试覆盖率。 在ArkTS文档中,光标放置于方法名称上或框选完整的待测试方法代码块,右键选择CodeGenie
    发表于 08-27 14:33

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

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

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

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

    新能源车软件单元测试深度解析:自动驾驶系统视角

    FGSM攻击生成干扰图像)和神经元覆盖率指标(如DeepXplore框架),确保模型在极端输入下的可靠性。 ‌测试用例设计方法论‌ ‌ 故障树分析(FTA): ‌针对制动失效等高风险场景,逆向推导
    发表于 05-12 15:59

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

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

    时域网络分析仪如何检测电缆故障?

    时域网络分析仪通过时域反射(TDR)技术来检测电缆故障,其原理和具体检测步骤如下:原理时域网络分析仪基于电磁波在电缆中的传播特性来检测故障。
    发表于 04-29 14:37

    【JVM开发者必看】IntelliJ IDEA代码分析实践指南:实时纠错、冗余检测、自动修复等

    【IntelliJ IDEA中的代码分析技巧】静态代码分析是指在不实际运行代码的情况下扫描代码
    的头像 发表于 03-13 10:34 872次阅读
    【JVM开发者必看】IntelliJ IDEA<b class='flag-5'>代码</b><b class='flag-5'>分析</b>实践指南:实时纠错、冗余<b class='flag-5'>检测</b>、自动修复等

    芯片制造中薄膜厚度量测的重要性

    本文论述了芯片制造中薄膜厚度量测的重要性,介绍了量测纳米级薄膜的原理,并介绍了如何在制造过程中融入薄膜量测技术。
    的头像 发表于 02-26 17:30 2440次阅读
    芯片制造中薄膜厚<b class='flag-5'>度量</b>测的重要性