CLion 2024.1 ヘルプ

C/C++ インスペクションのリスト

データフロー分析

インスペクション

説明

デフォルトの重大度

定数条件

メソッド制御とデータフローを分析して、常に true または false である条件と静的に定数値を持つ式を報告します。

Warning 警告

定数関数の結果

戻り値が常に同じ定数に等しい関数を検出します。

Warning 警告

定数パラメーター

パラメーターが常に同じ定数に等しい関数を検出します。

Warning 警告

ぶら下がりポインタ

無効なデータを指すポインターを検出します。一般的なケースは、double-free および use-after-free の問題です。制限のリストについては、この親チケット(英語)を確認してください。

Warning 警告

無限ループ

例外をスローすることによってのみ中断できる forwhilegoto ステートメントを検出します。

Warning 警告

無限再帰

関数が無限再帰を生成するタイミングを検出します。

Warning 警告

スコープをエスケープするローカル値

関数をエスケープするローカル値への参照を報告します。

Warning 警告

ループ内で更新されないループ条件

無限ループの原因となる可能性があるループ内でループ条件が更新されない状況を検出します。

Clang-Tidyclang-tidy:bugprone-infinite-loop にも同様のインスペクションがあります。ただし、ラムダや参照がある場合、終了ポイントのあるループはカバーされず、誤検知が発生します。このチェックは、CLion のデフォルトの Clang-Tidy プロファイル(英語)では無効になっています。

Warning 警告

メモリリーク

アクセスできなくなる前に解放されなかったメモリ割り当て (new 演算子または malloc() 関数) を報告します。

詳細は、インスペクション: メモリリークを参照してください。

Warning 警告

初期化されていないフィールド

初期化と使用が別の関数で行われる場合を含め、使用前に初期化されていない可能性があるフィールドをレポートします。

Warning 警告

null 逆参照

nullptr を含む可能性のあるポインタの逆参照を検出します。

Warning 警告

到達不能な関数の呼び出し

呼び出しサイトが実行されない関数を検出します。

Warning 警告

到達不能コード

実行されないコード(デッドコード)を検出します。

Warning 警告

未使用のローカル変数

宣言されているが使用されておらず、読み取りのためにアクセスされていない変数を検出します。

Warning 警告

未使用のパラメーター

宣言されているが使用されておらず、読み取りのためにアクセスされていないパラメーターを検出します。

Warning 警告

未使用の値

割り当て後に変数の値が使用されないケースを報告します。

未使用の変数初期化子について警告するチェックボックスをオフにして、デフォルトの変数初期化子のインスペクションを無効にします(たとえば、ポインター型の変数に nullptr を割り当てたい場合)。

The Unused value inspection settings

Warning 警告

関数

インスペクション

説明

デフォルトの重大度

非仮想関数の隠蔽

関数が基本クラスから同じシグネチャーを持つ非仮想関数を非表示にしたことを報告します。

Warning 警告

実装されていない関数

関数が宣言されているが定義されていないことを検出します。

Warning 警告

一般

インスペクション

説明

デフォルトの重大度

引数選択の欠陥

呼び出し内の引数の名前と宣言内の仮パラメーター名を比較して、引数の偶発的な切り替えなどのエラーを検出します。

詳細は、インスペクション: 引数選択の欠陥を参照してください。

Warning 警告

Clangd エラーと警告

Clangd からのエラーと警告を報告します。このインスペクションは、入力時にエディターで機能します。また、コード | コードのインスペクションを使用してインスペクションを手動で実行すると、結果の要約を取得することもできます。

空の宣言またはステートメント

安全に削除できる冗長な空の宣言とステートメントを報告します。

Warning 警告

一貫性のないネーミング

シンボルが現在選択されている命名規則に違反したときに報告します。

詳細については、命名規則の違反についてコードをインスペクションするを参照してください。

無効

プリプロセッサーディレクティブコメント

プリプロセッサーの #endif コメントがマクロ名と一致しない場合を検索します。

Warning 警告

簡略化可能なステートメント

次のタイプのステートメントを簡略化することを提案します。

  • condition == true

  • condition1? true : condition2

  • if(condition1) return true; return condition2;

  • 同一のブランチのステートメント

  • if(true) または while(false)

Warning 警告

制約のない変数型

制約された式または関数呼び出しの結果が割り当てられている場合、auto として宣言されたローカル変数を制約することを提案します。

このインスペクションは、Windows ではデフォルトで無効になっており、requires 句の構文で宣言された概念ではサポートされていません。

Warning 警告

コンストラクターまたはデストラクターからの仮想呼び出し

仮想関数がコンストラクターまたはデストラクターから呼び出されたときに報告し、仮想関数がまだ初期化されていないリソースまたはすでに破棄されているリソースにアクセスする状況を防止します。

Warning 警告

静的分析ツール

インスペクション

説明

デフォルトの重大度

Clang-Tidy

C++ コアガイドライン、コードの最新化、可読性、パフォーマンスの問題に関連するさまざまな clang-tidy チェックを実行します。

詳細は、Clang-Tidy インテグレーションを参照してください。

Warning 警告

クレイジー

Qt 関連のクレイジー(英語)チェックを実行します。

Warning 警告

MISRA チェック

MISRA(英語) ガイドライン C2012 および C++2008 で定義されたチェックを実行します。現在サポートされているチェックのリスト(英語)を参照してください。

オプションセクションでチェックのリストを調整できます。

MISRA checks settings

MSVC を搭載した Windowsclang-cl の場合を含む)では、CLion は MISRA C++ チェックのみを表示することに注意してください。MISRA C チェックは、MSVC でサポートされていない -std=cXY フラグを介して構成可能な特定の言語標準に適用されるため、正しく表示できません。

Warning 警告

未使用コード

インスペクション

説明

デフォルトの重大度

未使用の概念

使用されることのない C++ の概念を検出します。

Warning 警告

未使用のグローバル宣言

グローバル関数またはグローバル変数が宣言されているが、アクセスまたは書き込みされていないことを検出します。

Warning 警告

未使用の include ディレクティブ

安全に削除できる未使用または不要な include ディレクティブを報告します。

詳細は、インスペクション: 未使用の include ディレクティブを参照してください。

Warning 警告

未使用のマクロ

コードで使用されないマクロ定義を検出します。

Warning 警告

未使用の構造体

決して使用されない C/C++ クラスおよび構造を検出します。

Warning 警告

未使用のテンプレートパラメーター

決して使用されない C++ クラスおよび関数テンプレートパラメーターを検出します。

Warning 警告

未使用の型エイリアス

使用されない using ステートメントを報告します。

関連ページ:

データフロー分析

データフロー分析 (DFA) は、コード内のデータの流れを追跡し、その分析に基づいて潜在的な問題を検出します。例: DFA チェックでは、常に偽または常に真である条件、無限ループ、欠落した return ステートメント、無限再帰、その他の潜在的な脆弱性を特定できます。CLion のデータフロー分析は、コールコンテキストに依存します。各機能は、コールサイトごとに個別に分析されます。さまざまな呼び出しサイトのパラメーターと戻り値も個別に分析されます。DFA は、グローバル(プログラムの翻訳ユニット全体...

Clang-Tidy インテグレーション

Clang-Tidy は静的コード解析のための Clang ベースのツールです: CLion は、Clang-Tidy チェックを独自のコードインスペクションと同じ方法で表示し、-button またはを介してクイックフィックスを利用できます。Clang-Tidy の一般的な設定:Clang-Tidy チェックはデフォルトで有効になっており、エディターで警告 (または別の重大度レベルのメッセージ) として表示できます。すべてのチェックがデフォルトで有効になっているわけではないことに注意してくださ...

インスペクション: メモリリーク

データフロー分析の一部として、CLion はメモリリークインスペクションを提供します。これは、メモリリークの可能性を検出し、その原因を特定できます。メモリリークインスペクションは、割り当て解除されたメモリを指す可能性のあるポインターも報告します。このインスペクションの重大度とスコープは、(ノード) で変更できます。インスペクション: 未使用の include ディレクティブインスペクション: 重複を分析 (JS、TS、HTML、XML)...

インスペクション: 引数選択の欠陥

同じ型の複数のパラメーターを使用して関数を呼び出すと、誤って交換する可能性があるため、デバッグが困難なエラーが発生する可能性があります。引数選択の欠陥インスペクションは、コードをコンパイルすることなく、このようなエラーを明らかにして迅速に修正できます(元のヒューリスティックアルゴリズムはこの研究論文にあります)。このインスペクションはデフォルトで有効になっています。その重大度とスコープを構成するか、インスペクション設定ダイアログでインスペクションをオフにすることができます(C/C++、一般、引数...

Clangd

Clangd は、追加の C++ 言語エンジンとして CLion で使用されます (C++ サポートを参照)。このダイアログでは、特定の設定を構成し、エンジンに使用されている LLVM Clang リビジョンを確認できます。clangd からのエラーと警告を表示するこのチェックボックスを選択すると、CLion のコードエラーの代わりにエディターに表示される Clangd の警告とエラーがオンになります。チェックボックスのフィールドを使用して、有効にしたい Clangd からの警告のリストを指定し...

インスペクションを実行する

CLion は、エディターで開かれたファイル内のコードを分析し、入力時に問題のあるコードをハイライトします。さらに、選択したファイル範囲に対して必要なインスペクションまたは一連のインスペクションを手動で実行できます。この場合、ファイル内で検出されたすべての問題に関する包括的なレポートが得られます。現在のファイルの即時分析:IDE は継続的にコードをチェックし、問題を検索します。エディターの右上隅にあるウィジェットには、現在のファイルで検出された各重大度の問題の数が表示されます。ウィジェットをク...