C/C++ インスペクションのリスト
データフロー分析
インスペクション | 説明 | デフォルトの重大度 |
---|---|---|
定数条件 | メソッド制御とデータフローを分析して、常に true または false である条件と静的に定数値を持つ式を報告します。 | |
定数関数の結果 | 戻り値が常に同じ定数に等しい関数を検出します。 | |
定数パラメーター | パラメーターが常に同じ定数に等しい関数を検出します。 | |
ぶら下がりポインタ | 無効なデータを指すポインターを検出します。一般的なケースは、double-free および use-after-free の問題です。制限のリストについては、この親チケット(英語)を確認してください。 | |
無限ループ | 例外をスローすることによってのみ中断できる | |
無限再帰 | 関数が無限再帰を生成するタイミングを検出します。 | |
スコープをエスケープするローカル値 | 関数をエスケープするローカル値への参照を報告します。 | |
ループ内で更新されないループ条件 | 無限ループの原因となる可能性があるループ内でループ条件が更新されない状況を検出します。 Clang-Tidy、 | |
メモリリーク | アクセスできなくなる前に解放されなかったメモリ割り当て ( 詳細は、インスペクション: メモリリークを参照してください。 | |
初期化されていないフィールド | 初期化と使用が別の関数で行われる場合を含め、使用前に初期化されていない可能性があるフィールドをレポートします。 | |
null 逆参照 | | |
到達不能な関数の呼び出し | 呼び出しサイトが実行されない関数を検出します。 | |
到達不能コード | 実行されないコード(デッドコード)を検出します。 | |
未使用のローカル変数 | 宣言されているが使用されておらず、読み取りのためにアクセスされていない変数を検出します。 | |
未使用のパラメーター | 宣言されているが使用されておらず、読み取りのためにアクセスされていないパラメーターを検出します。 | |
未使用の値 | 割り当て後に変数の値が使用されないケースを報告します。 未使用の変数初期化子について警告するチェックボックスをオフにして、デフォルトの変数初期化子のインスペクションを無効にします(たとえば、ポインター型の変数に ![]() | |
関数
インスペクション | 説明 | デフォルトの重大度 |
---|---|---|
非仮想関数の隠蔽 | 関数が基本クラスから同じシグネチャーを持つ非仮想関数を非表示にしたことを報告します。 | |
実装されていない関数 | 関数が宣言されているが定義されていないことを検出します。 | |
一般
インスペクション | 説明 | デフォルトの重大度 |
---|---|---|
引数選択の欠陥 | 呼び出し内の引数の名前と宣言内の仮パラメーター名を比較して、引数の偶発的な切り替えなどのエラーを検出します。 詳細は、インスペクション: 引数選択の欠陥を参照してください。 | |
Clangd エラーと警告 | Clangd からのエラーと警告を報告します。このインスペクションは、入力時にエディターで機能します。また、と、結果の要約を取得することもできます。 を使用してインスペクションを手動で実行する | |
空の宣言またはステートメント | 安全に削除できる冗長な空の宣言とステートメントを報告します。 | |
一貫性のないネーミング | シンボルが現在選択されている命名規則に違反したときに報告します。 詳細については、命名規則の違反についてコードをインスペクションするを参照してください。 | |
プリプロセッサーディレクティブコメント | プリプロセッサーの | |
簡略化可能なステートメント | 次のタイプのステートメントを簡略化することを提案します。
| |
制約のない変数型 | 制約された式または関数呼び出しの結果が割り当てられている場合、 このインスペクションは、Windows ではデフォルトで無効になっており、 | |
コンストラクターまたはデストラクターからの仮想呼び出し | 仮想関数がコンストラクターまたはデストラクターから呼び出されたときに報告し、仮想関数がまだ初期化されていないリソースまたはすでに破棄されているリソースにアクセスする状況を防止します。 | |
静的分析ツール
インスペクション | 説明 | デフォルトの重大度 |
---|---|---|
Clang-Tidy | C++ コアガイドライン、コードの最新化、可読性、パフォーマンスの問題に関連するさまざまな clang-tidy チェックを実行します。 詳細は、Clang-Tidy インテグレーションを参照してください。 | |
クレイジー | Qt 関連のクレイジー(英語)チェックを実行します。 | |
MISRA チェック | MISRA(英語) ガイドライン C2012 および C++2008 で定義されたチェックを実行します。現在サポートされているチェックのリスト(英語)を参照してください。 オプションセクションでチェックのリストを調整できます。 ![]() MSVC を搭載した Windows(clang-cl の場合を含む)では、CLion は MISRA C++ チェックのみを表示することに注意してください。MISRA C チェックは、MSVC でサポートされていない | |
未使用コード
インスペクション | 説明 | デフォルトの重大度 |
---|---|---|
未使用の概念 | 使用されることのない C++ の概念を検出します。 | |
未使用のグローバル宣言 | グローバル関数またはグローバル変数が宣言されているが、アクセスまたは書き込みされていないことを検出します。 | |
未使用の include ディレクティブ | 安全に削除できる未使用または不要な 詳細は、インスペクション: 未使用の include ディレクティブを参照してください。 | |
未使用のマクロ | コードで使用されないマクロ定義を検出します。 | |
未使用の構造体 | 決して使用されない C/C++ クラスおよび構造を検出します。 | |
未使用のテンプレートパラメーター | 決して使用されない C++ クラスおよび関数テンプレートパラメーターを検出します。 | |
未使用の型エイリアス | 使用されない |
関連ページ:
![](https://resources.jetbrains.com/help/img/idea/2024.1/cl_dfa_dangling_iterator.png)
データフロー分析
データフロー分析 (DFA) は、コード内のデータの流れを追跡し、その分析に基づいて潜在的な問題を検出します。例: DFA チェックでは、常に偽または常に真である条件、無限ループ、欠落した return ステートメント、無限再帰、その他の潜在的な脆弱性を特定できます。CLion のデータフロー分析は、コールコンテキストに依存します。各機能は、コールサイトごとに個別に分析されます。さまざまな呼び出しサイトのパラメーターと戻り値も個別に分析されます。DFA は、グローバル(プログラムの翻訳ユニット全体...
![](https://resources.jetbrains.com/help/img/idea/2024.1/cl_clangtidy_settings.png)
Clang-Tidy インテグレーション
Clang-Tidy は静的コード解析のための Clang ベースのツールです: CLion は、Clang-Tidy チェックを独自のコードインスペクションと同じ方法で表示し、-button またはを介してクイックフィックスを利用できます。Clang-Tidy の一般的な設定:Clang-Tidy チェックはデフォルトで有効になっており、エディターで警告 (または別の重大度レベルのメッセージ) として表示できます。すべてのチェックがデフォルトで有効になっているわけではないことに注意してくださ...
![](https://resources.jetbrains.com/help/img/idea/2024.1/cl_inspection_allocatedmemoryleaked.png)
インスペクション: メモリリーク
データフロー分析の一部として、CLion はメモリリークインスペクションを提供します。これは、メモリリークの可能性を検出し、その原因を特定できます。メモリリークインスペクションは、割り当て解除されたメモリを指す可能性のあるポインターも報告します。このインスペクションの重大度とスコープは、(ノード) で変更できます。インスペクション: 未使用の include ディレクティブインスペクション: 重複を分析 (JS、TS、HTML、XML)...
![](https://resources.jetbrains.com/help/img/idea/2024.1/cl_asd_inspection.png)
インスペクション: 引数選択の欠陥
同じ型の複数のパラメーターを使用して関数を呼び出すと、誤って交換する可能性があるため、デバッグが困難なエラーが発生する可能性があります。引数選択の欠陥インスペクションは、コードをコンパイルすることなく、このようなエラーを明らかにして迅速に修正できます(元のヒューリスティックアルゴリズムはこの研究論文にあります)。このインスペクションはデフォルトで有効になっています。その重大度とスコープを構成するか、インスペクション設定ダイアログでインスペクションをオフにすることができます(C/C++、一般、引数...
![](https://resources.jetbrains.com/help/img/idea/2024.1/cl_clangd_settings.png)
Clangd
Clangd は、追加の C++ 言語エンジンとして CLion で使用されます (C++ サポートを参照)。このダイアログでは、特定の設定を構成し、エンジンに使用されている LLVM Clang リビジョンを確認できます。clangd からのエラーと警告を表示するこのチェックボックスを選択すると、CLion のコードエラーの代わりにエディターに表示される Clangd の警告とエラーがオンになります。チェックボックスのフィールドを使用して、有効にしたい Clangd からの警告のリストを指定し...
![](https://resources.jetbrains.com/help/img/idea/2024.1/cl_problems_in_tw.png)
インスペクションを実行する
CLion は、エディターで開かれたファイル内のコードを分析し、入力時に問題のあるコードをハイライトします。さらに、選択したファイル範囲に対して必要なインスペクションまたは一連のインスペクションを手動で実行できます。この場合、ファイル内で検出されたすべての問題に関する包括的なレポートが得られます。現在のファイルの即時分析:IDE は継続的にコードをチェックし、問題を検索します。エディターの右上隅にあるウィジェットには、現在のファイルで検出された各重大度の問題の数が表示されます。ウィジェットをク...