コード解析

オンザフライ分析

CLionは常にミスがないか、コードを監視しています。 何かが見つかった場合は、 エディタ内の疑わしいコード部分が強調表示されます。 右側のエディタのガターに、 黄色と赤色のエラー切れが表示されます。クリックすると、検出された問題に移動できます。 強調表示された問題間を移動するもう1つの方法はF2/Shift+F2を押すことです。 ガター の上部にあるステータスインジケータは、ファイルのステータスをまとめたものです。

コンパイルエラーの検出のほか、CLionは非効率なコードを発見し、到達不可能または未使用のコードやその他の問題、ならびに「コードの臭い」を見つけるためにコードのデータフロー分析を実行します。

クイックフィックス

CLionのオンザフライでのコードインスペクションは、C/C ++コードにおける約40の問題事例に対応し、他の言語についてもかなりの数の問題に対応しています。

問題が強調表示されたら、その上にキャレットを置き、Alt+Enterを押して、 提案されているクイックフィックスソリューションからソリューションを選択します。 (または、行の横にある電球をクリックして コンテキストメニューを開きます。)

また、プロジェクト中の同様の問題を直すこともできます。 または、このインスペクションが有用でない場合は、希望する範囲に対してインスペクションを抑制することができます。

コードのインスペクション

CLionには、あらゆるインスペクションにおいて詳細な説明があります。 また、重大性を管理したり (Typo、Warning、Errorなどから選択したり)、要件により適合するように 検査のパラメータを調整することもできます。

Code | Inspect Codeを使用して、この一括モードで複数のインスペクションを実行することができます。

コードベース全体から特定の問題を取り除きたい場合は、「Run inspection by name」(Ctrl+Alt+Shift+I)を使用して希望の範囲を選択します。 インスペクション結果が表示された別のウィンドウが開き、そこで課題を再グループ化し、可能な場合は、それらのすべての課題にクイックフィックスを一括して適用できます。

Clang-Tidy

Clang-Tidy

CLionには、Clang-Tidy統合があります。 Clang-Tidyのチェックは、CLion独自の組み込みコードインスペクションと同様の方法で表示されます。また、Alt+Enterを使ってクイックフィックスを利用することもできます。

Settings/Preferences | Editor | Inspections | C/C++ | General | Clang-Tidy に移動して、CLionで有効/無効のチェックリストを調整できます。 Clang-Tidyコマンドラインフォーマットは、テキストフィールドで使用されます。 デフォルトの設定はここで確認できます。 IDEの設定の代わりに、.clang-tidy設定ファイルを使用することもできます。

C++ Core Guidelines または Clang Static Analyzer チェックを有効にするか、Modernize チェックを試すことができます。独自のチェックを実装してすぐに CLion で利用することもできます(独自のチェックの場合は、Settings/Preferences | Languages & Frameworks | C/C++ で Clang-Tidy バイナリを自分のものに変更します)。

Clangdベースのインスペクション

Clangdベースのインスペクション

CLionでは独自のClangdベースのエンジンに加えて、複数のインスペクションが実装されています。

  • メンバー関数を静的にできます
  • Argument selection defects(引数選択欠陥)
  • Empty Declaration or Statement(空の宣言またはステートメント)
  • Virtual call from constructor or destructor(コンストラクタまたはデストラクタからの仮想呼び出し)
  • Unused Includes(未使用のinclude)

「Unused includes」インスペクションは控えめな方法と積極的な方法、そして「使用するものを含める」という原則に最も近いデフォルトの方法(Detect not directly used)の3種類の検出方法を提案します。

詳細情報

DFA

データフロー解析

データフロー解析(DFA)はコード内のデータの流れを追跡し、その解析結果を元に潜在的な問題を検出します。 CLion はローカル DFA(1 つの関数内で動作するもの)のほか、グローバル DFA(プログラムの翻訳単位全体を 1 つの解析単位として扱うもの)にも対応しています。 グローバル DFA は既存のチェックを補強するだけでなく、複数の特殊なインスペクションも追加します。

MISRA

MISRA

CLion 2021.1 には、MISRA C 2012 および MISRA C++ 2008 のチェックが付属しています。 サポート対象のチェックの完全なリストは Confuluence ページで管理されており、容易に対応状況を確認できます。