CLion 2025.2 Help

数据流分析

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

悬空迭代器

CLion 中的数据流分析是调用上下文敏感的:

  • 每个函数会针对每个调用点单独分析,

  • 不同调用点的参数和返回值也会单独分析。

DFA 可以全局工作(将程序的整个翻译单元作为单一分析单元)或局部工作(在单个函数内)。

全局 DFA 在翻译单元内对所有保证是本地的函数或字段的用法进行分析。 这有助于检测局部 DFA 无法捕获的潜在问题。

例如,使用全局 DFA 的 悬空指针分析可以捕获内存在另一个函数中被删除的情况:

使用全局 DFA 的悬空指针检查

在 CLion 中, 全局 DFA 默认启用,但在以下情况下会回退到局部模式:

  • 翻译单元中的任何函数存在 Clangd报告的错误。

  • 文件被包含在另一个翻译单元中。

  • 通过注册表键 clion.dfa.global手动关闭全局 DFA(除非遇到严重的回归问题,否则不建议这样做)。

部分 DFA 检查可以同时在全局和局部模式下工作,而以下三种仅在全局 DFA 中可用: 常量函数结果常量参数不可达函数调用

最后修改日期: 2025年 9月 26日