QtCreator提供了一個Beautifier插件,用於加載外部工具(Artistic Style、ClangFormat、Uncrustify)對代碼進行格式化。
Beautifier會將源代碼解析爲結構模塊,如賦值語句、IF語句塊、循環體等等,並用Beautifier指定的選項對模塊進行格式化。
Beautifier能夠使用預約義和自定義風格對代碼進行格式化。html
Clang-format是一個基於LLVM的C++代碼格式化工具。
LLVM下載地址:http://ftp.math.utah.edu/pub/llvm/java
根據GCC版本下載相應的LLVM,本人操做系統爲RHEL7.3,GCC版本爲4.8.5,選擇Fedora 20 x86-64的LLVM版本。若是選擇Red Hat 6 x86-6四、Red Hat 7 x86-64版本則GLIBC版本要求GLIBCXX_3.4.20,RHEL7.3不能知足。
解壓llvm-20140716.tar.gz文件
tar -zxvf llvm-20140716.tar.gz
進入llvm-20140716/bin目錄
將clang-format拷貝到/usr/local/bin目錄
sudo cp -rf clang-format /usr/local/binlinux
打開QtCreator4.6,點擊菜單欄「Help > About Plugins > C++ > Beautifier 」菜單項。
選中Beautifier插件
重啓QtCreator4.6,Beautifier插件便可用。
打開「Tools > Options > Beautifier」配置clang-format工具。
選中「Enable auto format on file save」,選擇Tool爲「ClangFormat」。
在ClangFormat選項頁,選擇使用預約義風格爲Google。
爲了防止風格配置文件不可用,能夠指定一個回退風格,選擇default將使用default風格,選擇none將忽略格式化。
在打開「Tools > Options > Environment->Keyboard->ClangFormat->FormatFile」,設置「Key sequence」爲Ctrl+Alt+K。
肯定「OK」按鈕。git
clang-format預約義了LLVM、Google、Chromium、Mozilla、WebKit五種風格。github
使用QtCreator編輯文件時,保存文件時或是使用快捷鍵Ctrl+Alt+K,clang-format都會自動格式化當前編輯的文件。web
使用命令行能夠導出預約義風格,語法以下:
clang-format -style=格式名 -dump-config > 文件名
格式名的取值能夠爲llvm, google, chromium, mozilla, webkit中的任一種;文件名能夠取任何名字,通常取.clang-format或_clang-format,由於自定義的排版格式文件只有取這兩種名字之一,才能被Clang-Format識別。clang-format -style=google -dump-config > .clang-format
ide
Clang-format不會對// clang-format off和// clang-format on代碼區間與/ clang-format off /和 / clang-format on /代碼區間的代碼進行格式化,但註釋會被正常格式化。函數
// clang-format off void unformatted_code: // clang-format on /* clang-format off */ void unformatted_code: /* clang-format on */
clang-format支持自定義風格(經過編寫 .clang-format 文件),自定義風格一般在預約義風格基礎上進行修改。自定義風格文件內容以下:工具
#基礎樣式 BasedOnStyle: LLVM #指針的*的挨着哪邊 PointerAlignment: Right # 縮進寬度 IndentWidth: 4 # 連續的空行保留幾行 MaxEmptyLinesToKeep: 1 # 圓括號的換行方式 BreakBeforeBraces: Attach # 是否容許短方法單行 AllowShortFunctionsOnASingleLine: true # 支持一行的if AllowShortIfStatementsOnASingleLine: true # 在未封閉(括號的開始和結束不在同一行)的括號中的代碼是否對齊 AlignAfterOpenBracket: true # 圓括號的換行方式 BreakBeforeBraces: Attach # switch的case縮進 IndentCaseLabels: true # 針對OC的block的縮進寬度 ObjCBlockIndentWidth: 4 # 針對OC,屬性名後加空格 ObjCSpaceAfterProperty: true # 每行字符的長度 ColumnLimit: 0 # 註釋對齊 AlignTrailingComments: true # 括號後加空格 SpaceAfterCStyleCast: false # 換行的時候對齊操做符 AlignOperands: true # 中括號兩邊空格 [] SpacesInSquareBrackets: false # 多行聲明語句按照=對齊 AlignConsecutiveDeclarations: false # 容器類的空格 例如 OC的字典 SpacesInContainerLiterals: false # 在構造函數初始化時按逗號斷行,並以冒號對齊 BreakConstructorInitializersBeforeComma: true # 函數參數換行 AllowAllParametersOfDeclarationOnNextLine: true # 每行字符的長度 ColumnLimit: 120 #在續行(\ # 下一行)時的縮進長度 ContinuationIndentWidth: 4 # tab鍵盤的寬度 TabWidth: 4 # 賦值運算符前加空格 SpaceBeforeAssignmentOperators: true # 行尾的註釋前加1個空格 SpacesBeforeTrailingComments: 1
注意:實際使用中,必須注意不一樣版本對於某些選項的支持。低版本clang-format可能對於某些選項並不支持。所以,用戶須要閱讀當前使用clang-format版本的對應文檔。測試
Artistic Style是一個支持C、C++, C++/CLI, Objective-C, C#, Java語言的代碼格式化工具。
官方網站:
http://astyle.sourceforge.net/
下載地址:
https://sourceforge.net/projects/astyle/files/
解壓astyle_3.1_linux.tar.gz
tar -zxvf astyle_3.1_linux.tar.gz
進入astyle/build目錄
cd astyle/build
使用CMake生成MakeFile
cmake ../
編譯
make
將編譯生成的astyle拷貝到/usr/local/bin目錄
sudo cp -rf astyle /usr/local/bin
在命令行測試:
astyle
打開QtCreator4.6,點擊菜單欄「Help > About Plugins > C++ > Beautifier 」菜單項。
確認Beautifier插件已經被選中。
打開「Tools > Options > Beautifier」配置Artistic-Style工具。
選中「Enable auto format on file save」,選擇Tool爲「ClangFormat」。
在Artistic Style選項頁,選擇Artistic Style命令程序所在的路徑:/usr/local/bin/astyle。
選中「Use customized style」,點擊Add按鈕,增長一種自定義風格:
使用ansi風格,在運算符兩側增長空格做爲風格。
在打開「Tools > Options > Environment->Keyboard->ArtisticStyle->FormatFile」,設置「Key sequence」爲Ctrl+Alt+A。
Artistic Style預約義了多種代碼縮進風格,如allman、kr、java、stroustrup、whitesmith、vtk、gnu、linux、horstmann、google、mozilla、lisp、pico、ansi等風格。能夠使用--style參數指定。
使用QtCreator編輯文件時,保存文件時或是使用快捷鍵Ctrl+Alt+A,Artistic Style都會自動格式化當前編輯的文件。
Artistic Style自定義風格一般在預約義風格基礎上進行修改。
使用astyle -h能夠查看Artistic Style的全部選項參數。
最簡單的自定義風格以下:--style=ansi -p
具體選項參數的含義查看http://astyle.sourceforge.net/astyle.html。
Uncrustify是一個支持C, C++, C#, Objective-C, D, Java, Pawn、VALA的代碼格式化工具。
官網地址:http://uncrustify.sourceforge.net/
下載地址:https://sourceforge.net/projects/uncrustify/files/
Linux環境下載源碼uncrustify-master.zip,源碼編譯安裝。
解壓源碼壓縮包後進入uncrustify-master目錄
建立編譯目錄:mkdir build
進入編譯目錄:cd build
生成MakeFile:cmake ..
編譯:make
進入bin目錄:cd bin
拷貝程序到/usr/lcoal/bin:sudo cp -rf uncrustify /usr/lcoal/bin
在命令行測試:uncrustify
打開QtCreator4.6,點擊菜單欄「Help > About Plugins > C++ > Beautifier 」菜單項。
確認Beautifier插件已經被選中。
打開「Tools > Options > Beautifier」配置Uncrustify工具。
選中「Enable auto format on file save」,選擇Tool爲「Uncrustify」。
在Uncrustify選項頁,選擇Uncrustify命令程序所在的路徑:/usr/local/bin/uncrustify。
選中「Use customized style」,點擊Add按鈕,增長一種自定義風格:
自定義風格的內容參考uncrustify-master/etc/gnu-indent.cfg文件,uncrustify-master/etc有多種風格的配置文件可供參考。
在打開「Tools > Options > Environment->Keyboard->Uncrustify->FormatFile」,設置「Key sequence」爲Ctrl+Alt+U。
使用QtCreator編輯文件時,保存文件時或是使用快捷鍵Ctrl+Alt+U,Uncrustify都會自動格式化當前編輯的文件。
Uncrustify一般經過-c參數讀取配置文件。如沒有指定-c參數,Uncrustify會嘗試從UNCRUSTIFY_CONFIG環境變量讀取配置文件或是讀取用戶主目錄下的uncrustify或.uncrustify文件。
uncrustify --show-config
列出全部可用的選項
uncrustify --update-config
uncrustify --update-config-with-doc
列出配置文件中全部的可用選項,二者相同
uncrustify --update-config-with-doc -c path/to/your.cfg
導出當前風格到指定文件
Uncrustify自定義風格能夠使用基於web的uncrustify_config配置工具進行生成。
https://cdanu.github.io/uncrustify_config_preview/index.html能夠使用界面交互的方式配置自定義風格文件。