ファイルごとに個別に実行するのではなく、cppプロジェクトフォルダ全体に対してclang-format --style=Webkit
のようなものを呼び出す方法はありますか?
私はclang-format.py
とvim
を使用してこれを行っていますが、これを一度適用する方法があると思います。
どうですか:
clang-format -i -style=WebKit *.cpp *.h
プロジェクトフォルダ内。 -iオプションは、それをインプレースにします(デフォルトでは、フォーマットされた出力はstdoutに書き込まれます)。
残念ながら、clang-formatを再帰的に適用する方法はありません。 *.cpp
は、現在のディレクトリ内のファイルにのみ一致し、サブディレクトリには一致しません。 **/*
は機能しません。
幸いなことに、解決策があります。すべてのファイル名をfind
コマンドで取得し、パイプで接続します。たとえば、すべての.h
および.cpp
ディレクトリ内のファイルfoo/bar/
再帰的に、あなたはできる
find foo/bar/ -iname *.h -o -iname *.cpp | xargs clang-format -i
詳細については、 here を参照してください。
最初に.clang-format
ファイルが存在しない場合は作成します。
clang-format -style=WebKit -dump-config > .clang-format
好みの定義済みスタイルを選択するか、結果の.clang-format
ファイルを編集します。
次に実行します:
find . -regex '.*\.\(cpp\|hpp\|cc\|cxx\)' -exec clang-format -style=file -i {} \;
cpp
、hpp
、cc
、およびcxx
以外のファイル拡張子を正規表現で使用できますが、必ず\|
で区切ってください。
私は最近、あなたが必要とするものを正確に実行するbashスクリプトを見つけました:
https://github.com/eklitzke/clang-format-all
これは、コードで
clang-format -i
を実行するbashスクリプトです。特徴:
- Ubuntu/Debian上の
clang-format
への正しいパスを見つけます。これはclang-format
ファイル名でLLVMバージョンをエンコードします- ファイルを再帰的に修正します
- C/C++プロジェクトで使用される最も一般的なファイル拡張子を検出します
Windowsでは、Git BashとWSLで正常に使用しました。
Windowsユーザーの場合:Powershell 3.0をサポートしている場合、次のことができます。
Get-ChildItem -Path . -Directory -Recurse |
foreach {
cd $_.FullName
&clang-format -i -style=WebKit *.cpp
}
注1:スクリプトの前後で同じ現在のディレクトリを使用する場合は、pushd .
およびpopd
を使用します
注2:スクリプトは現在の作業ディレクトリで動作します
注3:本当に重要な場合は、おそらく1行で記述できます
次のコマンドを使用して、現在のフォルダー再帰的にの下にあるすべてのObjective-Cファイルをフォーマットしています。
$ find . -name "*.m" -o -name "*.h" | sed 's| |\\ |g' | xargs clang-format -i
.bash_profile
で次のエイリアスを定義して、物事を簡単にしました。
# Format objC files (*.h and *.m) under the current folder, recursively
alias clang-format-all="find . -name \"*.m\" -o -name \"*.h\" | sed 's| |\\ |g' | xargs clang-format -i"