教育培训类网站模板,莱芜都市网招聘,网站开发补全,个人网站建设心得体会文章目录 clang-format思考代码风格指南生成您的配置运行 clang-format禁用一段代码的格式设置clang-format的设置预览 clang-format
我曾在许多编程团队工作过#xff0c;这些团队名义上都有“编程风格指南”。该指南经常被写下来并放置在开发人员很少查看的地方。几乎在每种… 文章目录 clang-format思考代码风格指南生成您的配置运行 clang-format禁用一段代码的格式设置clang-format的设置预览 clang-format
我曾在许多编程团队工作过这些团队名义上都有“编程风格指南”。该指南经常被写下来并放置在开发人员很少查看的地方。几乎在每种情况下样式指南都会被忽略代码审查会演变为样式参数并且源代码存储库内部会开发多种样式。
MongoDB 团队为我们提供了出色的格式化原则 A formatting process which is both manual and insufficient is doomed to be abandoned. 我们不应该依赖程序员遵循一组规则而应该自动化该过程使其尽可能简单和客观。幸运的是clang 团队创建了一个我们可以利用的出色工具clang-format。通过使用 clang-format我们可以创建样式规则列表使程序员能够快速重新格式化其代码并创建在我们的构建服务器上运行的格式检查以确保合规性。
思考代码风格指南
在开始这次冒险之前为您的团队牢记一些风格指南非常重要。您可以使用您的团队忽略的便捷编程风格指南也可以查看网络上的风格指南和规则并决定您的团队应采用哪些规则。下一节提供了可供参考的样式指南列表。风格是一个有争议的话题。不要卷入不必要的争论。使用空格还是制表符最终并不重要一旦一个工具客观地更新每个人的代码它就根本不重要了。如果风格指南没有明确的赢家则指定某人作为最终决策者。另请注意该工具无法检查某些样式规则。考虑这样的规则是否最终重要并以其他方式执行。
生成您的配置
虽然您可以从头开始构建 clang 格式配置但从现有样式开始并进行修改要容易得多。 您可以使用以下命令查看为每种默认样式启用的选项
clang-format --stylellvm -dump-configllvm – complies with the LLVM coding standardGoogle – complies with Google’s C style guideChromium – complies with Chromium’s style guideMozilla – complies with Mozilla’s style guideWebKit – complies with Webkit’s style guide
选择文件作为基线后将内容转储到 .clang 格式文件作为起始基线
clang-format --stylellvm -dump-config .clang-format.clang_format 文件是我们保存自定义样式定义的位置。将来运行 clang-format 时我们将指定 -stylefile 以便 clang-format 知道使用我们的自定义规则。 现在您已经有了基线请检查样式选项并针对您的项目进行调整。您需要根据代码检查格式化样式规则以确保输出按预期工作。您还可以使用在线 .clang 格式生成器来获得更具交互性的体验。交互式构建器中的许多样式选项都使用实时示例来让您比较不同的设置。请注意最新 clang-format 版本中可用的某些选项可能在在线构建器中不可用。
运行 clang-format
运行 clang-format 相对简单。在讨论细节之前让我们先讨论一些重要的选项。
风格
style 参数用于确定 clang-format 将应用的样式规则。您可以使用上述任何样式或 -stylefile 告诉 clang-format 它必须使用您的 .clang-format 文件。
直接编辑
默认情况下clang-format 会将格式差异显示为 shell 输出。我更喜欢直接使用 clang 格式更新文件。使用 -i 选项启用此行为。
默认配置
开始使用 clang-format 时很容易遇到 clang-format 找不到您的样式文件的情况。在这种情况下它将回退到 LLVM 风格。您可以使用-fallback-stylestyle开关确定用作后备的确切样式。如果找不到您的文件将style设置为 none 会导致 clang-format 失败
-fallback-stylenone重新格式化文件 在撰写本文时我们需要提供文件列表因为 clang-format 不会在源树上递归运行。在下一篇文章中我将提供一些 clang-format 的示例包装脚本。 下面是一个入门命令它可以查找当前目录树中的所有 C 和 C 文件
find . -iname *.h -o -iname *.c -o -iname *.cpp -o -iname *.hpp \| xargs clang-format -stylefile -i -fallback-stylenone
注意与clang-Format一起使用的参数我已经应用了就地编辑指出样式规则在我的.clang-Format文件中如果找不到样式文件我希望clang-Format失败。
禁用一段代码的格式设置
当然在某些情况下我们不希望 clang-format 覆盖现有格式。也许无法创建格式化规则来允许所需的格式或者出于可读性原因对块进行了特殊格式化。 您可以在代码中使用注释来禁止 clang-format 修改代码部分
// clang-format off
void unformatted_code:
// clang-format onclang-format的设置预览
用于交互式设计您的配置的网站
pre-commit