Pylint plugin for Odoo
Enable custom checks for Odoo modules.
Short Name | Description | Code |
---|---|---|
attribute-deprecated | attribute "%s" deprecated | W8105 |
attribute-string-redundant | The attribute string is redundant. String parameter equal to name of variable | W8113 |
bad-builtin-groupby | Used builtin function itertools.groupby . Prefer odoo.tools.groupby instead. More info about https://github.com/odoo/odoo/issues/105376 |
W8155 |
category-allowed | Category "%s" not allowed in manifest file. | C8114 |
consider-merging-classes-inherited | Consider merging classes inherited to "%s" from %s. | R8180 |
context-overridden | Context overridden using dict. Better using kwargs with_context(**%s) or with_context(key=value) |
W8121 |
deprecated-odoo-model-method | %s has been deprecated by Odoo. Please look for alternatives. | W8160 |
development-status-allowed | Manifest key development_status "%s" not allowed. Use one of: %s. | C8111 |
except-pass | pass into block except. If you really need to use the pass consider logging that exception | W8138 |
external-request-timeout | Use of external request method %s without timeout. It could wait for a long time |
E8106 |
invalid-commit | Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction | E8102 |
license-allowed | License "%s" not allowed in manifest file. | C8105 |
manifest-author-string | The author key in the manifest file must be a string (with comma separated values) | E8101 |
manifest-behind-migrations | Manifest version (%s) is lower than migration scripts (%s) | E8145 |
manifest-data-duplicated | The file "%s" is duplicated in lines %s from manifest key "%s" | W8125 |
manifest-deprecated-key | Deprecated key "%s" in manifest file | C8103 |
manifest-maintainers-list | The maintainers key in the manifest file must be a list of strings | E8104 |
manifest-required-author | One of the following authors must be present in manifest: %s | C8101 |
manifest-required-key | Missing required key "%s" in manifest file | C8102 |
manifest-version-format | Wrong Version Format "%s" in manifest file. Regex to match: "%s" | C8106 |
method-compute | Name of compute method should start with "compute" | C8108 |
method-inverse | Name of inverse method should start with "inverse" | C8110 |
method-required-super | Missing super call in "%s" method. |
W8106 |
method-search | Name of search method should start with "search" | C8109 |
missing-readme | Missing ./README.rst file. Template here: %s | C8112 |
missing-return | Missing return (super is used) in method %s. |
W8110 |
no-raise-unlink | No exceptions should be raised inside unlink() functions | E8140 |
no-wizard-in-models | No wizard class for model directory. See the complete structure https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#complete-structure | C8113 |
no-write-in-compute | Compute method calling write . Use update instead. |
E8135 |
odoo-addons-relative-import | Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.%s" | W8150 |
odoo-exception-warning | odoo.exceptions.Warning is a deprecated alias to odoo.exceptions.UserError use from odoo.exceptions import UserError |
R8101 |
print-used | Print used. Use logger instead. |
W8116 |
renamed-field-parameter | Field parameter "%s" is no longer supported. Use "%s" instead. | W8111 |
resource-not-exist | File "%s": "%s" not found. | F8101 |
sql-injection | SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injection | E8103 |
test-folder-imported | Test folder imported in module %s | E8130 |
translation-contains-variable | Translatable term in "%s" contains variables. Use %s instead | W8115 |
translation-field | Translation method _("string") in fields is not necessary. | W8103 |
translation-format-interpolation | Use %s formatting in odoo._ functions | W8302 |
translation-format-truncated | Logging format string ends in middle of conversion specifier | E8301 |
translation-fstring-interpolation | Use %s formatting in odoo._ functions | W8303 |
translation-not-lazy | Use %s formatting in odoo._ functions | W8301 |
translation-positional-used | Translation method _(%s) is using positional string printf formatting. Use named placeholder _("%%(placeholder)s") instead. |
W8120 |
translation-required | String parameter on "%s" requires translation. Use %s_(%s) | C8107 |
translation-too-few-args | Not enough arguments for odoo._ format string | E8306 |
translation-too-many-args | Too many arguments for odoo._ format string | E8305 |
translation-unsupported-format | Unsupported odoo._ format character %r (%#02x) at index %d | E8300 |
use-vim-comment | Use of vim comment | W8202 |
website-manifest-key-not-valid-uri | Website "%s" in manifest key is not a valid URI | W8114 |
You do not need to install manually if you use pre-commit-config
But if you even need to install it
pip install pylint-odoo
Add to your ".pre-commit-config.yaml" configuration file the following input
- repo: https://github.com/OCA/pylint-odoo
rev: v9.0.5 # may be a tag or commit hash
hooks:
# Add to your .pylintrc file:
# [MASTER]
# load-plugins=pylint_odoo
- id: pylint_odoo
pylint --load-plugins=pylint_odoo -e odoolint path/to/test
or use configuration file you can generate the OCA one using the following template repository:
https://github.com/OCA/oca-addons-repo-template
Then running
pylint --rcfile=.pylintrc path/to/test
Example to test only pylint_odoo checks:
pylint --load-plugins=pylint_odoo -d all -e odoolint {ADDONS-PATH}/*
There are checks only valid for a particular Odoo version To know what version of odoo are you running pylint needs the parameter
pylint --load-plugins=pylint_odoo --valid-odoo-versions={YOUR_ODOO_VERSION}
with particular odoo version e.g. "16.0"
Checks valid only for odoo >= 14.0
translation-format-interpolation
translation-format-truncated
translation-fstring-interpolation
translation-not-lazy
translation-too-few-args
translation-too-many-args
translation-unsupported-format
Checks valid only for odoo <= 13.0
translation-contains-variable
attribute-deprecated
attribute-string-redundant
bad-builtin-groupby
itertools.groupby
. Prefer odoo.tools.groupby
instead. More info about https://github.com/odoo/odoo/issues/105376itertools.groupby
. Prefer odoo.tools.groupby
instead. More info about https://github.com/odoo/odoo/issues/105376consider-merging-classes-inherited
context-overridden
with_context(**{'overwrite_context': True})
or with_context(key=value)
with_context(**ctx)
or with_context(key=value)
with_context(**ctx2)
or with_context(key=value)
deprecated-odoo-model-method
development-status-allowed
except-pass
external-request-timeout
requests.delete
without timeout. It could wait for a long timerequests.get
without timeout. It could wait for a long timerequests.head
without timeout. It could wait for a long timeinvalid-commit
license-allowed
manifest-author-string
manifest-behind-migrations
manifest-data-duplicated
manifest-deprecated-key
manifest-maintainers-list
manifest-required-author
manifest-required-key
manifest-version-format
method-compute
method-inverse
method-required-super
super
call in "copy" method.super
call in "create" method.super
call in "write" method.method-search
missing-readme
missing-return
return
(super
is used) in method inherited_method.no-raise-unlink
no-wizard-in-models
no-write-in-compute
write
. Use update
instead.write
. Use update
instead.write
. Use update
instead.odoo-addons-relative-import
odoo-exception-warning
odoo.exceptions.Warning
is a deprecated alias to odoo.exceptions.UserError
use from odoo.exceptions import UserError
odoo.exceptions.Warning
is a deprecated alias to odoo.exceptions.UserError
use from odoo.exceptions import UserError
odoo.exceptions.Warning
is a deprecated alias to odoo.exceptions.UserError
use from odoo.exceptions import UserError
print-used
logger
instead.renamed-field-parameter
resource-not-exist
sql-injection
test-folder-imported
translation-contains-variable
translation-field
translation-format-interpolation
translation-format-truncated
translation-fstring-interpolation
translation-not-lazy
translation-positional-used
_("%(placeholder)s")
instead._("%(placeholder)s")
instead._("%(placeholder)s")
instead.translation-required
translation-too-few-args
translation-too-many-args
translation-unsupported-format
use-vim-comment
website-manifest-key-not-valid-uri
To run all the tests run:
tox
Use extra parameters to change the test behaviour
e.g. particular python version
tox -e py310
e.g. particular unittest method
tox -e py310 -- -k test_20_expected_errors
e.g. all the tests at the same time in parallel
tox -p auto
This repository is licensed under AGPL-3.0.
OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.