取消对拆分函数调用参数的信任

Uncrustify split function call parameters

本文关键字:信任 参数 函数调用 拆分 取消      更新时间:2023-10-16

我想像这样格式化代码:

  • 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=真

ls_code_width=错误

nl_func_leave_one_liners=真实

indent_func_call_param=真

nl_func_def_start=添加

nl_func_def_start_single=删除

align_oc_msg_colon_first=错误

有了这些设置,我得到的只是这样:

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内部并且需要像这样拆分参数的情况?

使用这些设置:

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:如果()在不同的行中,是否在函数调用的)之前添加换行符