Skip to content

Releases: MarketSquare/robotframework-robocop

Robocop 6.9.0

23 Oct 16:21
58d387a

Choose a tag to compare

Bumped maximum supported Robot Framework version to 7.4.

Robocop 6.8.3

16 Oct 17:08
1a36448

Choose a tag to compare

Fix Robocop failing to scan directory with dangling symlink (#1494)

Robocop should be able to scan directory with dangling (pointing to non-existing path) symlink.

Robocop 6.8.2

16 Oct 16:41
97d178d

Choose a tag to compare

Fix comment handling in Set Variable If with ReplaceWithVAR formatter (#1495)

ReplaceWithVAR no longer abruptly stops when converting Set Variable If with comments to VAR.

Robocop 6.8.1

16 Oct 16:00
976d231

Choose a tag to compare

Python 3.14 compatibility

Fixed an issue where Robocop had 1/3 of its rules disabled when executed with Python 3.14.

Robocop 6.8.0

12 Oct 12:57
c8d83a7

Choose a tag to compare

This release focus on improving & fixing issues with disablers and comment handling. Includes following changes:

  • Unused disabler rule
  • Improved comment handling in SplitTooLongLine formatter
  • Disablers discoverable anywhere in comments

and fixes:

  • Overwrite mode not working from configuration file
  • Rules url pointed to non-existing location
  • Line too long rule reporting lines with new disablers

You can read full release notes at https://github.com/MarketSquare/robotframework-robocop/blob/main/docs/releasenotes/6.8.0.rst

Robocop 6.7.2

01 Oct 16:22
a131d0a

Choose a tag to compare

Assertion keywords reported as undefined-argument-value (#1390)

Assertion keywords used by popular AssertionEngine library were reported as undefined-argument-value errors::

 785 |   Get Text   ${selector}   *=   ${alv_check}
     |                            ^^ ARG04

Robocop should now ignore arguments that match following list: "==", "!=", "<", ">", "<=", ">=", "*=", "^=", "$=", "$".

SonarQube import issues with diagnostic outside physical locations (#1417)

Fixed issues when reporting SPC10 too-many-trailing-blank-lines and LEN08 line-too-long outside physical
locations. Now it should only report start/end lines.

RenameVariables lower-casing VAR variables with global scope (#1425)

Following code:

*** Keywords ***
Some keyword
    &{SOME_DICT}    Some keyword that returns a dict
    VAR    &{SOME_DICT}    &{SOME_DICT}   scope=TEST

was incorrectly converted to:

*** Keywords ***
Some keyword
    &{some_dict}    Some keyword that returns a dict
    VAR    &{some_dict}    &{some_dict}   scope=TEST

It should now correctly detect new (global) case of variable and convert it to:

*** Keywords ***
Some keyword
    &{some_dict}    Some keyword that returns a dict
    VAR    &{SOME_DICT}    &{some_dict}   scope=TEST

RenameVariables VAR variables stuck forever with local scope (#1425)

When using VAR with local scope, VAR did not change back to global scope after switching scope again.

Following code:

*** Keywords ***
Some keyword
    VAR    ${local_variable}    scope=local
    Log    ${local_variable}
    VAR    ${local_variable}    scope=SUITE
    Log    ${local_variable}

will now be formatted to:

*** Keywords ***
Some keyword
    VAR    ${local_variable}    scope=local
    Log    ${local_variable}
    VAR    ${LOCAL_VARIABLE}    scope=SUITE
    Log    ${LOCAL_VARIABLE}

Robocop 6.7.1

28 Sep 16:21
f30ef44

Choose a tag to compare

Configuring formatters with integer based parameters crashes Robocop (#1441)

Running Robocop with older Robot Framework versions than 7.0 no longer crashes when trying to configure with
integer based parameter::

robocop format AlignSettingsSection.fixed_width=30

The issue was coming from not supporting the Python extended typing in formatter definition::

min_width: int | None = None

| is not supported for Robot Framework < 7.0 and needs to be removed if you're using it in custom formatter::

min_width: int = None

Rules that use more granular version matching are ignored if target version is not set (#1466)

Rules that require more granular version of Robot Framework (such as > 6.1) will no longer be silently ignored if
Robocop is executed on the same major version (6.1.1 for example) without target version set.

Importing external modules in custom rules with the same name as Robocop rules fails (#1467)

If custom rule used external module with the same name as one of Robocop rules categories, it failed on import:

from deprecated import deprecated  # duplicates with robocop.linter.rules.deprecated.py

It was resolved by redesigning our rules importing logic to follow the same behaviour as formatter importer.

Robocop 6.7.0

15 Sep 08:37
2a6479f

Choose a tag to compare

This release was entirely community driven, huge thanks for @p-zander, @pavezzo & others for discussing and implementing
new changes and fixes.

New too-long-variable-name rule (#1443)

New LEN32 too-long-variable-name rule which reports variables with names longer than 40 characters. Allowed length
can be configured with max_len parameter.

Fix importing custom formatters (#1446)

Using Robocop with custom formatter will no longer throw an error when importing from inside Python module::

robocop --custom-formatters formatpath.to.my.CustomFormatter --configure CustomFormatter.enabled=True

Fix AttributeError when importing dataclass with Python 3.12 (#1449)

Robocop should no longer throw AttributeError when using dataclasses in custom rules with Python 3.12.

Robocop 6.6.1

10 Aug 12:41
7ffdaed

Choose a tag to compare

Fix false positive possible-variable-overwriting on dictionary access (#1431)

Following code will no longer trigger VAR08 possible-variable-overwriting:

Dictionary item
    VAR    &{data} =    &{EMPTY}
    ${data}[key] =    Browser.Get Text    ${LABEL.contentItem('${content}')}

From now on variable type should also be ignored by possible-variable-overwriting and inconsistent-variable-name
rules. For example ${variable} and &{variable} are considered as the same name.

Robocop 6.6.0

07 Aug 16:25
6243ea5

Choose a tag to compare

New parameter ignore_templated for too-long-test-case rule (#1429)

LEN04 too-long-test-case can be now configured with ignore_templated=True if you want to ignore long,
templated test cases.

Thanks @GeoGegl for contribution!