データフロー分析
データフロー分析 (英語) (DFA) は、コード内のデータの流れを追跡し、その分析に基づいて潜在的な問題を検出します。 例: DFA チェックでは、常に偽または常に真である条件、無限ループ、欠落した return ステートメント、無限再帰、その他の潜在的な脆弱性を特定できます。

CLion のデータフロー分析はコールコンテキストに依存します:
各機能は、コールサイトごとに個別に分析されます。
さまざまな呼び出しサイトのパラメーターと戻り値も個別に分析されます。
DFA は、グローバル(プログラムの翻訳ユニット全体を分析用の単一ユニットとして使用)またはローカル(単一の機能内)で機能します。
グローバル DFA は、変換ユニット内でローカルであることが保証されている関数またはフィールドのすべての使用箇所で機能します。 これは、ローカル DFA ではキャプチャーできない潜在的な問題を検出できます。
例: グローバル DFA を使用したダングリングポインター分析では、別の関数でメモリが削除された場合をキャプチャーできます。

CLion では、 グローバル DFA はデフォルトで有効になっていますが、次の場合はローカルモードにフォールバックします。
Clangd によって報告された翻訳単位内のいずれかの関数にエラーがあります。
ファイルは別の翻訳単位に含まれています。
グローバル DFA は、レジストリキー clion.dfa.global を介して手動でオフにされます(重大なリグレッションに直面しない限り、これは推奨されません)。
一部の DFA インスペクションはグローバルとローカルの両方で機能しますが、次の 3 つはグローバル DFA でのみ使用できます: 定数関数の結果、 定数パラメーター、 到達不能な関数の呼び出し。