数据流分析
数据流分析 (DFA)跟踪代码中的数据流,并基于该分析检测潜在问题。 例如,DFA 检查可以识别始终为假或始终为真的条件、无限循环、缺失的返回语句、无限递归以及其他潜在漏洞。

CLion 中的数据流分析是调用上下文敏感的:
每个函数会针对每个调用点单独分析,
不同调用点的参数和返回值也会单独分析。
DFA 可以全局工作(将程序的整个翻译单元作为单一分析单元)或局部工作(在单个函数内)。
全局 DFA 在翻译单元内对所有保证是本地的函数或字段的用法进行分析。 这有助于检测局部 DFA 无法捕获的潜在问题。
例如,使用全局 DFA 的 悬空指针分析可以捕获内存在另一个函数中被删除的情况:

在 CLion 中, 全局 DFA 默认启用,但在以下情况下会回退到局部模式:
翻译单元中的任何函数存在 Clangd报告的错误。
文件被包含在另一个翻译单元中。
通过注册表键 clion.dfa.global手动关闭全局 DFA(除非遇到严重的回归问题,否则不建议这样做)。
部分 DFA 检查可以同时在全局和局部模式下工作,而以下三种仅在全局 DFA 中可用: 常量函数结果、 常量参数 和 不可达函数调用。
最后修改日期: 2025年 9月 26日