根据Dead code
,Deactivated code
和DO178-b
之间有什么区别?
请提供一些示例来突出差异。
答案 0 :(得分:3)
死代码 - 可执行目标代码(或数据),由于设计错误,无法在目标计算机环境的操作配置中执行(代码)或使用(数据),并且无法追溯到系统或软件要求。嵌入标识符是一个例外。的 Source 强>
这意味着死代码是:
注意:未被引用的未被引用的变量/函数不是死代码,因为它们会通过编译器/链接器自动删除。
示例:
if (true) {
// always chosen
} else {
// never chosen -> Dead code
}
去激活代码 - 可执行目标代码(或数据),其设计是(a)不打算执行(代码)或使用(数据),例如,先前开发的软件组件的一部分;或者(b)仅在目标计算机环境的某些配置中执行(代码)或使用(数据),例如,由硬件引脚选择或软件编程选项启用的代码。的 Source 强>
这意味着停用的代码为:
示例:
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
}
注意:停用的代码可以有各种形状,这不是它的样子。它基本上只是代码,并不总是执行,只有满足某些条件。
我建议您查看this article,其中包含死代码/停用代码(也恰好是引用文字的来源),以及this external Q&A。
答案 1 :(得分:0)
第一个答案中引用的段落是DO-178B指南的逐字记录,因此这是一个很好的开始。
关于死码的说明并不完全准确。编译器取决于是否删除了这些类型的东西。有些人会自动完成。有些人可以选择是否这样做,而有些人甚至没有选择。
我们在设计中使用了相当少的停用代码,因为我们有一些常用算法,它们使用可配置参数来激活一个客户与另一个客户的某些方面。
两者之间的最大区别在于是否存在将执行代码写入的预期配置。如果有,并且它不是您的特定项目的一部分,那么它将被停用。如果没有可以执行代码的配置,则认为它已经死了。
如果您尝试开发可重用的软件(例如设备驱动程序),当设备的某些功能不打算用于初始项目时,这会变得有点棘手。如果您有需求并为未使用的代码开发测试,并且这些代码被执行和测试,那么可以认为代码被停用,直到创建将使用它的未来项目的配置。如果要在原始配置中无意中执行,那么拥有需求和测试应该可以减轻对代码的担忧。