# 【軟體開發】Clang Format 筆記 ## 前言 在多人協作與大型專案開發中,**統一程式碼風格**是維護程式品質的基本功。Clang-format 就是專為這個目的設計的工具,能夠自動調整縮排、空格、換行與括號風格等,使程式碼保持一致、易讀且可維護,讓自己不需要再手動調整程式碼,藉由工具來協助你讓程式碼風格一致! 本文將從新手角度出發,介紹 Clang-format 的基本概念、安裝使用方式、設定 `.clang-format` 檔案,以及格式化指令 ## 什麼是 Clang-format? Clang-format 是 LLVM 專案開發的自動程式碼格式化工具,支援語言包括 : - C / C++ - Java / JavaScript - Objective-C - Protobuf 等 它會依照指定風格 ( 如 Google、LLVM、Mozilla 等 ) 自動調整程式碼格式,不修改邏輯,只改排版。常見應用情境包含 : - 團隊統一風格 - 開發時自動格式化 ( Save on format ) - 加入 CI/CD 做格式檢查 ## 安裝方式 - macOS ( Homebrew ) : ```bash brew install clang-format ``` - Ubuntu / Debian : ```bash sudo apt install clang-format ``` - Windows : ```bash 可透過 Visual Studio 安裝 LLVM 工具集,或使用 LLVM 官網 提供的安裝檔。 ``` ## 建立 `.clang-format` 設定檔 快速產生一份範本設定檔的方法如下 : ```bash clang-format -style=llvm -dump-config > .clang-format ``` 上述指令會根據 LLVM 的風格產生 .clang-format,你可自行修改其中參數來符合團隊需求。 ### 常用設定說明 ```yaml BasedOnStyle: LLVM # 基礎風格,可改為 Google、WebKit、Microsoft… IndentWidth: 4 # 每層縮排寬度(建議 4,較不擁擠) UseTab: Never # 不使用 tab,統一用空格縮排 ColumnLimit: 100 # 每行最多字元,0 表示不限制 BreakBeforeBraces: Allman # 大括號換行風格,可選 Attach、Stroustrup 等 ``` ## 實際格式化範例 ```cpp! int main(){int x=1; if(x>0){x++;}return 0;} ``` 修改後程式碼如下圖所示 ```cpp! int main() { int x = 1; if (x > 0) { x++; } return 0; } ``` ## Command 指令 * `find ./ -name '*.[ch]' -o -name '*.[ch]pp' | xargs clang-format -i` * 搜索當前目錄及其子目錄中的所有 `.c`、`.h`、`.cpp` 和 `.hpp` 文件,並使用 `clang-format` 進行 **in-place** 方式修改文件。 * `find ./` : 在當前目錄(`.`)及其所有子目錄中進行查找。 * `xarg`: 將標準輸入轉換為命令行參數 * `|`: 管道操作符,將前一個命令的輸出傳遞給後一個命令。 ## Clang-format vs Clang-tidy 差異? - `clang-format` : 著重於**格式風格**的統一 ( 空格、括號、縮排等 ) - `clang-tidy` : 著重於**程式碼潛在問題檢查** ( 記憶體洩漏、未使用變數、效能問題等 )
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up