iOS 項(xiàng)目接入 Githooks

可以直接查看 github項(xiàng)目,利用git子模塊的方式引入到工程中. https://github.com/square/spacecommander

以下是對(duì).clang-format 文件的注釋.

# Custom options in the special build of clang-format (these are not standard options)
IndentNestedBlocks: false
AllowNewlineBeforeBlockParameter: false

Language: Cpp
# BasedOnStyle: Google

#類的訪問(wèn)修飾關(guān)鍵字(private,public,protected···)縮進(jìn)
AccessModifierOffset: -1

#構(gòu)造函數(shù)初始化的縮進(jìn)值
ConstructorInitializerIndentWidth: 4

#引入頭文件排序
SortIncludes: false

#在未封閉(括號(hào)的開(kāi)始和結(jié)束不在同一行)的括號(hào)中的代碼是否對(duì)齊
AlignAfterOpenBracket: true

#在(),[],{}中代碼不少于一行且換行情況下。如果true則,第二行起代碼會(huì)盡量向左對(duì)齊,否則向最右邊對(duì)齊。
AlignEscapedNewlinesLeft: true

#如果為true,水平對(duì)齊二元和三元表達(dá)式的操作數(shù)。
AlignOperands: false

#如果為true,對(duì)齊各行尾部注釋
AlignTrailingComments: true

#如果為true,函數(shù)申明多個(gè)參數(shù)時(shí),允許換行
AllowAllParametersOfDeclarationOnNextLine: false

#如果true,較短的代碼片段允許格式化為一行
AllowShortBlocksOnASingleLine: false

#是否允許短switch的case 語(yǔ)句在一行寫(xiě)完
AllowShortCaseLabelsOnASingleLine: false

#是否允許短的方法實(shí)現(xiàn)在一行寫(xiě)完
AllowShortFunctionsOnASingleLine: false

#是否允許短if else語(yǔ)句在一行寫(xiě)完
AllowShortIfStatementsOnASingleLine: true

#是否允許短的循環(huán)在一行寫(xiě)完
AllowShortLoopsOnASingleLine: true

#定義函數(shù)返回類型之后換行
AlwaysBreakAfterDefinitionReturnType: false

#定義模板之后換行
AlwaysBreakTemplateDeclarations: false

#多行字符串之前換行
AlwaysBreakBeforeMultilineStrings: false

#二元操作符之前換行
BreakBeforeBinaryOperators: None

#三元操作符之前換行
BreakBeforeTernaryOperators: false

#在構(gòu)造函數(shù)初始化時(shí)按逗號(hào)斷行,并以冒號(hào)對(duì)齊
BreakConstructorInitializersBeforeComma: false

#如果false,函數(shù)調(diào)用時(shí)的參數(shù)要么是全部占同一行,要么一個(gè)參數(shù)占一行。
BinPackArguments: true
#如果false,函數(shù)的定義或聲明的參數(shù)要么是全部占同一行,要么一個(gè)參數(shù)占一行
BinPackParameters: true

#一行代碼長(zhǎng)度的限制,0為無(wú)限制
ColumnLimit: 0
#如果true,構(gòu)造函數(shù)的初始化無(wú)法適應(yīng)于一行以內(nèi),那么每個(gè)參數(shù)占一行
ConstructorInitializerAllOnOneLineOrOnePerLine: true

#如果true,將用使用PointerAlignment的值為指針類型進(jìn)行格式化
DerivePointerAlignment: false

#如果true,clang-format檢測(cè)方法的定義和調(diào)用是否被格式化為一個(gè)參數(shù)占據(jù)一行
ExperimentalAutoDetectBinPacking: false

#case語(yǔ)句的位置總是在switch語(yǔ)句后縮進(jìn)一級(jí)
IndentCaseLabels: true

#若方法定義或者聲明在類型之后換行,自動(dòng)縮進(jìn)(true)
IndentWrappedFunctionNames: false

IndentFunctionDeclarationAfterType: false

#持續(xù)空行的最大數(shù)量
MaxEmptyLinesToKeep: 2

#如果true,在一塊代碼前的空行將會(huì)被保留
KeepEmptyLinesAtTheStartOfBlocks: false

#NameSpace 縮進(jìn): None(所有namespace均不縮進(jìn));Inner(只在內(nèi)部namespcae縮進(jìn));All(所有namespace均縮進(jìn))
NamespaceIndentation: Inner

#OC的block縮進(jìn)
ObjCBlockIndentWidth: 4

#OC的property與()之間后是否空格,如果true,那么@property(readonly) 代替 @property (readonly).
ObjCSpaceAfterProperty: true

#<Protocol> 前是否空格
ObjCSpaceBeforeProtocolList: true

PenaltyBreakBeforeFirstCallParameter: 10000
PenaltyBreakComment: 300
PenaltyBreakString: 1000
PenaltyBreakFirstLessLess: 120
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200

#指針在類型那邊還是在變量名那邊還是在中間
PointerAlignment: Right

#單行注釋前的空格數(shù)
SpacesBeforeTrailingComments: 1

#如果true,將大括號(hào)的列表格式化為最適合C++11的格式。
Cpp11BracedListStyle: true

#LanguageStandard 參考英文文檔
Standard: Auto

#縮進(jìn)的列數(shù)
IndentWidth: 4

#制表位列數(shù)
TabWidth: 8

#是否使用tab進(jìn)行縮進(jìn)
UseTab: Never

#括號(hào)的斷行模式 (此處為自定義,更多選項(xiàng)可參考官方英文文檔)
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: true
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: true
AfterObjCDeclaration: true
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false

#如果true,在非空的括號(hào)中插入空格
SpacesInParentheses: false

#如果true,[]中間插入空格
SpacesInSquareBrackets: false

#如果true,在<>中間插入空格
SpacesInAngles: false

#如果true 空括號(hào)中加空格
SpaceInEmptyParentheses: false

#c-style 強(qiáng)制轉(zhuǎn)換中類型前后是否空格 true -> ( int32 )x, false -> (int32)x
SpacesInCStyleCastParentheses: false

#c-style 強(qiáng)制轉(zhuǎn)換類型括號(hào)后是否空格 true -> (int32) x, false -> (int32)x
SpaceAfterCStyleCast: false

# true -> [ 1, 2, 3 ] , {a : 1, b : 2, c : 3}; false -> [1, 2, 3], {a: 1, b: 2, c: 3}
SpacesInContainerLiterals: false

# 賦值操作符 = 兩側(cè)是否空格 a = 3 vs a=3
SpaceBeforeAssignmentOperators: true

#在續(xù)行(\ 下一行)時(shí)的縮進(jìn)長(zhǎng)度
ContinuationIndentWidth: 4

CommentPragmas: '^ IWYU pragma:'
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]

#是否在括號(hào)前加上空格,此處只是在控制語(yǔ)句之前添加(if/while/for...)
SpaceBeforeParens: ControlStatements

#禁用當(dāng)前format文件
DisableFormat: false
...

其中 SortIncludes 這個(gè)值被設(shè)置為true之后,會(huì)導(dǎo)致格式化代碼之后提交代碼任然會(huì)提示錯(cuò)誤的問(wèn)題, 可以先設(shè)置true,代碼全局格式化之后,再改回false.

以上clang-format文件是相對(duì)比較符合團(tuán)隊(duì)風(fēng)格的代碼風(fēng)格.也需要在開(kāi)發(fā)中, 不斷調(diào)整該配置.

參考文檔: http://clang.llvm.org/docs/ClangFormatStyleOptions.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,533評(píng)論 0 13
  • 前言 本開(kāi)發(fā)規(guī)范基于《阿里巴巴Java開(kāi)發(fā)手冊(cè)終極版》修改,并集成我們自己的項(xiàng)目開(kāi)發(fā)規(guī)范,整合而成。 為表示對(duì)阿里...
    4ea0af17fd67閱讀 5,749評(píng)論 0 5
  • 目錄 一、 編程規(guī)約..................................................
    owen_he閱讀 5,190評(píng)論 0 4
  • 〇、前言 本文共108張圖,流量黨請(qǐng)慎重! 歷時(shí)1個(gè)半月,我把自己學(xué)習(xí)Python基礎(chǔ)知識(shí)的框架詳細(xì)梳理了一遍。 ...
    Raxxie閱讀 19,565評(píng)論 17 410
  • 數(shù)據(jù)來(lái)源于艾瑞深中國(guó)校友會(huì)網(wǎng)發(fā)布《2016 中國(guó)大學(xué)評(píng)價(jià)研究報(bào)告》
    WenryXu閱讀 223評(píng)論 0 0

友情鏈接更多精彩內(nèi)容