Dead code
和Deactivated code
as per和有什么不一样DO178-b
?
请提供一些例子来突出差异。
死代码 - 由于设计错误而无法在目标计算机环境的操作配置中执行(代码)或使用(数据)并且无法追溯到系统或软件要求的可执行目标代码(或数据) . 一个例外是嵌入式标识符。资源
这意味着死代码是:
注意:未调用的未引用变量/函数不是死代码,因为它们会通过编译器/链接器自动删除。
例子:
if (true) {
// always chosen
} else {
// never chosen -> Dead code
}
停用的代码 - 设计为 (a) 不打算执行(代码)或使用(数据)的可执行目标代码(或数据),例如,先前开发的软件组件的一部分;(b) 仅在目标计算机环境的某些配置中执行(代码)或使用(数据),例如,通过硬件引脚选择或软件编程选项启用的代码。资源
这意味着停用的代码是:
例子:
if (!option9) { // Anything but option 9 will lead to this path being chosen
// Code
} else {
// Code to be executed in the event that option 9 is selected
}
注意:停用的代码可以有各种形状,这不是它必须看起来的样子。它基本上只是不总是执行的简单代码,只有在满足某些条件时才执行。
第一个答案中引用的段落逐字逐句地来自 DO-178B 指南,因此这是一个很好的开始。
但是,关于死代码的注释并不完全准确。它是编译器取决于这些类型的东西是否被删除。有些是自动完成的。有些人可以选择做或不做,而有些人甚至没有选择。
我们在设计中使用了相当多的停用代码,因为我们有通用算法,这些算法使用可配置参数来激活一个客户与另一个客户的某些方面。
两者之间的最大区别在于是否有预期的配置将执行所编写的代码。如果有,并且它不属于您的特定项目,那么它将被停用。如果没有可以执行代码的配置,则认为它已死。
如果您尝试开发可重用的软件(如设备驱动程序),而设备的某些功能不打算在初始项目中使用,这会有点棘手。如果您对未使用的代码有需求并开发测试,并且这些代码被执行和测试,那么可以说代码被停用,直到创建将使用它的未来项目的配置。如果代码在原始配置中无意执行,有需求和测试应该可以减轻对代码的担忧。