Skip to content

antonag32/pylint-odoo

 
 

Repository files navigation

Build Status codecov code-style-black version pypi-downloads-monthly supported-versions wheel commits-since

Pylint Odoo plugin

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 odoo/odoo#105376 W8155
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
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-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

Install

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

Usage pre-commit-config.yaml

Add to your ".pre-commit-config.yaml" configuration file the following input

    - repo: https://github.com/OCA/pylint-odoo
        rev: v8.0.20 # may be a tag or commit hash
        hooks:
        # Add to your .pylintrc file:
        # [MASTER]
        # load-plugins=pylint_odoo
        - id: pylint_odoo

Usage

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

Examples

Development

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

Licenses

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.

About

Odoo plugin for Pylint

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.4%
  • JavaScript 0.6%