clang-format --style=Webkit
ファイルごとに個別に実行するのではなく、cppプロジェクトフォルダー全体のようなものを呼び出す方法はありますか?
私はこれを使用clang-format.py
しvim
て実行していますが、これを一度適用する方法があると思います。
clang-format --style=Webkit
ファイルごとに個別に実行するのではなく、cppプロジェクトフォルダー全体のようなものを呼び出す方法はありますか?
私はこれを使用clang-format.py
しvim
て実行していますが、これを一度適用する方法があると思います。
回答:
どうですか:
clang-format -i -style=WebKit *.cpp *.h
プロジェクトフォルダ内。-iオプションを使用すると、インプレースになります(デフォルトでは、フォーマットされた出力はstdoutに書き込まれます)。
**
。
clang-tidy
ですか?
*.cpp
してファイルのリストを生成すると機能するはずです。このclang-tidy
コマンドを使用すると、複数のファイルを渡すことができます。`使用法:clang-tidy [options] <source0> [... <sourceN>]`実際には、これは最善の方法ではないかもしれません。Clang-tidyはより詳細な分析を実行するため、各ファイルなどのコンパイラフラグが必要です。clang-tidyを使用したとき、通常は「コンパイルデータベース」がありました。これは、各ファイルのコマンドと実行されたスクリプトを含むJSONファイルです。その上。それは数年前のことでしたが、今はもっと良い方法があるかもしれません。
残念ながら、clang形式を再帰的に適用する方法はありません。*.cpp
サブディレクトリではなく、現在のディレクトリ内のファイルにのみ一致します。でも**/*
動作しません。
幸いにも、解決策があります:グラブを持つすべてのファイル名find
。コマンドパイプそれらでは、すべてのフォーマットしたい場合たとえば、.h
および.cpp
ディレクトリ内のファイルをfoo/bar/
再帰的に、あなたが行うことができます
find foo/bar/ -iname *.h -o -iname *.cpp | xargs clang-format -i
詳細については、こちらをご覧ください。
**/*.cpp
(かなり現代的な)bashで動作するようです。あなたはshopt -s globstar
前にする必要があるかもしれません。
find
、およびxargs
を使用find ... -print0
しxargs -0 ...
て、すべてのタイプのファイル名が正しく処理されるようにする必要があります。
find foo/bar/ -iname '*.h' -o -iname '*.cpp' | xargs clang-format -i
問題を修正します。
.clang-format
ファイルが存在しない場合は、最初にファイルを作成します。
clang-format -style=WebKit -dump-config > .clang-format
事前定義されたスタイルを選択するか、結果の.clang-format
ファイルを編集します。
clang-formatconfiguratorが役立ちます。
次に、以下を実行します。
find . -regex '.*\.\(cpp\|hpp\|cc\|cxx\)' -exec clang-format -style=file -i {} \;
その他のファイルの拡張子よりcpp
、hpp
、cc
とcxx
だけでそれらを分離することを確認し、正規表現で使用することができます\|
。
-style=file
カスタムファイルパスを指定する方法はありますか?試しましたが-style=~/.clang-format
、うまくいきません。
cp ~/.clang-format .
、次に検索コマンドを実行する関数を作成することです。
最近、必要なことを正確に実行するbashスクリプトを見つけました。
https://github.com/eklitzke/clang-format-all
これは、
clang-format -i
コードで実行されるbashスクリプトです。特徴:
clang-format
LLVMバージョンをclang-format
ファイル名でエンコードするUbuntu / Debianでの正しいパスを見つけます- ファイルを再帰的に修正します
- C / C ++プロジェクトで使用される最も一般的なファイル拡張子を検出します
Windowsでは、GitBashとWSLで正常に使用しました。
次のコマンドを使用して、現在のフォルダーの下にあるすべての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"
最新のbashでは、ファイルツリーを再帰的にクロールできます
for file_name in ./src/**/*.{cpp,h,hpp}; do
if [ -f "$file_name" ]; then
printf '%s\n' "$file_name"
clang-format -i $file_name
fi
done
ここでは、ソースはにあると想定されて./src
おり、.clang-format
にはフォーマット情報が含まれています。
clang-format-3.6 -i -style=file *.cpp *.h *.hpp