一、QtCreator代码格式化简介

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

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 offvoid 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

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

Hello Qt——QtCreator代码格式化相关推荐

  1. Qt sprintf_s函数格式化字符串出错

    Qt sprintf_s函数格式化字符串出错 问题的出现: 我在VS上用c C++写的跨平台的函数 移植到Qt 上面 出现sprintf_s 函数格式化出错. 开始以为是编码问题  反复查找Qt乱码问 ...

  2. Pycharm 和 vscode 多光标、折叠代码和代码格式化快捷键

    pycharm 多光标:按住alt+shift+ctrl,用鼠标左键点击,可以出现多个光标,输入的代码可以在光标处同时增加. 折叠所有代码:Ctrl + Shift + - (减号) 展开所有代码:C ...

  3. 在线代码格式化,在线JSON校验格式化

    在线代码格式化 http://tool.oschina.net/codeformat/json 在线JSON校验格式化 http://www.kjson.com/ 两个好用工具

  4. Zend Studio 10代码格式化设置

    2019独角兽企业重金招聘Python工程师标准>>> 1.设置位置 窗口>首选项>PHP>代码样式>格式化程序 2.点击New新创建一个格式配置文件 Pro ...

  5. cmake+qt+qtcreator的配置,解决Q_OBJECT的问题

    cmake+qt+qtcreator的配置,解决Q_OBJECT的问题 参考文章: (1)cmake+qt+qtcreator的配置,解决Q_OBJECT的问题 (2)https://www.cnbl ...

  6. dw html5怎么美化,DW CS5/CS6代码格式化、美化插件 Dreamweaver代码格式化美化插件

    这个<DW CS5/CS6代码格式化.美化插件>应该是现在最好用的代码格式化扩展了. 众所周知Dreamweaver CS5 CS6自带的应用源格式只能独自格式化HTML文件与CSS文件, ...

  7. Qt Creator代码重构

    Qt Creator代码重构 代码重构 查找符号 查找QML类型 查看搜索结果 重命名符号 列编辑 应用重构动作 创建功能 插入虚函数 创建获取器和设置器 重构动作摘要 重构C ++代码 重构QML代 ...

  8. 怎样将html转换do,html代码格式化 Reddo的教程

    完美者(wmzhe.com)网站以软件下载为基础,改版后的网站对功能性板块进行扩充,以期能够解决用户在软件使用过程中遇见的所有问题.网站新增了"软件百科"."锦囊妙技&q ...

  9. Pycharm使用black作为Python代码格式化外部工具

    Pycharm菜单Code->Reformat Code能对Python代码进行格式化,但是black能进一步规范格式,它是PEP8的严格子集. 本次操作的相关环境信息如下:Pycharm 20 ...

  10. Qt 使用代码编写的自定义控件类

    Qt 使用代码编写的自定义控件类 首先需要完成继承QWidget 或者Qt 原生控件类的类编写实现 在需要使用自定义控件类的 UI 文件中添加一个 自定义类的控件(也就是自定义类继承的控件) 将这个控 ...

最新文章

  1. windbg 脚本学习总结
  2. mysql5.7.13编译安装_MySQL 5.7.13 源码编译安装配置方法图文教程
  3. Bootstrap下拉菜单标题
  4. 威斯康星大学乳腺癌肿瘤数据预测分类代码讲解
  5. python3 os.system 异步执行_《sentos python教程》 Python os.system(command),这样执行的command命令,和主程序是异步的吗?...
  6. Android:eclipse安装adt插件后工具栏不显示android相关图标
  7. 正则表达式-grep命令
  8. python dll注入监听_DLL注入和API拦截
  9. 免费版xshell下载地址
  10. Vue知识点总结(16)——具名插槽(超级详细)
  11. Matplotlib 箱线图
  12. php设置时区的两种方法
  13. 2023临沂大学计算机考研信息汇总
  14. Linux内核学习笔记(一) 虚拟文件系统VFS
  15. 精艺熔炼,笃行致远——美和易思34期大数据技术师资项目成功举行
  16. Vue.js实战之系统学习第七节
  17. 基金归因Brinson模型
  18. Shuffle过程介绍
  19. 年薪170W阿里P8,征婚被喷 你不配!
  20. Excel如何快速统计及格人数

热门文章

  1. 图像处理中的差分求导计算和相应的卷积核(filter)
  2. ESP8266热点配网-Arduino代码分享
  3. JavaFX键盘事件(及键盘事件无效的原因)
  4. 日期 时间差 java_Java8中计算日期时间差
  5. 动态链接库dll,导入库lib,静态链接库lib
  6. Debug与Release版本的区别详解
  7. 视频课程:高等数学考研辅导讲座-上
  8. 嵌入式可视化编程软件选哪个好?(可视化编程平台介绍、测评与选择)【Scratch、Mind+、Mixly】
  9. golang之web编程入门
  10. 以下关于java文件名的叙述正确的有_sun java认证考试题库