pylint
pylint documentation
- Version in Mega-Linter: 2.11.1
- Visit Official Web Site
- See How to configure pylint rules
- If custom
.python-lint
config file is not found, .python-lint will be used
- If custom
- See How to disable pylint rules in files
- See Index of problems detected by pylint
Configuration in Mega-Linter
- Enable pylint by adding
PYTHON_PYLINT
in ENABLE_LINTERS variable - Disable pylint by adding
PYTHON_PYLINT
in DISABLE_LINTERS variable
Variable | Description | Default value |
---|---|---|
PYTHON_PYLINT_ARGUMENTS | User custom arguments to add in linter CLI call Ex: -s --foo "bar" |
|
PYTHON_PYLINT_FILTER_REGEX_INCLUDE | Custom regex including filter Ex: (src\|lib) |
Include every file |
PYTHON_PYLINT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter Ex: (test\|examples) |
Exclude no file |
PYTHON_PYLINT_CLI_LINT_MODE | Override default CLI lint mode - file : Calls the linter for each file- list_of_files : Call the linter with the list of files as argument- project : Call the linter from the root of the project |
{linter.cli_lint_mode} |
PYTHON_PYLINT_FILE_EXTENSIONS | Allowed file extensions. "*" matches any extension, "" matches empty extension. Empty list excludes all filesEx: [".py", ""] |
[".py"] |
PYTHON_PYLINT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files Ex: ["Dockerfile(-.+)?", "Jenkinsfile"] |
Include every file |
PYTHON_PYLINT_PRE_COMMANDS | List of bash commands to run before the linter | None |
PYTHON_PYLINT_POST_COMMANDS | List of bash commands to run after the linter | None |
PYTHON_PYLINT_CONFIG_FILE | pylint configuration file nameUse LINTER_DEFAULT to let the linter find it |
.python-lint |
PYTHON_PYLINT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then Mega-Linter default rules |
PYTHON_PYLINT_DISABLE_ERRORS | Run linter but consider errors as warnings | false |
PYTHON_PYLINT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | 0 |
IDE Integration
Use pylint in your favorite IDE to catch errors before Mega-Linter !
IDE | Extension Name | Install | |
---|---|---|---|
Eclipse | PyLint | Visit Web Site | |
IDEA | PyCharm (Native Support) | Visit Web Site | |
vim | pylint.vim | Visit Web Site | |
visual_studio | Native Support | Visit Web Site | |
Visual Studio Code | Native Support | Visit Web Site |
Mega-Linter Flavours
This linter is available in the following flavours
Flavor | Description | Embedded linters | Info | |
---|---|---|---|---|
all | Default Mega-Linter Flavor | 94 | ||
python | Optimized for PYTHON based projects | 49 |
Behind the scenes
How are identified applicable files
- File extensions:
.py
How the linting is performed
- pylint is called once with the list of files as arguments
Example calls
pylint myfile.py
pylint --rcfile .python-lint myfile.py
Help content
Usage: pylint [options]
Options:
-h, --help show this help message and exit
--long-help more verbose help.
Master:
--init-hook=<code> Python code to execute, usually for sys.path
manipulation such as pygtk.require().
-E, --errors-only In error mode, checkers without error messages are
disabled and for others, only the ERROR messages are
displayed, and no reports are done by default.
-v, --verbose In verbose mode, extra non-checker-related info will
be displayed.
--ignore=<file>[,<file>...]
Files or directories to be skipped. They should be
base names, not paths. [current: CVS]
--ignore-patterns=<pattern>[,<pattern>...]
Files or directories matching the regex patterns are
skipped. The regex matches against base names, not
paths. [current: none]
--ignore-paths=<pattern>[,<pattern>...]
Add files or directories matching the regex patterns
to the ignore-list. The regex matches against paths.
[current: none]
--persistent=<y_or_n>
Pickle collected data for later comparisons. [current:
yes]
--load-plugins=<modules>
List of plugins (as comma separated values of python
module names) to load, usually to register additional
checkers. [current: none]
--fail-under=<score>
Specify a score threshold to be exceeded before
program exits with error. [current: 10.0]
--fail-on=<msg ids>
Return non-zero exit code if any of these
messages/categories are detected, even if score is
above --fail-under value. Syntax same as enable.
Messages specified are enabled, while categories only
check already-enabled messages. [current: none]
-j <n-processes>, --jobs=<n-processes>
Use multiple processes to speed up Pylint. Specifying
0 will auto-detect the number of processors available
to use. [current: 1]
--limit-inference-results=<number-of-results>
Control the amount of potential inferred values when
inferring a single object. This can help the
performance when dealing with large functions or
complex, nested conditions. [current: 100]
--extension-pkg-allow-list=<pkg[,pkg]>
A comma-separated list of package or module names from
where C extensions may be loaded. Extensions are
loading into the active Python interpreter and may run
arbitrary code. [current: none]
--extension-pkg-whitelist=<pkg[,pkg]>
A comma-separated list of package or module names from
where C extensions may be loaded. Extensions are
loading into the active Python interpreter and may run
arbitrary code. (This is an alternative name to
extension-pkg-allow-list for backward compatibility.)
[current: none]
--suggestion-mode=<yn>
When enabled, pylint would attempt to guess common
misconfiguration and emit user-friendly hints instead
of false-positive error messages. [current: yes]
--exit-zero Always return a 0 (non-error) status code, even if
lint errors are found. This is primarily useful in
continuous integration scripts.
--from-stdin Interpret the stdin as a python script, whose filename
needs to be passed as the module_or_package argument.
--py-version=<py_version>
Min Python version to use for version dependend
checks. Will default to the version used to run
pylint. [current: 3.9]
Commands:
--rcfile=<file> Specify a configuration file to load.
--output=<file> Specify an output file.
--help-msg=<msg-id>
Display a help message for the given message id and
exit. The value may be a comma separated list of
message ids.
--list-msgs Display a list of all pylint's messages divided by
whether they are emittable with the given interpreter.
--list-msgs-enabled
Display a list of what messages are enabled, disabled
and non-emittable with the given configuration.
--list-groups List pylint's message groups.
--list-conf-levels Generate pylint's confidence levels.
--list-extensions List available extensions.
--full-documentation
Generate pylint's full documentation.
--generate-rcfile Generate a sample configuration file according to the
current configuration. You can put other options
before this one to get them in the generated
configuration.
Messages control:
--confidence=<levels>
Only show warnings with the listed confidence levels.
Leave empty to show all. Valid levels: HIGH,
INFERENCE, INFERENCE_FAILURE, UNDEFINED. [current:
none]
-e <msg ids>, --enable=<msg ids>
Enable the message, report, category or checker with
the given id(s). You can either give multiple
identifier separated by comma (,) or put this option
multiple time (only on the command line, not in the
configuration file where it should appear only once).
See also the "--disable" option for examples.
-d <msg ids>, --disable=<msg ids>
Disable the message, report, category or checker with
the given id(s). You can either give multiple
identifiers separated by comma (,) or put this option
multiple times (only on the command line, not in the
configuration file where it should appear only once).
You can also use "--disable=all" to disable everything
first and then reenable specific checks. For example,
if you want to run only the similarities checker, you
can use "--disable=all --enable=similarities". If you
want to run only the classes checker, but have no
Warning level messages displayed, use "--disable=all
--enable=classes --disable=W".
Reports:
-f <format>, --output-format=<format>
Set the output format. Available formats are text,
parseable, colorized, json and msvs (visual studio).
You can also give a reporter class, e.g.
mypackage.mymodule.MyReporterClass. [current: text]
-r <y_or_n>, --reports=<y_or_n>
Tells whether to display a full report or only the
messages. [current: no]
--evaluation=<python_expression>
Python expression which should return a score less
than or equal to 10. You have access to the variables
'error', 'warning', 'refactor', and 'convention' which
contain the number of messages in each category, as
well as 'statement' which is the total number of
statements analyzed. This score is used by the global
evaluation report (RP0004). [current: 10.0 - ((float(5
* error + warning + refactor + convention) /
statement) * 10)]
-s <y_or_n>, --score=<y_or_n>
Activate the evaluation score. [current: yes]
--msg-template=<template>
Template used to display messages. This is a python
new-style format string used to format the message
information. See doc for all details.
Installation on mega-linter Docker image
- PIP packages (Python):
Example success log
Results of pylint linter (version 2.6.0)
See documentation on https://megalinter.github.io/descriptors/python_pylint/
-----------------------------------------------
[SUCCESS] .automation/test/python/python_good_1.py
Example error log
Results of pylint linter (version 2.6.0)
See documentation on https://megalinter.github.io/descriptors/python_pylint/
-----------------------------------------------
[ERROR] .automation/test/python/python_bad_1.py
************* Module python_bad_1
.automation/test/python/python_bad_1.py:15:24: E0001: invalid syntax (<unknown>, line 15) (syntax-error)