Clang-format 格式化代碼
# ubuntu
sudo apt-get install clang-format
# vscode 插件
搜索 Clang-Format 安裝
# 打開(kāi)設(shè)置, 擴(kuò)展->C/C++/Formatting
粘貼/保存時(shí)自動(dòng)格式化
# 導(dǎo)出配置
clang-format -style=llvm -dump-config > ~/xx/xx/.clang-format
vi ~/.clang-format
---
# 語(yǔ)言: None, Cpp, Java, JavaScript, ObjC, Proto, TableGen, TextProto
Language: Cpp
# 訪問(wèn)說(shuō)明符(public、private等)的偏移
AccessModifierOffset: -2
# 連續(xù)賦值時(shí),等號(hào)對(duì)齊
AlignConsecutiveAssignments: true
# define 換行時(shí)反斜杠位置:左對(duì)齊
AlignEscapedNewlines: Left
# 連續(xù)代碼的尾部注釋對(duì)齊
AlignTrailingComments: true
# 允許短代碼塊放在同一行 if 1 { return; }
AllowShortBlocksOnASingleLine: true
# 允許短的case標(biāo)簽放在同一行
AllowShortCaseLabelsOnASingleLine: true
# 允許短的函數(shù)放在同一行
AllowShortFunctionsOnASingleLine: All
# 允許短的if語(yǔ)句保持在同一行
AllowShortIfStatementsOnASingleLine: true
# 允許短的循環(huán)保持在同一行
AllowShortLoopsOnASingleLine: true
# 總是在返回類型后換行
AlwaysBreakAfterReturnType: None
# 總是在多行string字面量前換行
AlwaysBreakBeforeMultilineStrings: false
# 總是在template聲明后換行
AlwaysBreakTemplateDeclarations: MultiLine
# false表示函數(shù)實(shí)參要么都在同一行,要么都各自一行
BinPackArguments: false
# false表示所有形參要么都在同一行,要么都各自一行
BinPackParameters: false
# 在大括號(hào)前換行: Attach(始終將大括號(hào)附加到周圍的上下文), Linux(除函數(shù)、命名空間和類定義,與Attach類似),
# Mozilla(除枚舉、函數(shù)、記錄定義,與Attach類似), Stroustrup(除函數(shù)定義、catch、else,與Attach類似),
# Allman(總是在大括號(hào)前換行), GNU(總是在大括號(hào)前換行,并對(duì)于控制語(yǔ)句的大括號(hào)增加額外的縮進(jìn)), WebKit(在函數(shù)前換行), Custom
# 注:這里認(rèn)為語(yǔ)句塊也屬于函數(shù)
BreakBeforeBraces: Custom
# 大括號(hào)換行,只有當(dāng)BreakBeforeBraces設(shè)置為Custom時(shí)才有效
BraceWrapping:
# class定義后面
AfterClass: false
# 控制語(yǔ)句后面
AfterControlStatement: false
# enum定義后面
AfterEnum: false
# 函數(shù)定義后面(OC 無(wú)效)
AfterFunction: false
# 命名空間定義后面
AfterNamespace: false
# OC 定義后面
AfterObjCDeclaration: false
# struct定義后面
AfterStruct: false
# union定義后面
AfterUnion: false
# entern定義后面
AfterExternBlock: false
# catch之前
BeforeCatch: false
# else之前
BeforeElse: false
# 縮進(jìn)大括號(hào)
IndentBraces: false
#false 時(shí),空方法體 {} 放在一行
SplitEmptyFunction: false
#false 時(shí),空記錄(例如,類,結(jié)構(gòu)或聯(lián)合){} 放在一行
SplitEmptyRecord: false
# false 且 AfterNamespace == true 時(shí) 空命名空間體可放到一行: {}
SplitEmptyNamespace: false
# 在二元運(yùn)算符前換行: None(在操作符后換行), NonAssignment(在非賦值的操作符前換行), All(在操作符前換行)
BreakBeforeBinaryOperators: All
# 三元運(yùn)算符 true 符號(hào)前換行 false 符號(hào)后換行
BreakBeforeTernaryOperators: true
# 繼承時(shí) BeforeColon ‘:’前換行
BreakInheritanceList: BeforeColon
# 在構(gòu)造函數(shù)的初始化列表的逗號(hào)前換行
BreakConstructorInitializers: BeforeComma
# 在Java文件中的字段上的每個(gè)注釋之后中斷。
BreakAfterJavaFieldAnnotations: false
# Allow breaking string literals when formatting.
BreakStringLiterals: true
# 每行字符的限制,0表示沒(méi)有限制
ColumnLimit: 120
# 描述具有特殊意義的注釋的正則表達(dá)式,它不應(yīng)該被分割為多行或以其它方式改變
CommentPragmas: '^ IWYU pragma:'
# true,連續(xù)的名稱空間聲明將位于同一行。如果為false,則在新行上聲明每個(gè)名稱空間。
CompactNamespaces: false
# 構(gòu)造函數(shù)的初始化列表要么都在同一行,要么都各自一行
ConstructorInitializerAllOnOneLineOrOnePerLine: false
# 構(gòu)造函數(shù)的初始化列表的縮進(jìn)寬度
ConstructorInitializerIndentWidth: 2
# 延續(xù)的行的縮進(jìn)寬度
ContinuationIndentWidth: 2
# 去除C++11的列表初始化的大括號(hào){后和}前的空格
Cpp11BracedListStyle: false
# 繼承最常用的指針和引用的對(duì)齊方式
DerivePointerAlignment: false
# 關(guān)閉格式化
DisableFormat: false
# 自動(dòng)檢測(cè)函數(shù)的調(diào)用和定義是否被格式為每行一個(gè)參數(shù)(Experimental)
ExperimentalAutoDetectBinPacking: false
# true 自動(dòng)檢測(cè)補(bǔ)全命名空間尾部的大括號(hào)
FixNamespaceComments: false
# 需要被解讀為foreach循環(huán)而不是函數(shù)調(diào)用的宏
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
# #include 分組排序方式 Preserve(按組排序) Merge(合并成一組排序)Regroup(按 IncludeCategories 重新分組排序)
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
- Regex: '.*'
Priority: 1
# Specify a regular expression of suffixes that are allowed in the file-to-main-include mapping.
IncludeIsMainRegex: '(Test)?$'
# case 是否縮進(jìn)一級(jí)
IndentCaseLabels: true
# 預(yù)處理代碼縮進(jìn)樣式。None(不縮進(jìn))AfterHash(縮進(jìn))
IndentPPDirectives: None
# 縮進(jìn)寬度
IndentWidth: 2
# 函數(shù)在返回類型后換行,是否縮進(jìn)函數(shù)名
IndentWrappedFunctionNames: false
# JS 引號(hào)樣式 Leave("",'') Single("") Double("")
JavaScriptQuotes: Leave
# JS import 是否需要換行
JavaScriptWrapImports: true
# 保留在塊開(kāi)始處的空行(OC 沒(méi)用)
KeepEmptyLinesAtTheStartOfBlocks: true
# 開(kāi)始一個(gè)塊的宏的正則表達(dá)式
MacroBlockBegin: ''
# 結(jié)束一個(gè)塊的宏的正則表達(dá)式
MacroBlockEnd: ''
# 連續(xù)最大空行數(shù)
MaxEmptyLinesToKeep: 1
# 命名空間的縮進(jìn): None, Inner(縮進(jìn)嵌套的命名空間中的內(nèi)容), All
NamespaceIndentation: Inner
# OC 協(xié)議根據(jù) ColumnLimit 長(zhǎng)度 換行
ObjCBinPackProtocolList: Auto
# 使用 OC block 函數(shù)實(shí)現(xiàn)內(nèi)部縮進(jìn)寬度
ObjCBlockIndentWidth: 2
# 在ObjC的@property后添加一個(gè)空格
ObjCSpaceAfterProperty: true
# 在OC的protocol列表前添加一個(gè)空格
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
# 指針和引用的對(duì)齊: Left(int* a;), Right(int *a;), Middle(int * a;)
PointerAlignment: Right
# 允許重新排版注釋
ReflowComments: true
# 允許排序#include,首字母排序
SortIncludes: true
# true using 自動(dòng)排序
SortUsingDeclarations: false
# 在C風(fēng)格類型轉(zhuǎn)換后添加空格
SpaceAfterCStyleCast: false
# template 關(guān)鍵字后添加空格
SpaceAfterTemplateKeyword: true
# false 移除 = += 兩側(cè)的空格
SpaceBeforeAssignmentOperators: true
# 初始化 c++ 11 對(duì)象的前面空格
SpaceBeforeCpp11BracedList: true
# 構(gòu)造函數(shù):前加空格
SpaceBeforeCtorInitializerColon: true
# 繼承的:前面加空格
SpaceBeforeInheritanceColon: true
# 開(kāi)圓括號(hào)之前添加一個(gè)空格: Never, ControlStatements, Always
SpaceBeforeParens: ControlStatements
# false 清除 for 循環(huán):前面的空格 for (auto v : values) {}
SpaceBeforeRangeBasedForLoopColon: true
# 在空的圓括號(hào)中添加空格
SpaceInEmptyParentheses: false
# 在尾隨的評(píng)論前添加的空格數(shù)(只適用于//)
SpacesBeforeTrailingComments: 1
# 在尖括號(hào)內(nèi)部前后添加空格 < int >
SpacesInAngles: false
# 快捷數(shù)組 內(nèi)部加空格 [ 1, 2, 3 ]; :前加空格 f({a : 1, b : 2, c : 3});
SpacesInContainerLiterals: false
# 在C風(fēng)格類型轉(zhuǎn)換的括號(hào)中添加空格
SpacesInCStyleCastParentheses: false
# 在圓括號(hào)的(后和)前添加空格
SpacesInParentheses: false
# 在方括號(hào)的[后和]前添加空格,lamda表達(dá)式和未指明大小的數(shù)組的聲明不受影響
SpacesInSquareBrackets: false
# 標(biāo)準(zhǔn): Cpp03, Cpp11, Auto
Standard: Cpp11
# tab寬度
TabWidth: 2
UseTab: Never
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-808951.html
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-808951.html
到了這里,關(guān)于clang-format的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!