https://github.com/marketsquare/robotframework-robocop
Tool for static code analysis and formatting of Robot Framework language
https://github.com/marketsquare/robotframework-robocop
linter python robocop robotframework testing
Last synced: 6 months ago
JSON representation
Tool for static code analysis and formatting of Robot Framework language
- Host: GitHub
- URL: https://github.com/marketsquare/robotframework-robocop
- Owner: MarketSquare
- License: apache-2.0
- Created: 2020-07-08T09:12:36.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-04-06T16:09:46.000Z (6 months ago)
- Last Synced: 2025-04-06T21:08:16.236Z (6 months ago)
- Topics: linter, python, robocop, robotframework, testing
- Language: Python
- Homepage: https://robocop.readthedocs.io/
- Size: 3.4 MB
- Stars: 211
- Watchers: 10
- Forks: 38
- Open Issues: 43
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/MarketSquare/robotframework-robocop/actions/workflows/unit-tests.yml "GitHub Workflow Unit Tests Status")




[](https://pepy.tech/project/robotframework-robocop)---
Robocop
===============- [Introduction](#introduction)
- [Documentation](#documentation)
- [Requirements](#requirements)
- [Installation](#installation)
- [Usage](#usage)
- [Example Output](#example-output)
- [Values](#values)
- [Fixing issues](#fixing-issues)
- [FAQ](#faq)---
Introduction
------------Robocop is a tool that performs static code analysis and formatting of [Robot Framework](https://github.com/robotframework/robotframework) code.
It uses official [Robot Framework parsing API](https://robot-framework.readthedocs.io/en/stable/) to parse files and runs number of checks,
looking for potential errors or violations to code quality standards (commonly referred as *linting issues*).> Hosted on [GitHub](https://github.com/MarketSquare/robotframework-robocop).
Documentation
-------------Full documentation is available [here](https://robocop.readthedocs.io). :open_book:
Most common questions with answers can be found at the bottom ⬇ of this README file.
Requirements
------------Python 3.9+ :snake: and Robot Framework 4.0+ :robot:.
Installation
------------You can install the latest version of Robocop simply by running:
```
pip install -U robotframework-robocop
```Usage
-----Robocop runs by default from the current directory, and it discovers supported files recursively.
To lint the files you can run:```
robocop check
```To format the files you can run:
```commandline
robocop format
```All command line options can be displayed in help message by executing:
```
robocop -h
```Example Output
--------------Executing command:
```
robocop check --report rules_by_error_type test.robot
```Will result in the following output:
```text
test.robot:17:1 SPC22 Not enough whitespace after 'Test Teardown' setting
|
15 |
16 | Test Setup Keyword
17 | Test Teardown Keyword2
| ^ SPC22
18 | Testtimeout 1min
19 | Documentation this is doc
|test.robot:28:1 SPC14 Variable in Variables section is not left aligned
|
1 | *** Variables ***
2 | ${VAR} 1
3 | ${VAR} 1
| ^ SPC14
4 | ${VAR} 1
5 | VALUE 1Found 2 issues: 2 ERRORs, 0 WARNINGs, 0 INFO.
```Values
-------
Original *RoboCop* - a fictional cybernetic police officer :policeman: - was following 3 prime directives
which also drive the progress of Robocop linter:> First Directive: **Serve the public trust** :family_man_woman_girl_boy:
Which lies behind the creation of the project - to **serve** developers and testers as a tool to build applications they can **trust**.
> Second Directive: **Protect the innocent** :baby:
**The innocent** testers and developers have no intention to produce ugly code but sometimes, you know, it just happens,
so Robocop is there to **protect** them.> Third Directive: **Uphold the law** :classical_building:
Following the coding guidelines established in the project are something very important to keep the code clean,
readable and understandable by others and Robocop can help to **uphold the law**.FAQ
---Can I integrate Robocop with my code editor (IDE)?
**Yes**, Robocop integrates nicely with popular IDEs like PyCharm or VSCode
thanks to [RobotCode](https://github.com/robotcodedev/robotcode) plugin.
Read simple manual (README) in that project to figure out how to install & use it.Can I load configuration from file?
**Yes**, you can use toml-based configuration files:
**`pyproject.toml` file**
**`robocop.toml` file**
**`robot.toml` file**Example configuration file:
```toml
[tool.robocop]
exclude = ["deprecated.robot"]
[tool.robocop.lint]
select = [
"rulename",
"ruleid"
]
configure = [
"line-too-long.line_length=110"
]
[tool.robocop.format]
select = ["NormalizeNewLines"]
configure = [
"NormalizeNewLines.flatten_lines=True"
]
```Multiple configuration files are supported. However, global-like options such as ``--verbose`` or ``--reports`` are
only loaded from top configuration file. Read more in
[configuration](https://robocop.readthedocs.io/en/stable/configuration/configuration.html).I use different coding standards. Can I configure rules so that they fit my needs?
**Yes**, some rules and formatters are configurable. You can find the configuration details in the documentation or
by running:```commandline
robocop docs rule_name_or_id
robocop docs formatter_name
```Configuring is done by using `-c / --configure` command line option followed by pattern
`.=` where:
- `` can either be rule name or its id, or formatter name
- `` is a public name of the parameter
- `` is a desired value of the parameterFor example:
```
robocop check --configure line-too-long.line_length=140
```---
Each rule's severity can also be overwritten. Possible values are
`e/error`, `w/warning` or `i/info` and are case-insensitive. Example:```
robocop check -c too-long-test-case.severity=e
```---
If there are special cases in your code that violate the rules,
you can also exclude them in the source code.Example:
```
Keyword with lowercased name # robocop: off
```More about it in
[our documentation](https://robocop.readthedocs.io/en/stable/rules/rules_basics.html#selecting-and-ignoring-rules).Can I define custom rules?
**Yes**, you can define and include custom rules using `--custom-rules` command line option
by providing a path to a file containing your rule(s):
```
robocop --custom-rules my/own/rule.py --custom-rules rules.py,external_rules.py
```If you feel that your rule is very helpful and should be included in Robocop permanently,
you can always share your solution by
[submitting a pull request](https://github.com/MarketSquare/robotframework-robocop/pulls).
You can also share your idea by
[creating an issue](https://github.com/MarketSquare/robotframework-robocop/issues/new/choose).More about custom rules with code examples in
[our documentation](https://robocop.readthedocs.io/en/stable/rules/external_rules.html).Can I use Robocop in continuous integration (CI) tools?
**Yes**, Robocop is able to produce different kinds of reports that are supported by most popular platforms such as
GitHub, Gitlab, Sonar Qube etc. Read more in [reports](https://robocop.readthedocs.io/en/stable/integrations.html).----
> Excuse me, I have to go. Somewhere there is a crime happening. - Robocop