由于 goto 或 break 语句导致的死代码¶
ID: cpp/dead-code-goto
Kind: problem
Security severity:
Severity: warning
Precision: high
Tags:
- maintainability
- external/cwe/cwe-561
Query suites:
- cpp-security-and-quality.qls
紧随 goto
或 break
语句之后的代码将不会执行,除非存在标签或 switch case 语句。如果代码是必要的,则会导致逻辑错误或资源泄漏。如果代码是不必要的,则可能会混淆阅读者。
建议¶
如果无法访问的代码是必要的,请将 goto
或 break
语句移到代码之后。否则,请删除无法访问的代码。
示例¶
goto err1;
free(pointer); // BAD: this line is unreachable
err1: return -1;
free(pointer); // GOOD: this line is reachable
goto err2;
err2: return -1;
参考资料¶
CERT C 安全编码标准:MSC12-C. 检测和删除没有效果或从不执行的代码.
常见漏洞枚举:CWE-561.