MISRA C:2012 Rule 2.2
A project shall not contain dead code
描述
规则定义
A project shall not contain dead code 1 .
理由
如果一个运算可以被访问,但删除该运算不会影响程序的行为,则该运算构成死代码。
死代码的存在可能表明程序逻辑中存在错误。由于编译器可以删除死代码,因此死代码的存在可能会给代码评审人员带来困惑。
Polyspace 实现
规则检查器报告不会影响程序行为的运算中的规则违规。最常见的情况是,某个运算的结果在后续运算中并未被使用。例如:
您可能会执行一个运算,但没有将结果赋值给一个变量,即使是临时变量。
您可以将一个运算的结果赋值给一个变量,但之后可能不会使用该变量。
您可以为变量赋值,但随后并不使用该值。有关更多详细信息,请参阅
写入后未被读取
。您可以将运算结果赋给一个变量,但随后立即覆盖该变量的值。
其他不常见的情况包括调用空函数或冗余常量运算。其中一些涉及常量的运算出现在生成的代码中,可能会被编译器优化掉。例如,运算 2u * 1u
是一个冗余运算,编译器很可能会将其优化为 2u
。也就是说,该运算在运行时不太可能发生。无论编译器是否进行了优化,规则检查器都会报告该运算违反了规则。
Polyspace® 未报告以下内容违反此规则:
未使用的参数声明。未使用的定义违反了 MISRA C:2012 规则 2.3。
未使用非
void
函数的返回值,因为该函数除了返回值之外可能还有其他副作用。删除函数调用可能会影响程序行为。一个用于在代码中使用其结果的转换运算符。
故障排除
如果您预期会出现违规,但未看到该违规,请参阅诊断为何编码规范违规未按预期显示。
示例
检查信息
组:未使用的代码 |
类别:必需 |
AGC 类别:必需 |
版本历史记录
在 R2014b 中推出1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.