Uncrustify拆分函数调用参数

时间:2016-07-20 10:42:12

标签: c++ code-formatting uncrustify

我想格式化这样的代码:

  • a)线宽最大120

  • b) - 如果调用函数的长度是>则函数调用参数每行一个缩进。 120其他函数调用一行

  • c) - 函数调用在if,for,while等内...参数应格式化为 b)

我有代码(它只是一个虚构的):

void a_function()
{
    if(verify_if_the_conditions_are_meet(first_parameter, second_parameter, third_parameter, fourth_parameter, fifth_parameter, sixth_parameter ))
    {
        call_a_function_with_many_parameters(first_parameter, second_parameter, third_parameter, fourth_parameter, fifth_parameter, sixth_parameter);       
    }

    save(first_parameter, second_parameter, third_parameter, fourth_parameter, fifth_parameter, sixth_parameter);
}

现在,我希望得到结果:

void a_function()
{
    if(verify_if_the_conditions_are_meet(
        first_parameter, 
        second_parameter, 
        third_parameter, 
        fourth_parameter, 
        fifth_parameter, 
        sixth_parameter ))
    {
        call_a_function_with_many_parameters(
            first_parameter, 
            second_parameter, 
            third_parameter, 
            fourth_parameter, 
            fifth_parameter, 
            sixth_parameter);
    }

    save(first_parameter, second_parameter, third_parameter, fourth_parameter, fifth_parameter, sixth_parameter);
}

我在Uncrustify 0.63中使用了以下选项:

  

code_width = 120

     

ls_func_split_full = true

     

ls_code_width = false

     

nl_func_leave_one_liners = true

     

indent_func_call_param = true

     

nl_func_def_start = add

     

nl_func_def_start_single =删除

     

align_oc_msg_colon_first = false

通过这些设置,我就像这样:

void a_function()
{
    if(verify_if_the_conditions_are_meet(first_parameter, second_parameter, third_parameter, fourth_parameter, 
        fifth_parameter, sixth_parameter ))
    {
        call_a_function_with_many_parameters(
            first_parameter, 
            second_parameter, 
            third_parameter, 
            fourth_parameter, 
            fifth_parameter, 
            sixth_parameter);
    }

    save(first_parameter, second_parameter, third_parameter, fourth_parameter, fifth_parameter, sixth_parameter);
}

有没有人将函数调用放在if / for / while中并且需要将参数拆分为这样?

1 个答案:

答案 0 :(得分:4)

使用以下设置:

nl_func_call_start_multi_line   = true
nl_func_call_args_multi_line    = true
code_width                      = 120
  • code_width:尝试将代码宽度限制为 N
  • nl_func_call_start_multi_line:如果((位于不同的行中,是否在)之后添加换行符。
  • nl_func_call_args_multi_line:如果,(位于不同的行中,是否在函数调用中的每个)后添加换行符。

可选:

nl_func_call_end_multi_line     = true
  • nl_func_call_end_multi_line:如果)(位于不同的行中,是否在函数调用中在)之前添加换行符。