robotframework-robocop


Namerobotframework-robocop JSON
Version 5.0.4 PyPI version JSON
download
home_pagehttps://github.com/MarketSquare/robotframework-robocop
SummaryStatic code analysis tool (linter) for Robot Framework
upload_time2024-04-10 07:26:07
maintainerNone
docs_urlNone
authorBartlomiej Hirsz, Mateusz Nojek
requires_python>=3.8
licenseApache License 2.0
keywords robotframework automation testautomation testing linter qa
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![Unit tests](https://github.com/MarketSquare/robotframework-robocop/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/MarketSquare/robotframework-robocop/actions/workflows/unit-tests.yml "GitHub Workflow Unit Tests Status")
![Codecov](https://img.shields.io/codecov/c/github/MarketSquare/robotframework-robocop/master "Code coverage on master branch")
![PyPI](https://img.shields.io/pypi/v/robotframework-robocop?label=version "PyPI package version")
![Python versions](https://img.shields.io/pypi/pyversions/robotframework-robocop "Supported Python versions")
![License](https://img.shields.io/pypi/l/robotframework-robocop "PyPI - License")
[![Downloads](https://static.pepy.tech/personalized-badge/robotframework-robocop?period=total&units=international_system&left_color=grey&right_color=orange&left_text=downloads)](https://pepy.tech/project/robotframework-robocop)

---

<img style="float:right" src="https://raw.githubusercontent.com/MarketSquare/robotframework-robocop/master/docs/images/robocop_logo_small.png">

Robocop
===============

- [Introduction](#introduction)
- [Documentation](#documentation)
- [Requirements](#requirements)
- [Installation](#installation)
- [Usage](#usage)
- [Example Output](#example-output)
- [Values](#values)
- [Fixing issues](#fixing-issues)
- [FAQ](#faq)

Watch our talks from
[RoboCon 2021](https://www.youtube.com/watch?v=vZoyi2ObM8E)
and
[RoboCon 2022](https://www.youtube.com/watch?v=t_R36N_4UBk)
about Robocop &
[Robotidy](https://github.com/MarketSquare/robotframework-tidy)
and learn more about these cool tools! :robot:

[![Robocop & Robotidy presentation at RoboCon 2021](http://img.youtube.com/vi/vZoyi2ObM8E/0.jpg)](https://youtu.be/vZoyi2ObM8E "Robocop & Robotidy presentation at RoboCon 2021")
[![Robocop presentation at RoboCon 2022](http://img.youtube.com/vi/t_R36N_4UBk/0.jpg)](https://youtu.be/t_R36N_4UBk "Robocop presentation at RoboCon 2022")

---

Introduction
------------

Robocop is a tool that performs static code analysis 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). :medal_military:

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.8+ :snake: and Robot Framework 3.2.2+ :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.
You can simply run:

```
robocop
```

All command line options can be displayed in help message by executing:

```
robocop -h
```

Example Output
--------------

Executing command:

```
robocop --report rules_by_error_type test.robot
```


Will result in following output:

```text
\Users\OCP\test.robot:7:1 [W] 0509 Section '*** Variables ***' is empty (empty-section)
\Users\OCP\test.robot:22:1 [E] 0801 Multiple test cases with name "Simple Test" (first occurrence in line 17) (duplicated-test-case)
\Users\OCP\test.robot:42:1 [E] 0810 Both Task(s) and Test Case(s) section headers defined in file (both-tests-and-tasks)
\Users\OCP\test.robot:48:1 [W] 0302 Keyword 'my keyword' does not follow case convention (wrong-case-in-keyword-name)
\Users\OCP\test.robot:51:13 [I] 0606 Tag 'mytag' is already set by Test Tags in suite settings (tag-already-set-in-test-tags)

Found 5 issues: 2 ERRORs, 2 WARNINGs, 1 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**.

Fixing issues
--------------
Many issues in your code reported by Robocop can be fixed using auto-formatting tool, Robotidy.
Check out the Robotidy [documentation](https://robotidy.readthedocs.io/en/stable/).

FAQ
---
<details>
  <summary>Can I integrate Robocop with my code editor (IDE)?</summary>

  **Yes**, Robocop integrates nicely with popular IDEs like PyCharm or VSCode
  thanks to [Robot Framework Language Server](https://github.com/robocorp/robotframework-lsp).
  Read simple manual (README) in that project to figure out how to install & use it.

  You can also use Robocop in PyCharm easily as an external tool.
  To configure it, go to: `File` → `Settings` → `Tools` → `External Tools`
  and click `+` icon. Then put values based on
  [official instructions](https://www.jetbrains.com/help/pycharm/configuring-third-party-tools.html)
  or this screenshot:

  ![Robocop](docs/images/robocop_external_tool.jpg)

  If you're using Python virtual environment in your project,
  make sure to provide correct path to robocop.exe located in `venv\Scripts\robocop.exe`.
  Now, you can run Robocop by right-clicking on a file or directory and choosing
  `External tools` → `Robocop`.

  We suggest also to add a keyboard shortcut (e.g. `Ctrl + , (comma)`)
  to quickly run Robocop on selected files. You can map the shortcut in `Settings` → `Keymap`.
</details>

<details>
  <summary>Can I load configuration from file?</summary>

  **Yes**, there are multiple ways to configure Robocop:

  **Argument file**

  You can add command line options to an argument file, preferably one option with value for a line.
  Such file can be used as an input for Robocop with `--argumentfile / -A` option, e.g.
  ```robocop -A robocop.cfg```. You can mix arguments from a file with ones provided in run command.

  Example argument file:

  ```commandline
  --exclude *doc*
  --exclude 0510
  --threshold W
  --configure inconsistent-assignment:assignment_sign_type:equal_sign
  --configure line-too-long:line_length:140
  --reports all
  --output robocop.log
  ```

  ---

  **`.robocop` file**

  It is a default file that is loaded only when no command line options are provided for Robocop.
  When running plain `robocop` command, it looks for `.robocop` file from place where it was run
  until it finds `.git` file. Options can be provided like in the example above.

  ---

  **`pyproject.toml` file**

  If there is no `.robocop` file and `toml` module is installed,
  Robocop will try to load configuration from `pyproject.toml` file (if it exists).
  Options have the same names as command line arguments
  and need to be placed under `[tool.robocop]` section.

  Example configuration file:

  ```commandline
  [tool.robocop]
  paths = [
      "tests\\atest\\rules\\bad-indent",
      "tests\\atest\\rules\\duplicated-library"
  ]
  include = ['W0504', '*doc*']
  exclude = ["0203"]
  reports = [
      "rules_by_id",
      "scan_timer"
  ]
  ignore = ["ignore_me.robot"]
  ext-rules = ["path_to_external\\dir"]
  filetypes = [".txt", ".tsv"]
  threshold = "E"
  format = "{source}:{line}:{col} [{severity}] {rule_id} {desc} (name)"
  output = "robocop.log"
  configure = [
      "line-too-long:line_length:150",
      "0201:severity:E"
  ]
  no_recursive = true
  ```
</details>

<details>
  <summary>I use different coding standards. Can I configure rules so that they fit my needs?</summary>

  **Yes**, some rules are configurable. You can list them by running `robocop --list-configurables`
  or just `robocop -lc`.

  Configuring is done by using `-c / --configure` command line option followed by pattern
  `<rule>:<param_name>:<value>` where:
  - `<rule>` can either be rule name or its id
  - `<param_name>` is a public name of the parameter
  - `<value>` is a desired value of the parameter

  For example:

  ```commandline
  --configure line-too-long:line_length:140
  ```

  is equivalent to

  ```commandline
  -c 0508: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:

  ```commandline
  -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: disable
  ```

  More about it in
  [our documentation](https://robocop.readthedocs.io/en/stable/including_rules.html#ignore-rule-from-source-code).

</details>

<details>
  <summary>Can I define custom rules?</summary>

  **Yes**, you can define and include custom rules using `-rules / --ext-rules` command line option
  by providing a path to a file containing your rule(s). The option accepts comma-separated list
  of paths to files or directories, e.g.
  ```
  robocop -rules my/own/rule.py --ext-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 external rules with code examples in
  [our documentation](https://robocop.readthedocs.io/en/stable/external_rules.html).
</details>

<details>
  <summary>Can I use Robocop in continuous integration (CI) tools?</summary>

  **Yes**, it is easy to integrate Robocop with CI and other tools.
  For more details read [our documentation](https://robocop.readthedocs.io/en/stable/ci.html).

</details>

<details>
  <summary>Can I configure return status / code?</summary>

  **Yes**, by default Robocop returns code 0 if number of found issues does not exceed quality gates.

  Quality gates are the number specified for each severity (error, warning, info) that cannot be
  exceeded. Every violation of quality gates increases the return code by 1 up to maximum of 255.
  Default values for quality gates are:

  ```
  quality_gate = {
            'E': 0,
            'W': 0,
            'I': -1
        }
  ```

  which shows the accepted number of issues by severity. In that case each error and warning
  increases the return code. Rules with INFO severity do not affect the return code.

  To configure quality gates, you simply use `-c / --configure` command line option
  with following pattern ```--configure return_status:quality_gates:<severity>=limit```.
  You can change all limits at once. Example:

  ```commandline
  --configure return_status:quality_gates:E=0:W=100:I=-1
  ```

  which means that no errors are accepted, up to 100 warnings are tolerated and issues with
  INFO severity do not affect the return code.

</details>

<details>
  <summary>What is the difference between Robocop and rflint?</summary>

  Robocop is better in every case because it:

  - has maaaaany rules that check the quality of your Robot Framework code
  - is integrated with popular IDE tools
  - is highly configurable
  - has very good defaults that work out of the box
  - can be configured in source code
  - uses the latest [Robot Framework Parsing API](https://robot-framework.readthedocs.io/en/stable/)
  - is actively developed & fixed
  - is easy to integrate with external tools
  - can redirect output to a file
  - displays nice reports
  - is easy to extend it with new rules
  - is cool :nerd_face:

  Still not convinced?
  [Watch our talk](https://www.youtube.com/watch?v=vZoyi2ObM8E)
  about Robocop &
  [Robotidy](https://github.com/MarketSquare/robotframework-tidy)
  and see for yourself! :monocle_face:

</details>

----

> Excuse me, I have to go. Somewhere there is a crime happening. - Robocop

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/MarketSquare/robotframework-robocop",
    "name": "robotframework-robocop",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "robotframework automation testautomation testing linter qa",
    "author": "Bartlomiej Hirsz, Mateusz Nojek",
    "author_email": "bartek.hirsz@gmail.com, matnojek@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/8a/20/6c986381b6ac9d9b07d13d0cb09e4878e0e7dd30c656c72de59b1dfcacb5/robotframework-robocop-5.0.4.tar.gz",
    "platform": "any",
    "description": "[![Unit tests](https://github.com/MarketSquare/robotframework-robocop/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/MarketSquare/robotframework-robocop/actions/workflows/unit-tests.yml \"GitHub Workflow Unit Tests Status\")\n![Codecov](https://img.shields.io/codecov/c/github/MarketSquare/robotframework-robocop/master \"Code coverage on master branch\")\n![PyPI](https://img.shields.io/pypi/v/robotframework-robocop?label=version \"PyPI package version\")\n![Python versions](https://img.shields.io/pypi/pyversions/robotframework-robocop \"Supported Python versions\")\n![License](https://img.shields.io/pypi/l/robotframework-robocop \"PyPI - License\")\n[![Downloads](https://static.pepy.tech/personalized-badge/robotframework-robocop?period=total&units=international_system&left_color=grey&right_color=orange&left_text=downloads)](https://pepy.tech/project/robotframework-robocop)\n\n---\n\n<img style=\"float:right\" src=\"https://raw.githubusercontent.com/MarketSquare/robotframework-robocop/master/docs/images/robocop_logo_small.png\">\n\nRobocop\n===============\n\n- [Introduction](#introduction)\n- [Documentation](#documentation)\n- [Requirements](#requirements)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Example Output](#example-output)\n- [Values](#values)\n- [Fixing issues](#fixing-issues)\n- [FAQ](#faq)\n\nWatch our talks from\n[RoboCon 2021](https://www.youtube.com/watch?v=vZoyi2ObM8E)\nand\n[RoboCon 2022](https://www.youtube.com/watch?v=t_R36N_4UBk)\nabout Robocop &\n[Robotidy](https://github.com/MarketSquare/robotframework-tidy)\nand learn more about these cool tools! :robot:\n\n[![Robocop & Robotidy presentation at RoboCon 2021](http://img.youtube.com/vi/vZoyi2ObM8E/0.jpg)](https://youtu.be/vZoyi2ObM8E \"Robocop & Robotidy presentation at RoboCon 2021\")\n[![Robocop presentation at RoboCon 2022](http://img.youtube.com/vi/t_R36N_4UBk/0.jpg)](https://youtu.be/t_R36N_4UBk \"Robocop presentation at RoboCon 2022\")\n\n---\n\nIntroduction\n------------\n\nRobocop is a tool that performs static code analysis of [Robot Framework](https://github.com/robotframework/robotframework) code.\n\nIt uses official [Robot Framework parsing API](https://robot-framework.readthedocs.io/en/stable/) to parse files and runs number of checks,\nlooking for potential errors or violations to code quality standards (commonly referred as *linting issues*).\n\n> Hosted on [GitHub](https://github.com/MarketSquare/robotframework-robocop). :medal_military:\n\nDocumentation\n-------------\n\nFull documentation is available [here](https://robocop.readthedocs.io). :open_book:\n\nMost common questions with answers can be found at the bottom \u2b07 of this README file.\n\nRequirements\n------------\n\nPython 3.8+ :snake: and Robot Framework 3.2.2+ :robot:.\n\nInstallation\n------------\n\nYou can install the latest version of Robocop simply by running:\n\n```\npip install -U robotframework-robocop\n```\n\n\nUsage\n-----\n\nRobocop runs by default from the current directory and it discovers supported files recursively.\nYou can simply run:\n\n```\nrobocop\n```\n\nAll command line options can be displayed in help message by executing:\n\n```\nrobocop -h\n```\n\nExample Output\n--------------\n\nExecuting command:\n\n```\nrobocop --report rules_by_error_type test.robot\n```\n\n\nWill result in following output:\n\n```text\n\\Users\\OCP\\test.robot:7:1 [W] 0509 Section '*** Variables ***' is empty (empty-section)\n\\Users\\OCP\\test.robot:22:1 [E] 0801 Multiple test cases with name \"Simple Test\" (first occurrence in line 17) (duplicated-test-case)\n\\Users\\OCP\\test.robot:42:1 [E] 0810 Both Task(s) and Test Case(s) section headers defined in file (both-tests-and-tasks)\n\\Users\\OCP\\test.robot:48:1 [W] 0302 Keyword 'my keyword' does not follow case convention (wrong-case-in-keyword-name)\n\\Users\\OCP\\test.robot:51:13 [I] 0606 Tag 'mytag' is already set by Test Tags in suite settings (tag-already-set-in-test-tags)\n\nFound 5 issues: 2 ERRORs, 2 WARNINGs, 1 INFO.\n```\n\nValues\n-------\nOriginal *RoboCop* - a fictional cybernetic police officer :policeman: - was following 3 prime directives\nwhich also drive the progress of Robocop linter:\n\n> First Directive: **Serve the public trust** :family_man_woman_girl_boy:\n\nWhich lies behind the creation of the project - to **serve** developers and testers as a tool to build applications they can **trust**.\n\n> Second Directive: **Protect the innocent** :baby:\n\n**The innocent** testers and developers have no intention to produce ugly code but sometimes, you know, it just happens,\nso Robocop is there to **protect** them.\n\n> Third Directive: **Uphold the law** :classical_building:\n\nFollowing the coding guidelines established in the project are something very important to keep the code clean,\nreadable and understandable by others and Robocop can help to **uphold the law**.\n\nFixing issues\n--------------\nMany issues in your code reported by Robocop can be fixed using auto-formatting tool, Robotidy.\nCheck out the Robotidy [documentation](https://robotidy.readthedocs.io/en/stable/).\n\nFAQ\n---\n<details>\n  <summary>Can I integrate Robocop with my code editor (IDE)?</summary>\n\n  **Yes**, Robocop integrates nicely with popular IDEs like PyCharm or VSCode\n  thanks to [Robot Framework Language Server](https://github.com/robocorp/robotframework-lsp).\n  Read simple manual (README) in that project to figure out how to install & use it.\n\n  You can also use Robocop in PyCharm easily as an external tool.\n  To configure it, go to: `File` \u2192 `Settings` \u2192 `Tools` \u2192 `External Tools`\n  and click `+` icon. Then put values based on\n  [official instructions](https://www.jetbrains.com/help/pycharm/configuring-third-party-tools.html)\n  or this screenshot:\n\n  ![Robocop](docs/images/robocop_external_tool.jpg)\n\n  If you're using Python virtual environment in your project,\n  make sure to provide correct path to robocop.exe located in `venv\\Scripts\\robocop.exe`.\n  Now, you can run Robocop by right-clicking on a file or directory and choosing\n  `External tools` \u2192 `Robocop`.\n\n  We suggest also to add a keyboard shortcut (e.g. `Ctrl + , (comma)`)\n  to quickly run Robocop on selected files. You can map the shortcut in `Settings` \u2192 `Keymap`.\n</details>\n\n<details>\n  <summary>Can I load configuration from file?</summary>\n\n  **Yes**, there are multiple ways to configure Robocop:\n\n  **Argument file**\n\n  You can add command line options to an argument file, preferably one option with value for a line.\n  Such file can be used as an input for Robocop with `--argumentfile / -A` option, e.g.\n  ```robocop -A robocop.cfg```. You can mix arguments from a file with ones provided in run command.\n\n  Example argument file:\n\n  ```commandline\n  --exclude *doc*\n  --exclude 0510\n  --threshold W\n  --configure inconsistent-assignment:assignment_sign_type:equal_sign\n  --configure line-too-long:line_length:140\n  --reports all\n  --output robocop.log\n  ```\n\n  ---\n\n  **`.robocop` file**\n\n  It is a default file that is loaded only when no command line options are provided for Robocop.\n  When running plain `robocop` command, it looks for `.robocop` file from place where it was run\n  until it finds `.git` file. Options can be provided like in the example above.\n\n  ---\n\n  **`pyproject.toml` file**\n\n  If there is no `.robocop` file and `toml` module is installed,\n  Robocop will try to load configuration from `pyproject.toml` file (if it exists).\n  Options have the same names as command line arguments\n  and need to be placed under `[tool.robocop]` section.\n\n  Example configuration file:\n\n  ```commandline\n  [tool.robocop]\n  paths = [\n      \"tests\\\\atest\\\\rules\\\\bad-indent\",\n      \"tests\\\\atest\\\\rules\\\\duplicated-library\"\n  ]\n  include = ['W0504', '*doc*']\n  exclude = [\"0203\"]\n  reports = [\n      \"rules_by_id\",\n      \"scan_timer\"\n  ]\n  ignore = [\"ignore_me.robot\"]\n  ext-rules = [\"path_to_external\\\\dir\"]\n  filetypes = [\".txt\", \".tsv\"]\n  threshold = \"E\"\n  format = \"{source}:{line}:{col} [{severity}] {rule_id} {desc} (name)\"\n  output = \"robocop.log\"\n  configure = [\n      \"line-too-long:line_length:150\",\n      \"0201:severity:E\"\n  ]\n  no_recursive = true\n  ```\n</details>\n\n<details>\n  <summary>I use different coding standards. Can I configure rules so that they fit my needs?</summary>\n\n  **Yes**, some rules are configurable. You can list them by running `robocop --list-configurables`\n  or just `robocop -lc`.\n\n  Configuring is done by using `-c / --configure` command line option followed by pattern\n  `<rule>:<param_name>:<value>` where:\n  - `<rule>` can either be rule name or its id\n  - `<param_name>` is a public name of the parameter\n  - `<value>` is a desired value of the parameter\n\n  For example:\n\n  ```commandline\n  --configure line-too-long:line_length:140\n  ```\n\n  is equivalent to\n\n  ```commandline\n  -c 0508:line_length:140\n  ```\n\n  ---\n  Each rule's severity can also be overwritten. Possible values are\n  `e/error`, `w/warning` or `i/info` and are case-insensitive. Example:\n\n  ```commandline\n  -c too-long-test-case:severity:e\n  ```\n\n  ---\n  If there are special cases in your code that violate the rules,\n  you can also exclude them in the source code.\n\n  Example:\n\n  ```\n  Keyword with lowercased name  # robocop: disable\n  ```\n\n  More about it in\n  [our documentation](https://robocop.readthedocs.io/en/stable/including_rules.html#ignore-rule-from-source-code).\n\n</details>\n\n<details>\n  <summary>Can I define custom rules?</summary>\n\n  **Yes**, you can define and include custom rules using `-rules / --ext-rules` command line option\n  by providing a path to a file containing your rule(s). The option accepts comma-separated list\n  of paths to files or directories, e.g.\n  ```\n  robocop -rules my/own/rule.py --ext-rules rules.py,external_rules.py\n  ```\n\n  If you feel that your rule is very helpful and should be included in Robocop permanently,\n  you can always share your solution by\n  [submitting a pull request](https://github.com/MarketSquare/robotframework-robocop/pulls).\n  You can also share your idea by\n  [creating an issue](https://github.com/MarketSquare/robotframework-robocop/issues/new/choose).\n\n  More about external rules with code examples in\n  [our documentation](https://robocop.readthedocs.io/en/stable/external_rules.html).\n</details>\n\n<details>\n  <summary>Can I use Robocop in continuous integration (CI) tools?</summary>\n\n  **Yes**, it is easy to integrate Robocop with CI and other tools.\n  For more details read [our documentation](https://robocop.readthedocs.io/en/stable/ci.html).\n\n</details>\n\n<details>\n  <summary>Can I configure return status / code?</summary>\n\n  **Yes**, by default Robocop returns code 0 if number of found issues does not exceed quality gates.\n\n  Quality gates are the number specified for each severity (error, warning, info) that cannot be\n  exceeded. Every violation of quality gates increases the return code by 1 up to maximum of 255.\n  Default values for quality gates are:\n\n  ```\n  quality_gate = {\n            'E': 0,\n            'W': 0,\n            'I': -1\n        }\n  ```\n\n  which shows the accepted number of issues by severity. In that case each error and warning\n  increases the return code. Rules with INFO severity do not affect the return code.\n\n  To configure quality gates, you simply use `-c / --configure` command line option\n  with following pattern ```--configure return_status:quality_gates:<severity>=limit```.\n  You can change all limits at once. Example:\n\n  ```commandline\n  --configure return_status:quality_gates:E=0:W=100:I=-1\n  ```\n\n  which means that no errors are accepted, up to 100 warnings are tolerated and issues with\n  INFO severity do not affect the return code.\n\n</details>\n\n<details>\n  <summary>What is the difference between Robocop and rflint?</summary>\n\n  Robocop is better in every case because it:\n\n  - has maaaaany rules that check the quality of your Robot Framework code\n  - is integrated with popular IDE tools\n  - is highly configurable\n  - has very good defaults that work out of the box\n  - can be configured in source code\n  - uses the latest [Robot Framework Parsing API](https://robot-framework.readthedocs.io/en/stable/)\n  - is actively developed & fixed\n  - is easy to integrate with external tools\n  - can redirect output to a file\n  - displays nice reports\n  - is easy to extend it with new rules\n  - is cool :nerd_face:\n\n  Still not convinced?\n  [Watch our talk](https://www.youtube.com/watch?v=vZoyi2ObM8E)\n  about Robocop &\n  [Robotidy](https://github.com/MarketSquare/robotframework-tidy)\n  and see for yourself! :monocle_face:\n\n</details>\n\n----\n\n> Excuse me, I have to go. Somewhere there is a crime happening. - Robocop\n",
    "bugtrack_url": null,
    "license": "Apache License 2.0",
    "summary": "Static code analysis tool (linter) for Robot Framework",
    "version": "5.0.4",
    "project_urls": {
        "Documentation": "https://robocop.readthedocs.io/en/stable",
        "Download": "https://pypi.org/project/robotframework-robocop",
        "Homepage": "https://github.com/MarketSquare/robotframework-robocop",
        "Issue tracker": "https://github.com/MarketSquare/robotframework-robocop/issues",
        "Source code": "https://github.com/MarketSquare/robotframework-robocop"
    },
    "split_keywords": [
        "robotframework",
        "automation",
        "testautomation",
        "testing",
        "linter",
        "qa"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a1ee367f0705d206a5c0c3a283b9bf49ea4b405fedb76dff836950267a44727e",
                "md5": "96095509416a00e67f04f34c6a39fb60",
                "sha256": "bfb37913da4552e7a5e9190dcfc8f2a337aebba402492ac791c48a7fa48cdb48"
            },
            "downloads": -1,
            "filename": "robotframework_robocop-5.0.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "96095509416a00e67f04f34c6a39fb60",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 114077,
            "upload_time": "2024-04-10T07:26:04",
            "upload_time_iso_8601": "2024-04-10T07:26:04.006045Z",
            "url": "https://files.pythonhosted.org/packages/a1/ee/367f0705d206a5c0c3a283b9bf49ea4b405fedb76dff836950267a44727e/robotframework_robocop-5.0.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8a206c986381b6ac9d9b07d13d0cb09e4878e0e7dd30c656c72de59b1dfcacb5",
                "md5": "7d209991cab2c890e480c0757db3ae53",
                "sha256": "9034267f36d5102817b525a990ca73b7fe07b05cf3869a79381a2955dc18fac9"
            },
            "downloads": -1,
            "filename": "robotframework-robocop-5.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "7d209991cab2c890e480c0757db3ae53",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 103046,
            "upload_time": "2024-04-10T07:26:07",
            "upload_time_iso_8601": "2024-04-10T07:26:07.223327Z",
            "url": "https://files.pythonhosted.org/packages/8a/20/6c986381b6ac9d9b07d13d0cb09e4878e0e7dd30c656c72de59b1dfcacb5/robotframework-robocop-5.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-10 07:26:07",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "MarketSquare",
    "github_project": "robotframework-robocop",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "robotframework-robocop"
}
        
Elapsed time: 0.26621s