在Xcode中使用Clang Format

Xcode中的Re-Indent,顧名思義,只是一個調整縮進的功能,徹底依賴它來進行代碼格式化顯然不夠用。咱們使用了一個叫作ClangFormat-Xcode的插件,配合Re-Indent一塊兒來作代碼格式化。git

下載源代碼

ClangFormat-Xcode是一個開源項目,因此先下載源代碼:github

https://github.com/travisjeffery/ClangFormat-Xcode編輯器

安裝

項目的README.md上面如是說:佈局

... build and run ClangFormat, restart Xcode.ui

意思就是:編譯 > 運行 > 重啓Xcode插件

使用自定義Style

如何使用,包括怎麼設置快捷鍵,github上面寫得很清楚了。這裏講一下怎麼使用自定義Style:rest

  1. 在代碼根目錄下添加一個名爲「.clang-format」的文本文件,在其中設置自定義參數。
    • 在對代碼文件進行格式化的時候,插件會從代碼文件所在的目錄開始,往上一級一級地檢索.clang-format,所以把文件放在根目錄是最省事的作法;
    • 在ClangFormat-Xcode源代碼的根目錄下就有一個.clang-format文件的範例;
    • .clang-format在系統中是一個隱藏文件。
  2. 在Xcode的Clang Format菜單中勾選「File」菜單項。

推薦參數

下面是咱們項目在用的設置參數,用文本編輯器打開.clang-format文件,直接粘貼進去就行:code

BasedOnStyle: LLVMorm

# 不限定每行代碼的最大長度
ColumnLimit: 0接口

# 不自動清除代碼中的空行
MaxEmptyLinesToKeep: 99

# 按照LLVM Style調整{}的位置便可

# LLVM Style對C++的命名空間不縮進

# 對C++的可見性關鍵字(public、protected和private)不縮進
AccessModifierOffset: -4

# 縮進統一使用4個空格代替製表符(Tab)
UseTab: Never
IndentWidth: 4

# 在@property後加空格
ObjCSpaceAfterProperty: true

# LLVM Style會在參數類型和名稱之間加空格,類型和*號之間加空格,*號貼近參數名

以上參數的主要做用是:

一、排版風格以「LLVM Style」爲基礎,在其之上進行細微調整,減小設置的複雜度;

二、關閉掉一些可能會下降代碼可讀性的設置,好比:

  • 不限定每行代碼的最大長度,以避免由於自動換行而破壞註釋的排版;
  • 不自動清除代碼中的空行,以避免破壞代碼的段落佈局。

三、調整{}的位置;

四、調整縮進,好比:

  • 對C++的命名空間不縮進;
  • 對C++的可見性關鍵字(public、protected和private)不縮進;
  • 縮進統一使用4個空格代替製表符(Tab)。

五、調整空格,好比:

  • 清理行末位多餘的空格;
  • 在@property後加空格;
  • 參數類型和名稱之間的空格。

其餘一些經驗技巧

最後分享一下咱們在使用Clang Format過程當中的一些經驗技巧:

  1. 對於接口文件(.h文件),用上面的推薦參數格式化便可;
  2. 對於實現的代碼(.m和.mm文件),能夠先用推薦參數格式化,再用Xcode的Re-Index調整縮進;
  3. 完美!
相關文章
相關標籤/搜索