clang 形式のオプションのドキュメントには、PenaltyXXX と呼ばれる多くのオプションが含まれています。ドキュメントには、これらのペナルティをどのように使用する必要があるかは説明されていません。これらのペナルティ値を使用する方法と、それらが達成する効果について (おそらく例を挙げて) 説明できますか?
12305 次
2 に答える
34
行の長さの制限を超える行がある場合、clang-format はどこかに 1 つ以上の改行を挿入する必要があります。ペナルティは、特定のライン ブレーク動作を思いとどまらせる方法と考えることができます。たとえば、あなたが持っているとしましょう:
Namespaces::Are::Pervasive::SomeReallyVerySuperDuperLongFunctionName(args);
// and the column limit is here: ^
Clang-format は、おそらく少し奇妙に見えるようにフォーマットされます。
Namespaces::Are::Pervasive::SomeReallyVerySuperDuperLongFunctionName(
args);
このような場合、行の長さを 1 つか 2 文字違えても構わないと判断するかもしれません。そのためPenaltyExcessCharacter
、 を低い数値に設定してからPenaltyBreakBeforeFirstCallParameter
高い数値に設定することで、それを回避できます。
個人的には返り値の型が独自の行にあるのが大嫌いなのでPenaltyReturnTypeOnItsOwnLine
、とてつもなく大きな数値を設定しています。
余談ですが、このシステムは Latex から継承されたもので、改行、改ページ、ハイフネーションに対してあらゆる種類のペナルティを指定できます。
于 2014-12-22T18:18:29.387 に答える