1. 程式人生 > 其它 >QT 配置格式化程式碼

QT 配置格式化程式碼

Qt 配置Clang Format步驟

配置環境:Windows10 64bit + Qt5.12.8

1 啟動Beautifier外掛

選單>幫助>關於外掛

 

勾選後,重啟Qt Creator

2 安裝LVMM

主頁:

根據自己的情況,選擇下載相應的系統版本

https://releases.llvm.org/

 

 

 

 

 

 

下載完畢後,安裝,在安裝時,需勾選新增環境變數,便於後續操作。根據自己的情況選擇安裝路

徑,然後一路下一步。

 

 

 

由於根據系統環境,選擇安裝了64位的LLVM,所以可能lldb.exe報找不到python36.dll,安裝完

LLVM後,bin

資料夾下沒有python36.dll,所以需要下載對應版本的庫,拷貝到D:\LLVM\bin(根據

自己安裝的目錄)

 

 

 

3 Qt中啟用Clang Format

選單>工具>選項

勾選第一項之後,在儲存時會自動格式化當前的檔案

 

 

 

 

 

4 編寫自定義規則

建立了自定義的規則之後,規則檔案在,其中dkwc++-baseon-google時我配置的名字:

C:\Users\Admin\AppData\Roaming\QtProject\qtcreator\beautifier\clangformat\dkwc++-

baseon-google

也可以直接使用編輯器進行編輯詞檔案

 

 

 

5 設定快捷鍵

可以設定為Ctrl+Alt+K,表示,在當前檔案下按下這個快捷鍵,即可格式化當前的檔案

 

 

 

6 參考的自定義規則

詳細規則參考官方說明文件:

根據我們的編碼規範,我在Google(工具已經內建的風格)的基礎上,進行了調整。後續發現有遺漏

的可以一起來完善。

1 BasedOnStyle: Google

2

3 IndentWidth: 4

4 ColumnLimit: 80

5 AccessModifierOffset: -4

6 MaxEmptyLinesToKeep: 1

7 SpacesBeforeTrailingComments: 4

8

9 AllowAllArgumentsOnNextLine: true

10 AllowAllParametersOfDeclarationOnNextLine: false

11 AllowAllConstructorInitializersOnNextLine: false

12 AllowShortFunctionsOnASingleLine: false

13 AllowShortIfStatementsOnASingleLine: false

14 AllowShortBlocksOnASingleLine: false

15 AllowShortCaseLabelsOnASingleLine: false

16 AllowShortEnumsOnASingleLine: false

https://clang.llvm.org/docs/ClangFormatStyleOptions.html

17 AllowShortLambdasOnASingleLine: false

18 AllowShortLoopsOnASingleLine: false

19

20 AlignAfterOpenBracket: true

21 AlignTrailingComments: true

22 AlignEscapedNewlinesLeft: true

23 AlignOperands: true

24 AlignConsecutiveAssignments: true

25 AlignConsecutiveMacros: true

26 AlignEscapedNewlines: true

27

28 AlwaysBreakBeforeMultilineStrings: false

29

30 #BinPackArguments: true

31 #BinPackParameters: true

32

33 # space around ":"

34 BitFieldColonSpacing: Both

35

36 #BreakBeforeBraces: Allman

37 # if need custom brace wrapping

38 BreakBeforeBraces: Custom

39 BraceWrapping:

40 AfterControlStatement: Always

41 AfterCaseLabel: true

42 AfterClass: true

43 AfterFunction: true

44 AfterEnum: true

45 AfterStruct: true

46 AfterNamespace: true

47 AfterUnion: true

48 AfterExternBlock: true

49 BeforeElse: true

50 BeforeLambdaBody: true

51 BeforeCatch: true

52 BeforeWhile: true

53 SplitEmptyFunction: true

54 SplitEmptyRecord: true

55 SplitEmptyNamespace: true

56 # end of custom brace wrapping

57

58 BreakBeforeBinaryOperators: true

59 BreakBeforeTernaryOperators: true

60 BreakConstructorInitializers: AfterColon

61 #BreakInheritanceList: AfterColon

62 BreakStringLiterals: true

63

64 CompactNamespaces: false

65

66 ConstructorInitializerAllOnOneLineOrOnePerLine: false

67

68 #IndentPPDirectives: AfterHash

69

70 # true

71 # bool

72 # LooooooooooooooooooooooooooooooooooooooooooooooooooooongFunctionDeclaration();

73 # false

74 # bool

75 # LooooooooooooooooooooooooooooooooooooooooooooooooooooongFunctionDeclaration();

76 IndentWrappedFunctionNames: false

77

78 NamespaceIndentation: Inner

79

80 PointerAlignment: Left

81

82 SpaceAfterCStyleCast: false

83 SpaceAfterLogicalNot: false

84 SpaceAfterTemplateKeyword: false

85 SpaceBeforeSquareBrackets: false

86 SpaceInEmptyBlock: false

87 SpaceInEmptyParentheses: false

88 SpacesInParentheses: false

89 SpacesInSquareBrackets: false

90

91 SpaceBeforeAssignmentOperators: true

92 SpaceBeforeRangeBasedForLoopColon: true

93 SpacesInContainerLiterals: true

特殊情況

1 某些程式碼塊不使用格式化

如果某個特殊的寫法具有特定的含義,不需要進行格式化的化,可以使用如下方法

1 // clang-format off

2 不會被格式化的程式碼塊

3 // clang-format on

參考連線

1. google編碼規範

中文翻譯:

2. LLVM

主頁:

下載相應的系統版本

3. Artistic Style

主頁:

4. 相關部落格

Clang-format 配置檔案

Qt Creator使用clang-format格式化程式碼

Qt高階——QtCreator程式碼格式化

https://zh-google-styleguide.readthedocs.io/en/latest/contents/

https://releases.llvm.org/

http://astyle.sourceforge.net/

https://blog.csdn.net/deeplee021/article/details/100877960

https://blog.csdn.net/m0_37194132/article/details/85134229

https://blog.51cto.com/9291927/2112402

Qt 配置Clang Format步驟

配置環境:Windows10 64bit + Qt5.12.8

1 啟動Beautifier外掛

選單>幫助>關於外掛

 

勾選後,重啟Qt Creator

2 安裝LVMM

主頁:

根據自己的情況,選擇下載相應的系統版本

https://releases.llvm.org/

 

 

下載完畢後,安裝,在安裝時,需勾選新增環境變數,便於後續操作。根據自己的情況選擇安裝路

徑,然後一路下一步。

 

由於根據系統環境,選擇安裝了64位的LLVM,所以可能lldb.exe報找不到python36.dll,安裝完

LLVM後,bin資料夾下沒有python36.dll,所以需要下載對應版本的庫,拷貝到D:\LLVM\bin(根據

自己安裝的目錄)

 

3 Qt中啟用Clang Format

選單>工具>選項

勾選第一項之後,在儲存時會自動格式化當前的檔案

 

 

4 編寫自定義規則

建立了自定義的規則之後,規則檔案在,其中dkwc++-baseon-google時我配置的名字:

C:\Users\Admin\AppData\Roaming\QtProject\qtcreator\beautifier\clangformat\dkwc++-

baseon-google

也可以直接使用編輯器進行編輯詞檔案

 

5 設定快捷鍵

可以設定為Ctrl+Alt+K,表示,在當前檔案下按下這個快捷鍵,即可格式化當前的檔案

 

7 參考的自定義規則

詳細規則參考官方說明文件:

根據我們的編碼規範,我在Google(工具已經內建的風格)的基礎上,進行了調整。後續發現有遺漏

的可以一起來完善。

1 BasedOnStyle: Google

2

3 IndentWidth: 4

4 ColumnLimit: 80

5 AccessModifierOffset: -4

6 MaxEmptyLinesToKeep: 1

7 SpacesBeforeTrailingComments: 4

8

9 AllowAllArgumentsOnNextLine: true

10 AllowAllParametersOfDeclarationOnNextLine: false

11 AllowAllConstructorInitializersOnNextLine: false

12 AllowShortFunctionsOnASingleLine: false

13 AllowShortIfStatementsOnASingleLine: false

14 AllowShortBlocksOnASingleLine: false

15 AllowShortCaseLabelsOnASingleLine: false

16 AllowShortEnumsOnASingleLine: false

https://clang.llvm.org/docs/ClangFormatStyleOptions.html

17 AllowShortLambdasOnASingleLine: false

18 AllowShortLoopsOnASingleLine: false

19

20 AlignAfterOpenBracket: true

21 AlignTrailingComments: true

22 AlignEscapedNewlinesLeft: true

23 AlignOperands: true

24 AlignConsecutiveAssignments: true

25 AlignConsecutiveMacros: true

26 AlignEscapedNewlines: true

27

28 AlwaysBreakBeforeMultilineStrings: false

29

30 #BinPackArguments: true

31 #BinPackParameters: true

32

33 # space around ":"

34 BitFieldColonSpacing: Both

35

36 #BreakBeforeBraces: Allman

37 # if need custom brace wrapping

38 BreakBeforeBraces: Custom

39 BraceWrapping:

40 AfterControlStatement: Always

41 AfterCaseLabel: true

42 AfterClass: true

43 AfterFunction: true

44 AfterEnum: true

45 AfterStruct: true

46 AfterNamespace: true

47 AfterUnion: true

48 AfterExternBlock: true

49 BeforeElse: true

50 BeforeLambdaBody: true

51 BeforeCatch: true

52 BeforeWhile: true

53 SplitEmptyFunction: true

54 SplitEmptyRecord: true

55 SplitEmptyNamespace: true

56 # end of custom brace wrapping

57

58 BreakBeforeBinaryOperators: true

59 BreakBeforeTernaryOperators: true

60 BreakConstructorInitializers: AfterColon

61 #BreakInheritanceList: AfterColon

62 BreakStringLiterals: true

63

64 CompactNamespaces: false

65

66 ConstructorInitializerAllOnOneLineOrOnePerLine: false

67

68 #IndentPPDirectives: AfterHash

69

70 # true

71 # bool

72 # LooooooooooooooooooooooooooooooooooooooooooooooooooooongFunctionDeclaration();

73 # false

74 # bool

75 # LooooooooooooooooooooooooooooooooooooooooooooooooooooongFunctionDeclaration();

76 IndentWrappedFunctionNames: false

77

78 NamespaceIndentation: Inner

79

80 PointerAlignment: Left

81

82 SpaceAfterCStyleCast: false

83 SpaceAfterLogicalNot: false

84 SpaceAfterTemplateKeyword: false

85 SpaceBeforeSquareBrackets: false

86 SpaceInEmptyBlock: false

87 SpaceInEmptyParentheses: false

88 SpacesInParentheses: false

89 SpacesInSquareBrackets: false

90

91 SpaceBeforeAssignmentOperators: true

92 SpaceBeforeRangeBasedForLoopColon: true

93 SpacesInContainerLiterals: true

特殊情況

1 某些程式碼塊不使用格式化

如果某個特殊的寫法具有特定的含義,不需要進行格式化的化,可以使用如下方法

1 // clang-format off

2 不會被格式化的程式碼塊

3 // clang-format on

參考連線

1. google編碼規範

中文翻譯:

2. LLVM

主頁:

下載相應的系統版本

3. Artistic Style

主頁:

4. 相關部落格

Clang-format 配置檔案

Qt Creator使用clang-format格式化程式碼

Qt高階——QtCreator程式碼格式化

https://zh-google-styleguide.readthedocs.io/en/latest/contents/

https://releases.llvm.org/

http://astyle.sourceforge.net/

https://blog.csdn.net/deeplee021/article/details/100877960

https://blog.csdn.net/m0_37194132/article/details/85134229

https://blog.51cto.com/9291927/2112402