该铛格式sytle选项文件包括一些所谓的PenaltyXXX选项.该文件没有解释应如何使用这些处罚.你能描述一下如何使用这些惩罚值及其实现的效果(可能还有一个例子)?
小智 26
当你的行超过行长度限制时,clang-format将需要在某处插入一个或多个符号.您可以将惩罚视为阻止某些突破行为的一种方式.例如,假设你有:
Namespaces::Are::Pervasive::SomeReallyVerySuperDuperLongFunctionName(args);
// and the column limit is here: ^
Run Code Online (Sandbox Code Playgroud)
Clang格式可能会格式化看起来有点奇怪:
Namespaces::Are::Pervasive::SomeReallyVerySuperDuperLongFunctionName(
args);
Run Code Online (Sandbox Code Playgroud)
对于这样的情况,您可能会认为您愿意用一两个字符来违反行长,因此您可以通过将其设置PenaltyExcessCharacter为较低的数字和PenaltyBreakBeforeFirstCallParameter更高的数字来引导它.
就个人而言,我真的不喜欢返回类型在它自己的行上,所以我设置PenaltyReturnTypeOnItsOwnLine了一个荒谬的大数字.
另外,这个系统继承自Latex,它允许您指定断行,分页和连字的各种惩罚.
您能否描述如何使用这些惩罚值以及它们实现了什么效果(也许举一个例子)?
你可以在这个混帐2.15(2017年第4季度)看一个例子clang-format为Git项目用C写的:
参见Johannes Schindelin()的commit 42efde4(2017年9月29日)。(由Johannes Schindelin合并--在commit 42efde4中,2017年10月1日)dscho
dscho
您可以在此处查看旧值和新值:
为了说明这些值:
clang-format:调整换行罚分我们确实非常希望将每列的行数限制为80:Git邮件列表上的一些一致的样式注释之一是,每行的行数不应超过80列(即使每行79列更加合理,因为该代码通常被视为diff,并且diff添加了额外的字符)。
但是,正如布兰登·威廉姆斯(Brandon Williams)所指出的那样,多余字符的罚款5太低,无法保证这一点。
(请参阅此线程)
从现有的clang格式示例和文档中,看来100是适合的惩罚
Stuff You Really Don't Want,因此让我们将其分配为“多余字符”的惩罚,即,超长行。同时,进一步调整惩罚:实际上,我们并不是很想防止注释或字符串文字中出现新的换行符,因此100的惩罚似乎太高了。
同样,对于让换行符与赋值运算符保持距离,我们并不是那么坚定(很多Git的代码在
=字符之后立即中断,只是为了保持80列/行的限制)。我们确实对函数的返回类型不满意,而不是惩罚为0所建议的,因此对此有些皱眉,因此也对此进行了调整。
最后,我们并不是特别喜欢在调用中的第一个参数之前断开,但如果这样做使行短于80列/行,那就是我们要做的事情,因此降低在调用第一个参数之前断开的代价,但不就像在注释中引入新的换行符一样。
| 归档时间: |
|
| 查看次数: |
6771 次 |
| 最近记录: |