Hello Qt——QtCreator代码格式化

一、QtCreator代码格式化简介

QtCreator提供了一个Beautifier插件,用于加载外部工具(Artistic StyleClangFormatUncrustify)对代码进行格式化。

Beautifier会将源代码解析为结构模块,如赋值语句、IF语句块、循环体等等,并用Beautifier指定的选项对模块进行格式化。

Beautifier可以使用预定义和自定义风格对代码进行格式化。

二、Clang-format

1、Clang-format简介

Clang-format是一个基于LLVM的C++代码格式化工具。

LLVM下载地址:http://ftp.math.utah.edu/pub/llvm/

2、Clang-format安装

根据GCC版本下载相应的LLVM,本人操作系统为RHEL7.3,GCC版本为4.8.5,选择Fedora 20的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
  • 进入llvm-20140716/bin目录
  • 将clang-format拷贝到/usr/local/bin目录
  • sudo cp -rf clang-format /usr/local/bin

3、Clang-format配置

打开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”按钮。

4、Clang-format预定义风格

clang-format预定义了LLVM、Google、Chromium、Mozilla、WebKit五种风格。

5、Clang-format使用

使用QtCreator编辑文件时,保存文件时或是使用快捷键Ctrl+Alt+K,clang-format都会自动格式化当前编辑的文件。

使用命令行可以导出预定义风格,语法如下:

clang-format -style=格式名 -dump-config > 文件名  

格式名的取值可以为llvm, google, chromium, mozilla, webkit中的任一种;文件名可以取任何名字,一般取.clang-format或_clang-format,因为自定义的排版格式文件只有取这两种名字之一,才能被Clang-Format识别。

clang-format -style=google -dump-config > .clang-format

6、禁止格式化代码片段

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 */

7、clang-format自定义风格

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

1、Artistic Style简介

Artistic Style是一个支持C、C++, C++/CLI, Objective-C, C#, Java语言的代码格式化工具。

官方网站:

Artistic Style - Index

下载地址:

https://sourceforge.net/projects/astyle/files/

2、Artistic Style安装

解压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

3、Artistic Style配置

打开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。

 4、Artistic Style预定义风格

Artistic Style预定义了多种代码缩进风格,如allman、kr、java、stroustrup、whitesmith、vtk、gnu、linux、horstmann、google、mozilla、lisp、pico、ansi等风格。可以使用--style参数指定。

5、Artistic Style使用

使用QtCreator编辑文件时,保存文件时或是使用快捷键Ctrl+Alt+A,Artistic Style都会自动格式化当前编辑的文件。

6、Artistic Style自定义风格

Artistic Style自定义风格通常在预定义风格基础上进行修改。

使用astyle -h可以查看Artistic Style的所有选项参数。

最简单的自定义风格如下:

--style=ansi -p

具体选项参数的含义查看http://astyle.sourceforge.net/astyle.html。

四、Uncrustify

1、Uncrustify简介

Uncrustify是一个支持C, C++, C#, Objective-C, D, Java, Pawn、VALA的代码格式化工具。

官网地址:Uncrustify - Source Code Beautifier for C-like languages

下载地址:Uncrustify Code Beautifier - Browse Files at SourceForge.net

2、Uncrustify安装

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

3、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。

 4、Uncrustify使用

使用QtCreator编辑文件时,保存文件时或是使用快捷键Ctrl+Alt+U,Uncrustify都会自动格式化当前编辑的文件。

5、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

可以使用界面交互的方式配置自定义风格文件。

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值