0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

.clang-tidy 設定項目

0
Posted at

clang-tidy

.clang-tidy は、clang-tidy の静的解析ルールやコーディング規約をプロジェクト単位で管理する設定ファイルです。YAML形式で記述し、コード品質の維持やチーム内のコーディングルール統一に利用されます。

主な役割

  • バグの検出
  • パフォーマンス改善提案
  • Modern C++ への移行支援
  • コーディング規約の統一
  • CI/CDでの品質ゲート

1. Checks

概要

有効化するチェックルールを指定します。

Checks: >
  -*,
  bugprone-*,
  modernize-*,
  performance-*

意味:

  • すべてのチェックを無効化
  • bugprone-*
  • modernize-*
  • performance-*

を有効化

Checks: >
  -*,
  clang-analyzer-*,
  bugprone-*
  • ✅ 静的解析
  • ✅ バグ検出
  • ❌ 命名規則チェック
  • ❌ Modern C++ チェック
  • ❌ パフォーマンスチェック
Checks: >
  -*,
  readability-*

コードスタイルのみをチェックします。

if(a==b){
}

if (a == b)
{
}

カテゴリ

カテゴリ 内容
bugprone-* バグ検出
modernize-* C++11/14/17への移行支援
performance-* パフォーマンス改善
readability-* 可読性向上
cppcoreguidelines-* C++ Core Guidelines
portability-* 移植性チェック
clang-analyzer-* LLVM静的解析
cert-* CERTセキュリティ規約
misc-* その他

2. WarningsAsErrors

警告をエラーとして扱います。

WarningsAsErrors: >
  bugprone-*,
  performance-*

例:

warning:

error:

CI/CD(Azure DevOps、GitHub Actionsなど)でビルド失敗にできます。


3. HeaderFilterRegex

解析対象のヘッダーファイルを制限します。

HeaderFilterRegex: "src/.*"

例:

src/a.h          → 解析対象
ThirdParty/*.h   → 対象外

通常はサードパーティライブラリを除外するために使用します。

HeaderFilterRegex: "MyProject.*"

4. AnalyzeTemporaryDtors

一時オブジェクトのデストラクタを解析するかを指定します。

AnalyzeTemporaryDtors: true

例:

Foo().Close();

リソース解放処理などを含むデストラクタまで解析します。

通常の大規模プロジェクトではデフォルトの false で十分です。


5. FormatStyle

自動修正時のフォーマット方式を指定します。

FormatStyle: none

フォーマットを変更しません。

FormatStyle: file

.clang-format を参照して整形します。

例:

if(a){
}

if (a)
{
}

主な値:

  • none
  • file
  • llvm
  • google
  • mozilla
  • chromium

企業開発では file が一般的です。


6. User

ユーザー名を指定します。

User: AA

自動生成コメントなどに使用されます。

例:

Generated by AA

通常はあまり使用しません。


7. UseColor

コンソール出力の色付けを制御します。

UseColor: true
  • 赤:エラー
  • 黄:警告
  • 緑:情報

CI環境では無効化することが多いです。


8. CheckOptions

各チェックルールの動作を細かく設定します。

代表例は readability-identifier-naming です。

クラス名

CheckOptions:
  - key: readability-identifier-naming.ClassCase
    value: CamelCase
class myclass {};
//変更後
class MyClass {};

関数名

FunctionCase: camelBack
void TEST();

//変更後
void test();

変数名

VariableCase: lower_case
int TestValue;

//変更後
int test_value;

プライベートメンバー接頭辞

PrivateMemberPrefix: m_

int value;
//変更後
int m_value;

プライベートメンバー接尾辞(Google Style)

PrivateMemberSuffix: _
int value_;

9. HeaderFileExtensions

ヘッダーファイルとして扱う拡張子を指定します。

HeaderFileExtensions:
  - h
  - hpp

例:

.h
.hpp

をヘッダーとして認識。


10. ImplementationFileExtensions

ソースファイルとして扱う拡張子を指定します。

例:

ImplementationFileExtensions:
  - cpp
  - cc
  - cxx

11. InheritParentConfig

親ディレクトリの設定を継承します。

InheritParentConfig: true

例:

Project/
 └─ .clang-tidy

src/
 └─ .clang-tidy

src の設定が親の .clang-tidy を継承します。

大規模プロジェクトでよく利用されます。


12. CustomChecks(LLVM 18以降)

独自ルールを定義できます。

例:

  • メンバー変数は必ず m_ で始める
  • 独自コーディング規約を強制する

高度な利用方法です。


CheckOptions

設定項目 用途
ClassCase クラス名
FunctionCase 関数名
VariableCase 変数名
PrivateMemberPrefix メンバー接頭辞
PrivateMemberSuffix メンバー接尾辞
NamespaceCase 名前空間
MacroDefinitionCase マクロ名
EnumConstantCase 列挙値
GlobalConstantPrefix グローバル定数接頭辞

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?