溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Qt高級(jí)——QtCreator代碼格式化

發(fā)布時(shí)間:2020-08-01 18:22:39 來源:網(wǎng)絡(luò) 閱讀:13498 作者:天山老妖S 欄目:編程語(yǔ)言

Qt高級(jí)——QtCreator代碼格式化

一、QtCreator代碼格式化簡(jiǎn)介

QtCreator提供了一個(gè)Beautifier插件,用于加載外部工具(Artistic Style、ClangFormat、Uncrustify)對(duì)代碼進(jìn)行格式化。
Beautifier會(huì)將源代碼解析為結(jié)構(gòu)模塊,如賦值語(yǔ)句、IF語(yǔ)句塊、循環(huán)體等等,并用Beautifier指定的選項(xiàng)對(duì)模塊進(jìn)行格式化。
Beautifier可以使用預(yù)定義和自定義風(fēng)格對(duì)代碼進(jìn)行格式化。

二、Clang-format

1、Clang-format簡(jiǎn)介

Clang-format是一個(gè)基于LLVM的C++代碼格式化工具。
LLVM下載地址:http://ftp.math.utah.edu/pub/llvm/

2、Clang-format安裝

根據(jù)GCC版本下載相應(yīng)的LLVM,本人操作系統(tǒng)為RHEL7.3,GCC版本為4.8.5,選擇Fedora 20 x86-64的LLVM版本。如果選擇Red Hat 6 x86-64、Red Hat 7 x86-64版本則GLIBC版本要求GLIBCXX_3.4.20,RHEL7.3不能滿足。
解壓llvm-20140716.tar.gz文件
tar -zxvf llvm-20140716.tar.gz
進(jìn)入llvm-20140716/bin目錄
將clang-format拷貝到/usr/local/bin目錄
sudo cp -rf clang-format /usr/local/bin

3、Clang-format配置

打開QtCreator4.6,點(diǎn)擊菜單欄“Help?>?About Plugins?>?C++?>?Beautifier?”菜單項(xiàng)。
Qt高級(jí)——QtCreator代碼格式化
選中Beautifier插件
重啟QtCreator4.6,Beautifier插件即可用。
打開“Tools?>?Options?>?Beautifier”配置clang-format工具。
Qt高級(jí)——QtCreator代碼格式化
選中“Enable auto format on file save”,選擇Tool為“ClangFormat”。
在ClangFormat選項(xiàng)頁(yè),選擇使用預(yù)定義風(fēng)格為Google。
Qt高級(jí)——QtCreator代碼格式化
為了防止風(fēng)格配置文件不可用,可以指定一個(gè)回退風(fēng)格,選擇default將使用default風(fēng)格,選擇none將忽略格式化。
在打開“Tools?>?Options?>?Environment->Keyboard->ClangFormat->FormatFile”,設(shè)置“Key sequence”為Ctrl+Alt+K。
Qt高級(jí)——QtCreator代碼格式化
確定“OK”按鈕。

4、Clang-format預(yù)定義風(fēng)格

clang-format預(yù)定義了LLVM、Google、Chromium、Mozilla、WebKit五種風(fēng)格。

5、Clang-format使用

使用QtCreator編輯文件時(shí),保存文件時(shí)或是使用快捷鍵Ctrl+Alt+K,clang-format都會(huì)自動(dòng)格式化當(dāng)前編輯的文件。

使用命令行可以導(dǎo)出預(yù)定義風(fēng)格,語(yǔ)法如下:
clang-format?-style=格式名?-dump-config?>?文件名??
格式名的取值可以為llvm, google, chromium, mozilla, webkit中的任一種;文件名可以取任何名字,一般取.clang-format或_clang-format,因?yàn)樽远x的排版格式文件只有取這兩種名字之一,才能被Clang-Format識(shí)別。
clang-format -style=google -dump-config > .clang-format

6、禁止格式化代碼片段

Clang-format不會(huì)對(duì)// clang-format off和// clang-format on代碼區(qū)間與/ clang-format off /和?/ clang-format on /代碼區(qū)間的代碼進(jìn)行格式化,但注釋會(huì)被正常格式化。

// clang-format off
void unformatted_code:
// clang-format on

/* clang-format off */
void unformatted_code:
/* clang-format on */

7、clang-format自定義風(fēng)格

clang-format支持自定義風(fēng)格(通過編寫?.clang-format?文件),自定義風(fēng)格通常在預(yù)定義風(fēng)格基礎(chǔ)上進(jìn)行修改。自定義風(fēng)格文件內(nèi)容如下:

#基礎(chǔ)樣式
BasedOnStyle: LLVM
#指針的*的挨著哪邊
PointerAlignment: Right
# 縮進(jìn)寬度
IndentWidth: 4
# 連續(xù)的空行保留幾行
MaxEmptyLinesToKeep: 1
# 圓括號(hào)的換行方式
BreakBeforeBraces: Attach
# 是否允許短方法單行
AllowShortFunctionsOnASingleLine: true
# 支持一行的if
AllowShortIfStatementsOnASingleLine: true
# 在未封閉(括號(hào)的開始和結(jié)束不在同一行)的括號(hào)中的代碼是否對(duì)齊
AlignAfterOpenBracket: true
# 圓括號(hào)的換行方式
BreakBeforeBraces: Attach
# switch的case縮進(jìn)
IndentCaseLabels: true
# 針對(duì)OC的block的縮進(jìn)寬度
ObjCBlockIndentWidth: 4
# 針對(duì)OC,屬性名后加空格
ObjCSpaceAfterProperty: true
# 每行字符的長(zhǎng)度
ColumnLimit: 0
# 注釋對(duì)齊
AlignTrailingComments: true
# 括號(hào)后加空格
SpaceAfterCStyleCast: false
# 換行的時(shí)候?qū)R操作符
AlignOperands: true
# 中括號(hào)兩邊空格 []
SpacesInSquareBrackets: false
# 多行聲明語(yǔ)句按照=對(duì)齊
AlignConsecutiveDeclarations: false
# 容器類的空格 例如 OC的字典
SpacesInContainerLiterals: false
# 在構(gòu)造函數(shù)初始化時(shí)按逗號(hào)斷行,并以冒號(hào)對(duì)齊
BreakConstructorInitializersBeforeComma: true
# 函數(shù)參數(shù)換行
AllowAllParametersOfDeclarationOnNextLine: true
# 每行字符的長(zhǎng)度
ColumnLimit: 120
#在續(xù)行(\
#     下一行)時(shí)的縮進(jìn)長(zhǎng)度
ContinuationIndentWidth: 4
# tab鍵盤的寬度
TabWidth: 4
# 賦值運(yùn)算符前加空格
SpaceBeforeAssignmentOperators: true
# 行尾的注釋前加1個(gè)空格
SpacesBeforeTrailingComments: 1

注意:實(shí)際使用中,必須注意不同版本對(duì)于某些選項(xiàng)的支持。低版本clang-format可能對(duì)于某些選項(xiàng)并不支持。因此,用戶需要閱讀當(dāng)前使用clang-format版本的對(duì)應(yīng)文檔。

三、Artistic Style

1、Artistic Style簡(jiǎn)介

Artistic Style是一個(gè)支持C、C++, C++/CLI, Objective-C, C#, Java語(yǔ)言的代碼格式化工具。
官方網(wǎng)站:
http://astyle.sourceforge.net/
下載地址:
https://sourceforge.net/projects/astyle/files/

2、Artistic Style安裝

解壓astyle_3.1_linux.tar.gz
tar -zxvf astyle_3.1_linux.tar.gz
進(jìn)入astyle/build目錄
cd astyle/build
使用CMake生成MakeFile
cmake ../
編譯
make
將編譯生成的astyle拷貝到/usr/local/bin目錄
sudo cp -rf astyle /usr/local/bin
在命令行測(cè)試:
astyle

3、Artistic Style配置

打開QtCreator4.6,點(diǎn)擊菜單欄“Help?>?About Plugins?>?C++?>?Beautifier?”菜單項(xiàng)。
確認(rèn)Beautifier插件已經(jīng)被選中。
打開“Tools?>?Options?>?Beautifier”配置Artistic-Style工具。
Qt高級(jí)——QtCreator代碼格式化
選中“Enable auto format on file save”,選擇Tool為“ClangFormat”。
在Artistic Style選項(xiàng)頁(yè),選擇Artistic Style命令程序所在的路徑:/usr/local/bin/astyle。
Qt高級(jí)——QtCreator代碼格式化
選中“Use customized style”,點(diǎn)擊Add按鈕,增加一種自定義風(fēng)格:
Qt高級(jí)——QtCreator代碼格式化
使用ansi風(fēng)格,在運(yùn)算符兩側(cè)增加空格作為風(fēng)格。
在打開“Tools?>?Options?>?Environment->Keyboard->ArtisticStyle->FormatFile”,設(shè)置“Key sequence”為Ctrl+Alt+A。
Qt高級(jí)——QtCreator代碼格式化

4、Artistic Style預(yù)定義風(fēng)格

Artistic Style預(yù)定義了多種代碼縮進(jìn)風(fēng)格,如allman、kr、java、stroustrup、whitesmith、vtk、gnu、linux、horstmann、google、mozilla、lisp、pico、ansi等風(fēng)格??梢允褂?-style參數(shù)指定。

5、Artistic Style使用

使用QtCreator編輯文件時(shí),保存文件時(shí)或是使用快捷鍵Ctrl+Alt+A,Artistic Style都會(huì)自動(dòng)格式化當(dāng)前編輯的文件。

6、Artistic Style自定義風(fēng)格

Artistic Style自定義風(fēng)格通常在預(yù)定義風(fēng)格基礎(chǔ)上進(jìn)行修改。
使用astyle -h可以查看Artistic Style的所有選項(xiàng)參數(shù)。
最簡(jiǎn)單的自定義風(fēng)格如下:
--style=ansi -p
具體選項(xiàng)參數(shù)的含義查看http://astyle.sourceforge.net/astyle.html。

四、Uncrustify

1、Uncrustify簡(jiǎn)介

Uncrustify是一個(gè)支持C, C++, C#, Objective-C, D, Java, Pawn、VALA的代碼格式化工具。
官網(wǎng)地址:http://uncrustify.sourceforge.net/
下載地址:https://sourceforge.net/projects/uncrustify/files/

2、Uncrustify安裝

Linux環(huán)境下載源碼uncrustify-master.zip,源碼編譯安裝。
解壓源碼壓縮包后進(jìn)入uncrustify-master目錄
創(chuàng)建編譯目錄:mkdir build
進(jìn)入編譯目錄:cd build
生成MakeFile:cmake ..
編譯:make
進(jìn)入bin目錄:cd bin
拷貝程序到/usr/lcoal/bin:sudo cp -rf uncrustify /usr/lcoal/bin
在命令行測(cè)試:uncrustify

3、Uncrustify配置

打開QtCreator4.6,點(diǎn)擊菜單欄“Help?>?About Plugins?>?C++?>?Beautifier?”菜單項(xiàng)。
確認(rèn)Beautifier插件已經(jīng)被選中。
打開“Tools?>?Options?>?Beautifier”配置Uncrustify工具。
Qt高級(jí)——QtCreator代碼格式化
選中“Enable auto format on file save”,選擇Tool為“Uncrustify”。
在Uncrustify選項(xiàng)頁(yè),選擇Uncrustify命令程序所在的路徑:/usr/local/bin/uncrustify。
Qt高級(jí)——QtCreator代碼格式化
選中“Use customized style”,點(diǎn)擊Add按鈕,增加一種自定義風(fēng)格:
Qt高級(jí)——QtCreator代碼格式化
自定義風(fēng)格的內(nèi)容參考uncrustify-master/etc/gnu-indent.cfg文件,uncrustify-master/etc有多種風(fēng)格的配置文件可供參考。
在打開“Tools?>?Options?>?Environment->Keyboard->Uncrustify->FormatFile”,設(shè)置“Key sequence”為Ctrl+Alt+U。
Qt高級(jí)——QtCreator代碼格式化

4、Uncrustify使用

使用QtCreator編輯文件時(shí),保存文件時(shí)或是使用快捷鍵Ctrl+Alt+U,Uncrustify都會(huì)自動(dòng)格式化當(dāng)前編輯的文件。

5、Uncrustify自定義風(fēng)格

Uncrustify通常通過-c參數(shù)讀取配置文件。如沒有指定-c參數(shù),Uncrustify會(huì)嘗試從UNCRUSTIFY_CONFIG環(huán)境變量讀取配置文件或是讀取用戶主目錄下的uncrustify或.uncrustify文件。
uncrustify --show-config
列出所有可用的選項(xiàng)
uncrustify --update-config
uncrustify --update-config-with-doc
列出配置文件中所有的可用選項(xiàng),兩者相同
uncrustify --update-config-with-doc -c path/to/your.cfg
導(dǎo)出當(dāng)前風(fēng)格到指定文件
Uncrustify自定義風(fēng)格可以使用基于web的uncrustify_config配置工具進(jìn)行生成。
https://cdanu.github.io/uncrustify_config_preview/index.html
Qt高級(jí)——QtCreator代碼格式化
可以使用界面交互的方式配置自定義風(fēng)格文件。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI