clang-format 是一种格式化代码的插件,可用于格式化 C / C ++ / Java / JavaScript / Objective-C / Protobuf / C#代码。而 Qt Creator 的格式化代码的功能只支持非常简单的缩进纠正,本博客主要讲述如何在 Qt Creator 上配置 clang-format 插件。
打开 Beautifier 插件
打开帮助->关于插件->在Beautifier处打勾,然后重启 Qt Creator。
注意一定要重启 Qt Creator,Beautifier 插件才能生效。
装载 Clang-format 插件
首先要到LLVM 下载网站处下载 clang-format 可执行文件。这时需要根据自己的操作系统和电脑配置挑选适合的版本。我下载的是 windows64 位版本。
安装包下载完成之后,双击安装即可。可自定义安装路径,我是安装到了 D 盘,这里最好记住你安装的路径。
打开 Qt Creator,点击
工具->选项->Beautifier->Clang-format。
点击浏览,会跳出一个 windows 文件窗口,找到
clang-format.exe文件并双击,Qt Creator 就会自动填入clang-format.exe文件的绝对路径。当然,你也可以选择手动输入clang-format.exe文件的绝对路径。
然后点击
Use customized style->Add。
在新跳出来的窗口中写入你想要的代码格式化样式,关于可设置的样式可以参考Clang-format 官方文档。我的 format 样式如下:
{
BasedOnStyle: Google,
AccessModifierOffset: -2,
AlignAfterOpenBracket: Align,
AlignConsecutiveAssignments: false,
AlignConsecutiveDeclarations: false,
AlignEscapedNewlines: DontAlign,
AlignOperands: true,
AllowAllParametersOfDeclarationOnNextLine: true,
AllowShortBlocksOnASingleLine: true,
AllowShortCaseLabelsOnASingleLine: true,
AllowShortFunctionsOnASingleLine: All,
AllowShortIfStatementsOnASingleLine: false,
AllowShortLoopsOnASingleLine: false,
AlwaysBreakAfterDefinitionReturnType: None,
AlwaysBreakAfterReturnType: None,
AlwaysBreakBeforeMultilineStrings: false,
AlwaysBreakTemplateDeclarations: true,
AlwaysBreakAfterDefinitionReturnType: None,
AlwaysBreakAfterReturnType: None,
AlwaysBreakBeforeMultilineStrings: false,
AlwaysBreakTemplateDeclarations: true,
BinPackArguments: true,
BinPackParameters: true,
BreakBeforeBinaryOperators: None,
BreakBeforeBraces: Attach,
BreakBeforeTernaryOperators: false,
BreakConstructorInitializers: AfterColon,
BreakStringLiterals: true,
ColumnLimit: 120,
CommentPragmas: '^ IWYU pragma:',
CompactNamespaces: false,
ConstructorInitializerAllOnOneLineOrOnePerLine: false,
ConstructorInitializerIndentWidth: 4,
ContinuationIndentWidth: 4,
Cpp11BracedListStyle: true,
DerivePointerAlignment: false,
DisableFormat: false,
ExperimentalAutoDetectBinPacking: false,
FixNamespaceComments: true,
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ],
IncludeBlocks: Regroup,
IndentCaseLabels: true,
IndentPPDirectives: AfterHash,
IndentWidth: 4,
IndentWrappedFunctionNames: true,
KeepEmptyLinesAtTheStartOfBlocks: false,
MacroBlockBegin: '',
MacroBlockEnd: '',
MaxEmptyLinesToKeep: 1,
NamespaceIndentation: All,
ObjCBlockIndentWidth: 4,
ObjCSpaceAfterProperty: false,
ObjCSpaceBeforeProtocolList: true,
PenaltyBreakBeforeFirstCallParameter: 19,
PenaltyBreakComment: 300,
PenaltyBreakFirstLessLess: 120,
PenaltyBreakString: 1000,
PenaltyExcessCharacter: 1000000,
PenaltyReturnTypeOnItsOwnLine: 60,
PointerAlignment: Left,
ReflowComments: true,
SortIncludes: true,
SpaceAfterCStyleCast: false,
SpaceAfterTemplateKeyword: true,
SpaceBeforeAssignmentOperators: true,
SpaceBeforeParens: ControlStatements,
SpaceInEmptyParentheses: false,
SpacesBeforeTrailingComments: 2,
SpacesInAngles: false,
SpacesInContainerLiterals: false,
SpacesInCStyleCastParentheses: false,
SpacesInParentheses: false,
SpacesInSquareBrackets: false,
TabWidth: 4,
UseTab: Never,
}
Clang-format 插件就安装好了。赶快新建一个
hello world工程试一下。
原始代码:
点击
工具->Beautifier->ClangFormat->Format Current File,就可以格式化代码。
格式化后代码格式如下:
设置快捷键
每次格式化都需要鼠标点击很多次,有些麻烦。我们可以为格式化代码功能设置一个快捷键。点击工具->选项->环境->键盘。
搜索 Clang,找到
FormatFile,在下方的Key sequence处填写你想要的快捷键,我设置的是Alt+Shift+F,点击 OK 按钮就可以了。