使用Uncrustify格式化你的代码
介绍
- Uncrustify为一个支持C, C++, C#, Objective-C, D, Java, Pawn、VALA的代码格式化工具
- 项目地址:https://github.com/uncrustify/uncrustify
- 下载地址:https://github.com/uncrustify/uncrustify/tags
- Uncrustify自定义风格可以使用基于web的uncrustify_config配置工具进行生成:https://cdanu.github.io/uncrustify_config_preview/index.html
使用
-
Uncrustify安装:从https://github.com/uncrustify/uncrustify/tags下载最新版本(0.72.0)
$ mkdir build $ cd build $ cmake .. $ sudo make install
-
Uncrustify配置:
- 打开QtCreator,点击菜单栏“Help > About Plugins > C++ > Beautifier ”菜单项
- 选中“Enable auto format on file save”,选择Tool为“Uncrustify”。在Uncrustify选项页,选择Uncrustify命令程序所在的路径:
/usr/local/bin/uncrustify
-
选中“Use customized style”,点击Add按钮,增加一种自定义风格,将以下代码(https://paste.ubuntu.com/p/Q9NBxCHZs8/)粘贴进去。自定义风格可参见https://github.com/uncrustify/uncrustify/blob/master/etc/gnu-indent.cfg
# Uncrustify-0.72.0 input_tab_size = 4 output_tab_size = 4 sp_assign = force sp_cpp_lambda_assign = remove sp_assign_default = force sp_enum_assign = force sp_bool = force sp_compare = force sp_inside_paren = remove sp_paren_paren = remove sp_paren_brace = force sp_before_ptr_star = force sp_between_ptr_star = remove sp_after_ptr_star = remove sp_after_ptr_star_qualifier = force sp_after_ptr_star_func = remove sp_ptr_star_paren = remove sp_before_ptr_star_func = force sp_before_byref = force sp_after_byref = remove sp_template_angle = remove sp_angle_paren = remove sp_angle_word = force sp_before_sparen = force sp_inside_sparen = remove sp_after_sparen = force sp_sparen_brace = force sp_before_semi_for = remove sp_before_semi_for_empty = remove sp_after_semi = force sp_after_semi_for_empty = remove sp_after_comma = force sp_after_class_colon = force sp_before_class_colon = force sp_after_cast = remove sp_inside_paren_cast = remove sp_cpp_cast_paren = remove sp_sizeof_paren = remove sp_type_brace_init_lst = add sp_func_proto_paren = remove sp_func_def_paren = remove sp_inside_fparens = remove sp_inside_fparen = remove sp_inside_tparen = remove sp_after_tparen_close = remove sp_square_fparen = remove sp_func_call_paren = remove sp_func_call_user_paren = force sp_return_paren = force sp_else_brace = force sp_brace_else = force sp_cond_colon = force sp_cond_question = force sp_cmt_cpp_start = force indent_columns = 4 indent_with_tabs = 0 indent_align_string = true indent_class = true indent_access_spec = -4 nl_assign_leave_one_liners = true nl_start_of_file = remove nl_end_of_file = force nl_end_of_file_min = 1 nl_assign_brace = remove nl_if_brace = remove nl_brace_else = remove nl_elseif_brace = remove nl_else_brace = remove nl_else_if = remove nl_for_brace = remove nl_do_brace = remove nl_brace_while = remove nl_switch_brace = remove nl_after_case = true nl_namespace_brace = remove nl_class_brace = force nl_class_init_args = remove nl_constr_init_args = force nl_func_paren = remove nl_func_decl_args = remove nl_func_def_args = remove nl_func_decl_end = remove nl_func_def_end = remove nl_func_decl_empty = remove nl_func_def_empty = remove nl_fdef_brace = force nl_after_semicolon = true nl_after_brace_open = true nl_class_colon = remove nl_max = 2 nl_after_func_body = 2 eat_blanks_after_open_brace = true eat_blanks_before_close_brace = true pos_arith = lead pos_assign = lead pos_bool = lead pos_compare = lead pos_conditional = lead pos_comma = trail pos_class_comma = trail pos_constr_comma = trail pos_class_colon = lead pos_constr_colon = trail code_width = 100 cmt_indent_multi = false mod_paren_on_return = remove mod_remove_extra_semicolon = true mod_move_case_break = true mod_case_brace = remove mod_remove_empty_return = true set FOR foreach set FOR forever # option(s) with 'not default' value: 115 #
在打开“Tools > Options > Environment->Keyboard->Uncrustify->FormatFile”,可以设置格式化的快捷键,当你使用快捷键或者
Ctrl + S
保存代码后,Uncrustify
将会以配置文件的风格统一你的代码;