Rules¶
Every issue is reported as robocop.rules.Message
object. It can be later printed or used by
post-run reports.
Output message format¶
Output message of rules can be defined with -f
/ --format
argument. Default value:
"{source}:{line}:{col} [{severity}] {rule_id} {desc} ({name})"
- Available formats:
source
: path to the file where the issue occurredsource_rel
: path to the file where the issue occurred, relative to execution directoryline
: line number where the issue startsend_line
: line number where the issue endscol
: column number where the issue startsend_col
: column number where the issue endsseverity
: severity of the issue, value ofrobocop.rules.RuleSeverity
enumrule_id
: rule id (e.g. 0501)name
: rule name (e.g. ``line-too-long`)desc
: description of the rule
Robocop rules are internally grouped into checkers. Each checker can scan for multiple related issues
(like LengthChecker
checks both for minimum and maximum length of a keyword). You can refer to
specific rule reported by checkers by its name or id (for example too-long-keyword or 0501).
- Checkers are categorized into following groups:
- 01: base
- 02: documentation
- 03: naming
- 04: errors
- 05: lengths
- 06: tags
- 07: comments
- 08: duplications
- 09: misc
- 10: spacing
- 11-50: not yet used: reserved for future internal checkers
- 51-99: reserved for external checkers
Checker has two basic types:
VisitorChecker
uses Robot Framework parsing API and Python ast module for traversing Robot code as nodes,RawFileChecker
simply reads Robot file as normal file and scans every line.
Every rule has a unique id made of 4 digits where first 2 are checker id while 2 latter are rule id. Unique id as well as rule name can be used to refer to the rule (e.g. in include/exclude statements, configurations etc.). You can optionally configure rule severity or other parameters.
-
class
robocop.rules.
RuleSeverity
¶ Rule severity. It can be configured with
--configure id_or_msg_name:severity:value
where value can be first letter of severity value or whole name, case insensitive. For example-c line-too-long:severity:e
will change line-too-long rule severity to error.
You can filter out all rules below given severity value by using following option:
-t/--threshold <severity value>
Example:
--threshold E
will only report rules with severity E and above.
-
ERROR
= 'E'¶
-
INFO
= 'I'¶
-
WARNING
= 'W'¶
-
-
class
robocop.checkers.
VisitorChecker
¶ Bases:
robocop.checkers.BaseChecker
,robot.parsing.model.visitor.ModelVisitor
-
visit_File
(node)¶ Perform generic ast visit on file node.
-
-
class
robocop.checkers.
RawFileChecker
¶ Bases:
robocop.checkers.BaseChecker
-
parse_file
()¶ Read file line by line and for each call check_line method.
-
Documentation¶
[W0201] missing-doc-keyword: Missing documentation in keyword
Defined in
robocop.checkers.documentation.MissingDocumentationChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0202] missing-doc-test-case: Missing documentation in test case
Defined in
robocop.checkers.documentation.MissingDocumentationChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0203] missing-doc-suite: Missing documentation in suite
Defined in
robocop.checkers.documentation.MissingDocumentationChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING
Naming¶
[W0301] invalid-char-in-name: Invalid character %s in %s name
Defined in
robocop.checkers.naming.InvalidCharactersInNameChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING invalid_chars set (‘.’, ‘?’) set of characters not allowed in a name [W0302] wrong-case-in-keyword-name: Keyword name should use title case
Defined in
robocop.checkers.naming.KeywordNamingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING convention str each_word_capitalized possible values: ‘each_word_capitalized’ (default) or ‘first_word_capitalized’ [E0303] keyword-name-is-reserved-word: ‘%s’ is a reserved keyword%s
Defined in
robocop.checkers.naming.KeywordNamingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0304] not-enough-whitespace-after-newline-marker: Provide at least two spaces after ‘…’ marker
Defined in
robocop.checkers.naming.KeywordNamingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [W0305] underscore-in-keyword-name: Underscores in keyword name can be replaced with spaces
Defined in
robocop.checkers.naming.KeywordNamingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0306] setting-name-not-in-title-case: Setting name should be title or upper case
Defined in
robocop.checkers.naming.SettingsNamingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0307] section-name-invalid: Section name should should be in format *** Capitalized *** or *** UPPERCASE ***
Defined in
robocop.checkers.naming.SettingsNamingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0308] not-capitalized-test-case-title: Test case title should start with capital letter
Defined in
robocop.checkers.naming.TestCaseNamingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0309] section-variable-not-uppercase: Section variable name should be uppercase
Defined in
robocop.checkers.naming.VariableNamingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0310] non-local-variables-should-be-uppercase: Test, suite and global variables should be uppercased
Defined in
robocop.checkers.naming.VariableNamingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [E0311] else-not-upper-case: ELSE and ELSE IF should be upper case
Defined in
robocop.checkers.naming.KeywordNamingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0312] keyword-name-is-empty: Keyword name should not be empty
Defined in
robocop.checkers.naming.KeywordNamingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0313] test-case-name-is-empty: Test case name should not be empty
Defined in
robocop.checkers.naming.TestCaseNamingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR
Errors¶
[E0401] parsing-error: Robot Framework syntax error: %s
Defined in
robocop.checkers.errors.ParsingErrorChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0402] missing-whitespace-after-setting: There should be at least two spaces after the %s setting
Defined in
robocop.checkers.errors.TwoSpacesAfterSettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0403] missing-keyword-name: Missing keyword name when calling some values
Defined in
robocop.checkers.errors.MissingKeywordName
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR
Lengths¶
[W0501] too-long-keyword: Keyword is too long (%d/%d)
Defined in
robocop.checkers.lengths.LengthChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING max_len int 40 number of lines allowed in a keyword [W0502] too-few-calls-in-keyword: Keyword has too few keywords inside (%d/%d)
Defined in
robocop.checkers.lengths.LengthChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING min_calls int 1 number of keyword calls required in a keyword [W0503] too-many-calls-in-keyword: Keyword has too many keywords inside (%d/%d)
Defined in
robocop.checkers.lengths.LengthChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING max_calls int 10 number of keyword calls allowed in a keyword [W0504] too-long-test-case: Test case is too long (%d/%d)
Defined in
robocop.checkers.lengths.LengthChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING max_len int 20 number of lines allowed in a test case [W0505] too-many-calls-in-test-case: Test case has too many keywords inside (%d/%d)
Defined in
robocop.checkers.lengths.LengthChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING max_calls int 10 number of keyword calls allowed in a test case [W0506] file-too-long: File has too many lines (%d/%d)
Defined in
robocop.checkers.lengths.LengthChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING max_lines int 400 number of lines allowed in a file [W0507] too-many-arguments: Keyword has too many arguments (%d/%d)
Defined in
robocop.checkers.lengths.LengthChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING max_args int 5 number of arguments a keyword can take [W0508] line-too-long: Line is too long (%d/%d)
Defined in
robocop.checkers.lengths.LineLengthChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING line_length int 120 number of characters allowed in one line [W0509] empty-section: Section is empty
Defined in
robocop.checkers.lengths.EmptySectionChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0510] number-of-returned-values: Too many return values (%d/%d)
Defined in
robocop.checkers.lengths.NumberOfReturnedArgsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING max_returns int 4 allowed number of returned values from a keyword [W0511] empty-metadata: Metadata settings does not have any value set
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0512] empty-documentation: Documentation is empty
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0513] empty-force-tags: Force Tags are empty
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0514] empty-default-tags: Default Tags are empty
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [E0515] empty-variables-import: Import variables path is empty
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0516] empty-resource-import: Import resource path is empty
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0517] empty-library-import: Import library path is empty
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0518] empty-setup: Setup does not have any keywords
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0519] empty-suite-setup: Suite Setup does not have any keywords
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0520] empty-test-setup: Test Setup does not have any keywords
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0521] empty-teardown: Teardown does not have any keywords
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0522] empty-suite-teardown: Suite Teardown does not have any keywords
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0523] empty-test-teardown: Test Teardown does not have any keywords
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [W0524] empty-timeout: Timeout is empty
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0525] empty-test-timeout: Test Timeout is empty
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [E0526] empty-arguments: Arguments are empty
Defined in
robocop.checkers.lengths.EmptySettingsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR
Tags¶
[W0601] tag-with-space: Tags should not contain spaces
Defined in
robocop.checkers.tags.TagNameChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [I0602] tag-with-or-and: Tag with reserved word OR/AND. Hint: make sure to include this tag using lowercase name to avoid issues
Defined in
robocop.checkers.tags.TagNameChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.INFO [W0603] tag-with-reserved: Tag prefixed with reserved word robot:. Only allowed tag with this prefix is robot:no-dry-run
Defined in
robocop.checkers.tags.TagNameChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [I0605] could-be-forced-tags: All tests in suite share those tags: “%s”. You can define them in Force Tags in suite settings instead
Defined in
robocop.checkers.tags.TagScopeChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.INFO [I0606] tag-already-set-in-force-tags: This tag is already set by Force Tags in suite settings
Defined in
robocop.checkers.tags.TagScopeChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.INFO [I0607] unnecessary-default-tags: Tags defined in Default Tags are always overwritten
Defined in
robocop.checkers.tags.TagScopeChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.INFO
Comments¶
[W0701] todo-in-comment: Found %s in comment
Defined in
robocop.checkers.comments.CommentChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0702] missing-space-after-comment: Missing blank space after comment character
Defined in
robocop.checkers.comments.CommentChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [E0703] invalid-comment: Invalid comment. ‘#’ needs to be first character in the cell. For block comments you can use ‘* Comments *’ section
Defined in
robocop.checkers.comments.CommentChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [W0704] ignored-data: Ignored data found in file
Defined in
robocop.checkers.comments.IgnoredDataChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0705] bom-encoding-in-file: This file contains BOM (Byte Order Mark) encoding not supported by Robot Framework
Defined in
robocop.checkers.comments.IgnoredDataChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING
Duplications¶
[E0801] duplicated-test-case: Multiple test cases with name “%s” in suite
Defined in
robocop.checkers.duplications.DuplicationsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0802] duplicated-keyword: Multiple keywords with name “%s” in file
Defined in
robocop.checkers.duplications.DuplicationsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [E0803] duplicated-variable: Multiple variables with name “%s” in Variables section. Note that Robot Framework is case insensitive
Defined in
robocop.checkers.duplications.DuplicationsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [W0804] duplicated-resource: Multiple resource imports with path “%s” in suite
Defined in
robocop.checkers.duplications.DuplicationsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0805] duplicated-library: Multiple library imports with name “%s” and identical arguments in suite
Defined in
robocop.checkers.duplications.DuplicationsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0806] duplicated-metadata: Duplicated metadata “%s” in suite
Defined in
robocop.checkers.duplications.DuplicationsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0807] duplicated-variables-import: Duplicated variables import with path “%s” in suite
Defined in
robocop.checkers.duplications.DuplicationsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0808] section-already-defined: ‘%s’ section header already defined in file
Defined in
robocop.checkers.duplications.SectionHeadersChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W0809] section-out-of-order: ‘%s’ section header is defined in wrong order: Setting(s) > Variable(s) > Test Case(s) / Task(s) > Keyword(s)
Defined in
robocop.checkers.duplications.SectionHeadersChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [E0810] both-tests-and-tasks: Both Task(s) and Test Case(s) section headers defined in file
Defined in
robocop.checkers.duplications.SectionHeadersChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR
Misc¶
[W0901] keyword-after-return: [Return] is not defined at the end of keyword. Note that [Return] does not return from keyword but only set returned variables
Defined in
robocop.checkers.misc.ReturnChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [E0902] keyword-after-return-from: Keyword call after ‘Return From Keyword’ keyword
Defined in
robocop.checkers.misc.ReturnChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [W0903] empty-return: [Return] is empty
Defined in
robocop.checkers.misc.ReturnChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [E0907] nested-for-loop: Nested for loops are not supported. You can use keyword with for loop instead
Defined in
robocop.checkers.misc.NestedForLoopsChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [I0908] if-can-be-used: ‘%s’ can be replaced with IF block since Robot Framework 4.0
Defined in
robocop.checkers.misc.IfBlockCanBeUsed
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.INFO [W0909] inconsistent-assignment: The assignment sign is not consistent through the file. Expected ‘%s’ but got ‘%s’ instead
Defined in
robocop.checkers.misc.ConsistentAssignmentSignChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING assignment_sign_type parse_assignment_sign_type autodetect possible values: ‘autodetect’ (default), ‘none’ (‘’), ‘equal_sign’ (‘=’) or space_and_equal_sign (’ =’) [W0910] inconsistent-assignment-in-variables: The assignment sign is not consistent inside the variables section. Expected ‘%s’ but got ‘%s’ instead
Defined in
robocop.checkers.misc.ConsistentAssignmentSignChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING assignment_sign_type parse_assignment_sign_type autodetect possible values: ‘autodetect’ (default), ‘none’ (‘’), ‘equal_sign’ (‘=’) or space_and_equal_sign (’ =’) [W0911] wrong-import-order: BuiltIn library import ‘%s’ should be placed before ‘%s’
Defined in
robocop.checkers.misc.SettingsOrderChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING
Spacing¶
[W1001] trailing-whitespace: Trailing whitespace at the end of line
Defined in
robocop.checkers.spacing.InvalidSpacingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W1002] missing-trailing-blank-line: Missing trailing blank line at the end of file
Defined in
robocop.checkers.spacing.InvalidSpacingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W1003] empty-lines-between-sections: Invalid number of empty lines between sections (%d/%d)
Defined in
robocop.checkers.spacing.EmptyLinesChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING empty_lines int 2 number of empty lines required between sections [W1004] empty-lines-between-test-cases: Invalid number of empty lines between test cases (%d/%d)
Defined in
robocop.checkers.spacing.EmptyLinesChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING empty_lines int 1 number of empty lines required between test cases [W1005] empty-lines-between-keywords: Invalid number of empty lines between keywords (%d/%d)
Defined in
robocop.checkers.spacing.EmptyLinesChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING empty_lines int 1 number of empty lines required between keywords [W1006] mixed-tabs-and-spaces: Inconsistent use of tabs and spaces in file
Defined in
robocop.checkers.spacing.InconsistentUseOfTabsAndSpacesChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W1007] uneven-indent: Line is %s-indented
Defined in
robocop.checkers.spacing.UnevenIndentChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [E1008] bad-indent: Indent expected
Defined in
robocop.checkers.spacing.UnevenIndentChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR [W1009] empty-line-after-section: Too many empty lines after section header (%d/%d)
Defined in
robocop.checkers.spacing.EmptyLinesChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING empty_lines int 0 number of empty lines allowed after section header [W1010] too-many-trailing-blank-lines: Too many blank lines at the end of file
Defined in
robocop.checkers.spacing.InvalidSpacingChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W1011] misaligned-continuation: Continuation marker should be aligned with starting row
Defined in
robocop.checkers.spacing.MisalignedContinuation
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [W1012] consecutive-empty-lines: Too many empty lines (%s/%s)
Defined in
robocop.checkers.spacing.EmptyLinesChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING empty_lines int 1 number of allowed consecutive empty lines [W1013] empty-lines-in-statement: Multi-line statement with empty lines
Defined in
robocop.checkers.spacing.EmptyLinesChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.WARNING [E1014] variable-should-left-aligned: Variable in variable section should be left aligned.
Defined in
robocop.checkers.spacing.LeftAlignedChecker
¶ name type default info severity robocop.rules.RuleSeverity
RuleSeverity.ERROR