LibFormat¶
LibFormat 是一个基于 Clang 实现自动源代码格式化的库。本文档介绍了 LibFormat 的接口和设计,以及一些基本风格讨论。
如果你只想将 clang-format 作为工具使用或集成到编辑器中,请查看 ClangFormat。
设计¶
待办事项:编写设计文档。
接口¶
LibFormat 的核心例程是 reformat()
tooling::Replacements reformat(const FormatStyle &Style, Lexer &Lex,
SourceManager &SourceMgr,
std::vector<CharSourceRange> Ranges);
它从词法分析器 Lex
中读取标记流,并重新格式化 Ranges
中的所有代码范围。 FormatStyle
控制格式化期间做出的基本决策。可以在 风格选项 中找到选项列表。
风格选项在 Clang-Format 风格选项 中描述。
风格选项¶
风格选项描述了可以用来使 ClangFormat 符合不同风格指南的特定格式化选项。目前,几种风格指南是硬编码的。
/// Returns a format style complying with the LLVM coding standards:
/// https://llvm.net.cn/docs/CodingStandards.html.
FormatStyle getLLVMStyle();
/// Returns a format style complying with Google's C++ style guide:
/// http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml.
FormatStyle getGoogleStyle();
/// Returns a format style complying with Chromium's style guide:
/// https://chromium.googlesource.com/chromium/src/+/refs/heads/main/styleguide/styleguide.md
FormatStyle getChromiumStyle();
/// Returns a format style complying with the GNU coding standards:
/// https://www.gnu.org/prep/standards/standards.html
FormatStyle getGNUStyle();
/// Returns a format style complying with Mozilla's style guide
/// https://firefox-source-docs.mozilla.org/code-quality/coding-style/index.html
FormatStyle getMozillaStyle();
/// Returns a format style complying with Webkit's style guide:
/// https://webkit.org/code-style-guidelines/
FormatStyle getWebkitStyle();
/// Returns a format style complying with Microsoft's style guide:
/// https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference
FormatStyle getMicrosoftStyle();
这些选项也通过 -style 选项在 独立工具 中公开。
将来,我们计划使它可配置。