[解決済み] clang-formatは書式の変更が必要かどうか教えてくれますか?
質問
このような場合
clang-format
を実行し、ファイルが指定された形式を満たしているかどうかを報告するような方法はありますか?変更が必要な場合は報告するが、変更は行わないというドライランモードのようなものです。理想的には、ファイルが変更を必要とする場合、clang-formatがゼロ以外の終了コードを返すようにしたいのですが。あるいは、さらに理想的なのは、ゼロでない終了コードと、標準出力に変更が必要なファイルのリストを表示することです。
私はより多くの人々が答えることができるように、質問を一般的なものに保とうとしていますが、私がしようとしていることは、期待される.clang-formatに一致しないすべてのコミットを拒否するgit pre-commitフックを書くことです。インデックスにあるファイルのリストに対してclang-formatを実行するのは簡単です。しかし、clang-formatが実際に何かを変更したかどうかを知るのは難しいです。
に基づいて、1つの潜在的な解決策を持っています。
-output-replacements-xml
(に基づく1つの潜在的な解決策を持っています(それは私が答えとして投稿します)、しかしそれはハックで、私はこれがより簡単であるべきだと感じています。コメント/提案、編集、異なる回答/アプローチはすべて歓迎されます。
どのように解決するのですか?
を使用します。
--dry-run
と
-Werror
コマンドラインオプションを使います。これらはClangFormatにフォーマット違反をstdoutに出力させ、入力ファイルが正しくフォーマットされていない場合は0以外の終了ステータスを返させます。
$ clang-format --dry-run --Werror foo.cpp
foo.cpp:129:23: error: code should be clang-formatted [-Wclang-format-violations]
if (rc <= 0) {
$ echo $?
1
元はこちらのサイトです。 https://rigtorp.se/notes/clang-format/
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Git のコミットで変更点を確認するには?
-
[解決済み] Git のブランチの一覧を最新のコミット順に表示するにはどうしたらよいですか?
-
[解決済み] Git で、別のブランチの変更を選択的にマージしたり選択したりするにはどうすればよいですか?
-
[解決済み] git のコミットを削除しても、変更は維持できますか?
-
[解決済み] Gitサブモジュールをoriginの最新コミットに更新する
-
[解決済み] Git リポジトリで現在のコミットを唯一の(初期)コミットにする?
-
[解決済み] Gitのコミットの差分や内容を特定の単語でgrepする方法
-
[解決済み] ローカルのGitの変更を削除するさまざまな方法
-
[解決済み] [Solved] 未コミットの変更があるかどうかをプログラムで判断するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[git push] 解決策: ! [リモート拒否] master -> master (受信前のフックは拒否されました)
-
gitlab をアップロード ! [リモート拒否] dev -> dev (受信前のフックが拒否されました)
-
致命的 リモートレフマスターが見つからない
-
Git はファイル名の大文字と小文字を無視し、修正する
-
コミットメッセージが空だったため、コミットを中止する git commit
-
fatal: パス仕様 'readme.txt' がどのファイルにもマッチしなかった Solution
-
Git Bash报错发生: メールアドレスが自動検出されない (「Anita@newton.(none)」を取得)的解决方法。
-
[解決済み] git diff を stdout に書き出すには?
-
[解決済み] ローカルのGitブランチをリモートレポにコピーする方法
-
[解決済み] 別のユーザーでコードをコミットするにはどうすればよいですか?