Skip to content

SplitTooLongLine

Split too long lines.

Disabling the formatter

SplitTooLongLine is included in the default formatters, but it can be also run separately with:

robocop format --select SplitTooLongLine

You can also disable it:

robocop format --configure SplitTooLongLine.enabled=False

If a line exceeds the given length limit (120 by default), it will be split:

*** Variables ***
@{LIST}    value    value2    value3  # let's assume that value2 is at 120 char

*** Keywords ***
Keyword
    Keyword With Longer Name    ${arg1}    ${arg2}    ${arg3}  # let's assume that arg2 is at 120 char
*** Variables ***
# let's assume that value2 is at 120 char
@{LIST}
...    value
...    value2
...    value3

*** Keywords ***
Keyword
    # let's assume that arg2 is at 120 char
    Keyword With Longer Name
    ...    ${arg1}
    ...    ${arg2}
    ...    ${arg3}

Allowed line length

Allowed line length is configurable using global parameter --line-length:

robocop format --line-length 140
[tool.robocop.format]
line-length = 140

Or using dedicated for this formatter parameter line_length:

robocop format --configure SplitTooLongLine.line_length=140
[tool.robocop.format]
configure = [
    "SplitTooLongLine.line_length=140"
]

Split argument on every line

Using split_on_every_arg flag (True by default), you can force the formatter to fill keyword arguments in one line until character limit:

robocop format --configure SplitTooLongLine.split_on_every_arg=False
[tool.robocop.format]
configure = [
    "SplitTooLongLine.split_on_every_arg=False"
]

will result in:

*** Keywords ***
Keyword
    Keyword With Longer Name    ${arg1}    ${arg2}    ${arg3}  # let's assume that arg2 is at 120 char
*** Keywords ***
Keyword
    # let's assume that arg2 is at 120 char
    Keyword With Longer Name    ${arg1}
    ...    ${arg2}    ${arg3}

Split values on every line

Using split_on_every_value flag (True by default), you can force the formatter to fill values in one line until character limit:

robocop format --configure SplitTooLongLine.split_on_every_value=False
[tool.robocop.format]
configure = [
    "SplitTooLongLine.split_on_every_value=False"
]

will result in:

*** Variables ***
# let's assume character limit is at age=12
&{USER_PROFILE}    name=John Doe    age=12     hobby=coding
*** Variables ***
# let's assume character limit is at age=12
&{USER_PROFILE}    name=John Doe    age=12
...    hobby=coding

Split settings arguments on every line

Using split_on_every_setting_arg flag (True by default), you can force the formatter to fill settings arguments in one line until character limit:

robocop format --configure SplitTooLongLine.split_on_every_setting_arg=False
[tool.robocop.format]
configure = [
    "SplitTooLongLine.split_on_every_setting_arg=False"
]

will result in:

*** Keywords ***
Arguments
    [Arguments]    ${short}    ${veryLongAndJavaLikeArgumentThatWillGoOverAllowedLength}    ${veryLongAndJavaLikeArgumentThatWillGoOverAllowedLength}
    Step
*** Keywords ***
Arguments
    [Arguments]
    ...    ${short}
    ...    ${veryLongAndJavaLikeArgumentThatWillGoOverAllowedLength}
    ...    ${veryLongAndJavaLikeArgumentThatWillGoOverAllowedLength}
    Step
*** Keywords ***
Arguments
    [Arguments]    ${short}    ${veryLongAndJavaLikeArgumentThatWillGoOverAllowedLength}
    ...    ${veryLongAndJavaLikeArgumentThatWillGoOverAllowedLength}
    Step

Assignments

Assignments will be split to multi lines if they don't fit together with the Keyword in one line:

*** Keywords ***
Keyword
    ${first_assignment}    ${second_assignment}    Some Lengthy Keyword So That This Line Is Too Long    ${arg1}    ${arg2}

    ${first_assignment}    ${second_assignment}    ${third_assignment}    Some Lengthy Keyword So That This Line Is Too Long And Bit Over    ${arg1}    ${arg2}
*** Keywords ***
Keyword
    ${first_assignment}    ${second_assignment}    Some Lengthy Keyword So That This Line Is Too Long
    ...    ${arg1}
    ...    ${arg2}

    ${first_assignment}
    ...    ${second_assignment}
    ...    ${third_assignment}
    ...    Some Lengthy Keyword So That This Line Is Too Long And Bit Over
    ...    ${arg1}
    ...    ${arg2}

Single values

By default, single values (${variable} value) are not split. You can configure SplitTooLine formatter to split on single too long values using split_single_value option:

robocop format --configure SplitTooLongLine.split_single_value=True
[tool.robocop.format]
configure = [
    "SplitTooLongLine.split_single_value=True"
]

will result in:

*** Variables ***
&{USER_PROFILE}                   name=John Doe                            age=12                            hobby=coding
${SHORT_VALUE}    value
${SINGLE_HEADER}    veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeery
*** Variables ***
&{USER_PROFILE}
...    name=John Doe
...    age=12
...    hobby=coding
${SHORT_VALUE}    value
${SINGLE_HEADER}    veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeery
*** Variables ***
&{USER_PROFILE}
...    name=John Doe
...    age=12
...    hobby=coding
${SHORT_VALUE}    value
${SINGLE_HEADER}
...    veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeery

Align a new line

It is possible to align a new line to the previous line when splitting too long line. This mode works only when we are filling the line until line the length limit (with one of the split_on_every_arg, split_on_every_value and split_on_every_setting_arg flags). To enable it, configure it using align_new_line:

robocop format --configure SplitTooLongLine.align_new_line=True
[tool.robocop.format]
configure = [
    "SplitTooLongLine.align_new_line=True"
]

will result in:

*** Keywords ***
Keyword
    [Tags]    longertagname1    longertagname2    longertagname3
    Keyword With Longer Name    ${arg1}    ${arg2}    ${arg3}    # let's assume ${arg3} does not fit under limit
*** Keywords ***
Keyword
    [Tags]    longertagname1    longertagname2
    ...    longertagname3
    Keyword With Longer Name    ${arg1}    ${arg2}
    ...    ${arg3}
*** Keywords ***
Keyword
    [Tags]    longertagname1    longertagname2
    ...       longertagname3
    Keyword With Longer Name    ${arg1}    ${arg2}
    ...                         ${arg3}

Ignore comments

To not count the length of the comment to line length, use skip option:

robocop format --configure SplitTooLongLine.skip_comments=True
[tool.robocop.format]
configure = [
    "SplitTooLongLine.skip_comments=True"
]

This allows ignoring lines that are longer than allowed length because of the added comment.

Skip formatting

It is possible to use the following arguments to skip formatting of the code:

It is also possible to use disablers but skip option makes it easier to skip all instances of a given type of the code.