Skip to main content

Static code analysis tool (linter) for Robot Framework

Project description

GitHub Workflow Unit Tests Status Code coverage on master branch PyPI package version Supported Python versions PyPI - License

Robocop logo

Robocop

Introduction

Robocop is a tool that performs static code analysis of Robot Framework code.

It uses official Robot Framework parsing API to parse files and run number of checks, looking for potential errors or violations to code quality standards.

Hosted on GitHub

Documentation

Full documentation available here.

Values

Original RoboCop - a fictional cybernetic police officer - was following 3 prime directives which also drive the progress of Robocop linter:

First Directive: Serve the public trust

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

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

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

Requirements

Python 3.6+ and Robot Framework 3.2.1+.

Installation

You can install Robocop simply by running:

pip install 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 tests\test.robot

Will result in following output:

C:\OCP_project\tests\test.robot:7:0 [W] 0509 Section is empty
C:\OCP_project\tests\test.robot:22:0 [E] 0801 Multiple test cases with name "Simple Test" in suite
C:\OCP_project\tests\test.robot:42:0 [E] 0810 Both Task(s) and Test Case(s) section headers defined in file
C:\OCP_project\tests\test.robot:48:0 [W] 0302 Keyword name should be capitalized
C:\OCP_project\tests\test.robot:51:13 [I] 0606 This tag is already set by Force Tags in suite settings

Found 5 issue(s): 2 WARNING(s), 2 ERROR(s), 1 INFO(s).

Main features

  • including/excluding rules from command line with the support for glob patterns:

    --include *missing* -i W0507 --exclude rule,rule2 -e *doc*
  • disabling rules directly from source code

    Ignoring rules in one line:

    This is Keyword  # robocop: disable=not-capitalized-keyword-name

    Ignoring all rules or selected ones:

    Log  ${var}
    Log  ${var}  # robocop: disable
    log  ${var}  # robocop: disable=0301,0302
    Log  ${var}  # noqa

    Ignoring whole blocks or even files:

    # robocop: disable=unnecessary-default-tags,0102
    *** Settings ***
    Library  RobotLibrary.py
    
    # robocop: enable=0102
  • filtering out all rules below given severity level:

    --threshold E
  • customized format of output message:

    --format "{source}:{line}:{col} [{severity}] {rule_id} {desc}"
  • configurable return status for every severity level:

    --configure return_status:quality_gate:E=2:W=39
  • generating customized reports:

    --reports rules_by_id,rules_by_error_type
    
    Issues by ids:
    W1007 (uneven-indent)                : 5
    E0904 (nested-for-loop)              : 4
    W0302 (not-capitalized-keyword-name) : 4
    
    Found 12 issue(s): 9 WARNING(s), 4 ERROR(s).
  • configurable lint rules:

    --configure 0507:line_length:100 -c uneven-indent:severity:W
  • external rules support:

    --ext_rules path/to/your/rules.py -rules supports_many_paths.py
  • output redirection to file:

    --output robocop.log
  • loading arguments from file:

    --argumentfile jenkins_args.txt
  • configurable scanned filetypes:

    --filetypes .txt,.rst
  • paths matching pattern can be ignored:

    --ignore *.robot,resources/* --ignore special_file.txt

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

robotframework-robocop-1.5.0.tar.gz (53.2 kB view details)

Uploaded Source

Built Distribution

robotframework_robocop-1.5.0-py3-none-any.whl (69.0 kB view details)

Uploaded Python 3

File details

Details for the file robotframework-robocop-1.5.0.tar.gz.

File metadata

  • Download URL: robotframework-robocop-1.5.0.tar.gz
  • Upload date:
  • Size: 53.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.0 importlib_metadata/3.7.3 packaging/20.9 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for robotframework-robocop-1.5.0.tar.gz
Algorithm Hash digest
SHA256 20c019417e006573ed6b645366e72bbaa81f1d49a35cae661f29a739cea3235c
MD5 58a3e7e5f1896383ce330eb38d9c8df8
BLAKE2b-256 affe7df4cebd748b77eccbb33d0bef5b9ebbc193722541731fded867895a0239

See more details on using hashes here.

File details

Details for the file robotframework_robocop-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: robotframework_robocop-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 69.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.0 importlib_metadata/3.7.3 packaging/20.9 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for robotframework_robocop-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 52dba2e1c304402a88c6a7a8e002c535ef1032ea6788463611e40c95b8da4c10
MD5 7c6cccd28e9dcaf7a054d0a5b5554dce
BLAKE2b-256 ef2bbd17e0a7ea7cb50c9a62a511c12e2771e8405eb5ca7d116f7dc78fa85d21

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page