問題タブ [clang-format]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Clang 形式の改行
clang-format
ツールが改行を削除しないようにする設定を探しています。
たとえば、私はColumnLimit
120 に設定しており、サンプル コードを再フォーマットすると次のようになります。
前:
後:
私が望むのは、ツールが 120 文字を超える行を分割することですが、120 文字未満であるという理由だけで行を結合することを決定しないことです。
そのようなオプションはありますか?ドキュメントには何も目立ちませんでした。
c++ - クラス/構造体の演算子の前にClang-Format挿入改行を作成する方法
一部のコードを clang-format 3.7 でフォーマットしようとしています。
次のような構造体があります。
これは問題ありませんが、clang-format は次のようにフォーマットすることを主張します。
Thing1
次の行にandThing2
を配置し、同じ行に中括弧を配置することを好みますが、それがなくても生きていけます。
これは私の現在の.clang-format
ファイルです。これを変更する方法はありますか?
git - コード スタイルの規則に違反するプッシュを確実に拒否する Git の「pre-receive」フックと「git-clang-format」スクリプト
pre-receive
私がすでに書いたフックの断片からすぐに始めましょう:
注:
無関係なコードのある場所は、 でスタブ化されてい# ...
ます。
注:
に慣れていない場合はgit-clang-format
、こちらをご覧ください。
そのフックは期待どおりに機能し、これまでのところバグに気付きませんでしたが、問題を見つけたり、改善の提案があれば、報告をお待ちしています. おそらく、このフックの背後にある意図についてコメントする必要があります。プッシュされたすべてのリビジョンが を使用してコード スタイルの規則に準拠しているgit-clang-format
かどうかをチェックし、準拠していないものがあれば、それぞれに関連する diff (開発者に何を修正する必要があるかを伝えるもの) を出力します。基本的に、このフックに関して 2 つの詳細な質問があります。
まず、リモート (サーバー) のベア リポジトリを一時ディレクトリにコピーし、そこで分析用にコードをチェックアウトしていることに注意してください。その意図を説明しよう。プッシュされたすべてのリビジョンを個別git checkout
に. ここで回避しようとしているのは、リモートの (サーバー) ベア リポジトリへのプッシュ アクセスにおける (可能性のある) 同時実行の問題です。つまり、複数の開発者がこのフックがインストールされたリモートに同時にプッシュしようとすると、これらのプッシュ「セッション」のそれぞれがプライベートコピーでs とs を実行しない場合、問題が発生する可能性があるという印象を受けています。リポジトリの。つまり、簡単に言えば、git reset
for
git-clang-format
pre-receive
git checkout
git reset
git-daemon
同時プッシュ「セッション」のロック管理が組み込まれていますか? 対応するpre-receive
フック インスタンスを厳密に順番に実行しますか、それともインターリーブの可能性がありますか (未定義の動作を引き起こす可能性があります)。この問題には、具体的な保証を備えた組み込みの解決策があるはずだと何かが教えてくれます。そうしないと、リモートは一般的に(複雑なフックがなくても)同時プッシュにさらされてどのように機能しますか?そのような組み込みソリューションがある場合、コピーは冗長であり、ベア リポジトリを再利用するだけで実際に処理が高速化されます。ところで、この質問に関する公式ドキュメントへの参照は大歓迎です。
次に、ステージングされた(コミットされていない) 変更と特定のコミット (デフォルト)git-clang-format
のみを処理します。したがって、コーナーケースがどこにあるかを簡単に確認できます。はい、ルートコミット (リビジョン) と一緒です。実際には、リセット先の親がないため、ルート コミットには適用できません。したがって、2番目の質問に対する次のチェックがあります。HEAD
git reset --soft 'HEAD~1'
試してみましgit update-ref -d 'HEAD'
たが、これによりリポジトリが壊れてしまい、git-clang-format
処理できなくなります。これは、分析されているこれらのプッシュされたリビジョン (このルート リビジョンを含む) のすべてが実際にはまだどのブランチにも属していないという事実に関連していると思います。つまり、切り離され HEAD
た状態です。このコーナー ケースの解決策も見つけて、最初のコミットでもgit-clang-format
コード スタイルの規則に準拠しているかどうかを同じようにチェックできるようにすることができれば完璧です。
平和。
c++ - リターン後にclang-formatがスペースを入れるのを止める方法はありますか?
私がこのようなものを持っている場合:
それをclang-formatに渡すと、常に改行と開始の間にスペースが追加されます(次のように:
SpaceBeforeParens を Never に設定しましたが、まだこのスペースが追加されています。これを制御する方法を知っている人はいますか?
c++ - isocpp のコア ガイドライン用に clang-format を構成する
CppCoreGuidelinesにできるだけ近づけたいのですが、clang-format の設定に問題があります。
isocpp コア ガイドラインに準拠するように clang-format を設定するにはどうすればよいですか?
たとえば、次のガイドラインは私にいくつかの問題を引き起こします。
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rl-ptr
clang-format は常に選択さT &operator[](size_t);
れているようで、正しい設定が見つかりません。
c++ - clang-format 3.6 を使用した cpp template<> のスペーシングが期待どおりに機能しない
forコードを使用してclang-format version 3.6 on Fedora 21
内部vim
を使用しています。テンプレート定義を除いて、コードは期待どおりに見えます。のコードは、 false に設定した比較的近いように見える唯一のオプション
に変更されていますが、単語テンプレートと山括弧の間にスペースを入れています。これが単語テンプレートと山かっこの間にスペースを挿入するのを防ぐ方法について誰か考えがありますか?clang-format.py
cpp
template<typename T>
template <typename T>
ObjCSpaceBeforeProtocolList
clang - 美化ツールを使用してこの方法でマクロをインデントする方法は?
プリプロセッサを次のようにインデントしたい:
clang-formatを試しましたが、ディレクティブの後にすべてのスペースが削除#
され、その動作を制御するオプションが見つかりませんでした。では、clang-format はそのようにプリプロセッサのインデントを実行できますか?
c - Clang-Format で連続する引数の間にスペースを入れない
私が使用しなければならない C スタイル ガイドでは、関数呼び出しで関数の引数の間にスペースを入れない (またはコンマの後にスペースを入れない) ことを強制しています。
clang-formatでこれを達成するにはどうすればよいですか? ドキュメントに記載されているスペーシング関連のオプションはどれも、これには適していないようです。
clang-format - clang-format は、if() while() for() の後にステートメントの周りに {} を追加します
compound_statement
非を{ non-compound_statement; }
inに減らすように clang-format をセットアップできるかどうか知りたいですiteration_statement
。
例
入力:
出力:
その後、美容師は必要に応じてインデントします。