使用Uncrustify格式化你的代码

使用Uncrustify格式化你的代码

介绍
  1. Uncrustify为一个支持C, C++, C#, Objective-C, D, Java, Pawn、VALA的代码格式化工具
  2. 项目地址:https://github.com/uncrustify/uncrustify
  3. 下载地址:https://github.com/uncrustify/uncrustify/tags
  4. Uncrustify自定义风格可以使用基于web的uncrustify_config配置工具进行生成:https://cdanu.github.io/uncrustify_config_preview/index.html
使用
  1. Uncrustify安装:从https://github.com/uncrustify/uncrustify/tags下载最新版本(0.72.0)

    $ mkdir build
    $ cd build
    $ cmake ..
    $ sudo make install
    
  2. 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将会以配置文件的风格统一你的代码;在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值