コンテンツにスキップ

LLVM/clang-apply-replacements

出典: フリー教科書『ウィキブックス(Wikibooks)』

はじめに

[編集]

clang-apply-replacementsは、Clangツールチェインの一部として提供されるコマンドラインツールであり、Clangツール(clang-tidy など)によって生成されたソースコードの修正提案を適用するために使用されます。本ハンドブックでは、clang-apply-replacements(1)の基本的な使い方から応用例までを解説します。

Clang-Apply-Replacementsの概要

[編集]

Clang-Apply-Replacementsとは

[編集]
  • clang-apply-replacementsは、Clangのリファクタリングツールや静的解析ツールが生成する修正情報を適用するツールです。
  • 修正情報はYAML形式のリプレースメントファイルとして保存され、clang-tidy などのツールが生成します。
  • 手動でコードを変更する必要がなく、大規模なコードベースに対する一括修正が可能です。

Clang-Apply-Replacementsのインストール

[編集]

FreeBSDでのインストール

[編集]

FreeBSDのベースシステムにはclang-apply-replacementsは含まれていないので、パッケージをインストールします。

doas pkg install llvm

macOSでのインストール

[編集]
$ brew install llvm

Linuxでのインストール (例: Debian系)

[編集]
$ sudo apt install clang-tools

基本的な使い方

[編集]

修正提案の適用

[編集]
  1. clang-tidy などを使用して修正提案を生成する:
    $ clang-tidy -fix -export-fixes=fixes.yaml source.cpp
    
  2. clang-apply-replacements を使用して修正を適用する:
    $ clang-apply-replacements .
    
    . はカレントディレクトリ内の修正ファイルを適用することを意味します。

修正の適用対象を指定

[編集]

特定のディレクトリ内の修正を適用したい場合:

$ clang-apply-replacements path/to/project

デバッグ出力の有効化

[編集]

適用される修正を確認するため、詳細な出力を有効にすることができます。

$ clang-apply-replacements -debug .

主要オプション

[編集]
主要オプション
オプション 説明
-overwrite 元のファイルを直接書き換える
-style=file clang-format のスタイル設定を適用
-debug デバッグ出力を有効化
-remove-change-desc-files 適用後にリプレースメントファイルを削除

応用例

[編集]

大規模なコードベースへの適用

[編集]

複数のファイルに対して一括修正を適用するには、プロジェクトディレクトリを指定します。

$ clang-apply-replacements my_project/

CI/CDでの自動適用

[編集]

CI/CDパイプラインでclang-tidyと組み合わせてコード品質を維持できます。

$ clang-tidy -fix -export-fixes=fixes.yaml my_project/**/*.cpp
$ clang-apply-replacements my_project/

まとめ

[編集]

本ハンドブックでは、clang-apply-replacementsの基本的な使い方、主要オプション、応用例について解説しました。clang-tidy などのClangツールと組み合わせることで、コードの品質向上やリファクタリングの効率化を実現できます。

参考資料

[編集]