死代码检测和覆盖与Polyspace

Polyspace工具可以帮助您识别软件中失效或不可访问的代码。这节省了时间并降低了与健壮性和完整代码覆盖相关的测试活动相关的成本。Polyspace产品提供的关于软件运行时行为的详细信息证明了死代码的存在,并帮下载188bet金宝搏助您跟踪控制和数据流到潜在的源。当符合DO 178 B/C、ISO 26262、IEC 61508和IEC 62304等行业标准时,这一点尤为重要。

死代码是应用程序中永远无法执行的部分。常见的原因包括:

  • 条件分支中的编程错误
  • 永远无法到达的代码,因为输入数据永远不会导致执行特定的分支
  • 调试构造和其他非功能代码
  • 为不同的运行时场景设计的可重用组件

应用程序中死代码的存在可能会导致严重的后果,因为它可能是隐藏错误的来源。死代码还意味着代码效率低,因为它会增加可执行文件的大小,这对嵌入式应用程序尤其重要。也可以是法律含义

死代码的简单例子。
通过测试实现完整代码覆盖的成本。

Polyspace产下载188bet金宝搏品可以帮助您找到死代码,优化测试周期,并缩短整体验证周期。这是很重要的,因为它减少了工程师试图达到100%代码覆盖率所花费的时间,并且节省了测试和开发资源的时间。对于必须遵守DO 178 B/C等标准的高完整性和安全关键应用程序来说,尤其如此。

DO-178B/ED-12B定义死码和失活码如下:

  • 死代码-可执行的目标代码(或数据),由于设计错误,不能在目标计算机环境的操作配置中执行(代码)或使用(数据),且无法追踪到系统或软件需求。一个例外是嵌入式标识符。
  • 未激活代码-可执行的目标代码(或数据),其设计为(a)不打算执行(代码)或使用(数据),例如,先前开发的软件组件的一部分;或(b)仅在目标计算机环境的某些配置中执行(代码)或使用(数据),例如,由硬件引脚选择或软件编程选项启用的代码。

实际上,DO-178B/ED-12B要求删除任何失效代码,并要求对失效代码进行验证,以证明它不会被无意中激活。因此,测试的成本非常高。识别死代码也是一个很好的开发实践,与认证要求无关,因为研究表明,死代码和失效代码是隐藏缺陷和运行时错误的来源。Polyspace产下载188bet金宝搏品可以帮助您优化测试周期,缩短整体验证周期。

使用Polyspace Bug Finder识别不可访问的代码

即使在运行单个测试用例之前,您也可以使用Polyspace代码验证工具在模块级别或整个应用程序中识别不可访问的代码。如下图所示,与Polyspace错误发现者™您可以在IDE(比如Eclipse)中检测代码中不可访问的部分®.这还有助于您考虑应用程序中任何此类死代码的含义,并使您能够在第一时间进行更改。

在Eclipse IDE中使用Polyspace Bug Finder在编译时识别死代码。

用多空间码证明器证明死码的存在性

Polyspace代码验证™使您能够证明死代码的存在,因为它提供了数学证明,突出显示在应用程序中的任何代码路径和任何变量值组合都没有执行代码的某个部分。通过形式化方法和抽象解释技术,Polyspace Code Prover以接近零的假阳性率证明应用程序中的死代码。

在Polyspace code验证程序中存在死代码的证明,包括关于问题原因的详细信息。

您可以使用详细的检查信息来进一步了解这种冗余的原因。它可能会发现在需求捕获过程中没有识别的缺失的需求,或者没有与任何测试用例相关联的需求。数据范围规范允许您标识上下文验证的参数范围,也允许您标识死代码和停用代码。

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

此外,Polyspace产品与VectorCa下载188bet金宝搏st等代码覆盖工具集成良好,可以导入Polyspace产品验证的结果,并使用结果来补充其代码覆盖解决方案。

代码覆盖率是用来量化软件应用程序是否经过了彻底的测试并且包含错误的可能性更低的度量。结构代码覆盖率主要用于指示何时完成了适当的测试。因为不可能测试所有可能的运行时场景,100%的代码覆盖率指的是已经测试到可接受水平的软件。死代码的存在使得不可能达到100%的代码覆盖率,并导致在编写不必要的测试用例方面投入大量的时间和精力。

Polyspace工具生成并合成有用的代码指标,准确反映代码质量。可以使用基于web的仪表板查看这些指标。通过这个内置特性,您可以访问各种指标,如运行时错误、代码复杂性和编码规则违反。使用这些度量,当代码从第一次迭代发展到最终交付版本时,您可以跟踪您朝着预定义的软件质量目标的进展。您还可以度量您对代码库所做的任何代码更改的增量影响,例如由于更改而引入的任何死代码。

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

额外的资源

阿莱尼亚·马基公司

“对我们来说,基于模型的设计的一个关键优势是能够专注于设计和开发,而不是低级的编码、验证和认证任务。其结果是更高的质量,通过DO-178B认证的软件,以及更快的迭代。”