Releases: MarketSquare/robotframework-robocop
Robocop 6.9.0
Robocop 6.8.3
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
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
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
This release focus on improving & fixing issues with disablers and comment handling. Includes following changes:
- Unused disabler rule
- Improved comment handling in
SplitTooLongLineformatter - 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
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
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
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
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.