Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

Pylint plugin for Odoo

Project Description
|Build Status| |Coverage Status| |Pypi Package|


Pylint Odoo plugin
==================

Enable custom checks for Odoo modules.

+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| Code | Description | Short name |
+=======+====================================================================================================================================================================================================================================================================================================+====================================+
| C7902 | Missing ./README.rst file. Template here: %s | missing-readme |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8101 | Missing author required "%s" in manifest file | manifest-required-author |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8102 | Missing required key "%s" in manifest file | manifest-required-key |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8103 | Deprecated key "%s" in manifest file | manifest-deprecated-key |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8104 | Use ``CamelCase`` "%s" in class name "%s". You can use oca-autopep8 of https://github.com/OCA/maintainer-tools to auto fix it. | class-camelcase |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8105 | License "%s" not allowed in manifest file. | license-allowed |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8106 | Wrong Version Format "%s" in manifest file. Regex to match: "%s" | manifest-version-format |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8107 | String parameter of raise "%s" requires translation. Use _(%s) | translation-required |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8108 | Name of compute method should start with "_compute_" | method-compute |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8109 | Name of search method should start with "_search_" | method-search |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8110 | Name of inverse method should start with "_inverse_" | method-inverse |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| C8201 | No UTF-8 coding comment found: Use ``# coding: utf-8`` or ``# -*- coding: utf-8 -*-`` | no-utf8-coding-comment |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| E7901 | %s %s | rst-syntax-error |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| E7902 | %s error: %s | xml-syntax-error |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| E8101 | The author key in the manifest file must be a string (with comma separated values) | manifest-author-string |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| E8102 | Use of cr.commit() directly - More info https://github.com/OCA/maintainer-tools/blob/master/CONTRIBUTING.md#never-commit-the-transaction | invalid-commit |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| E8103 | SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/maintainer-tools/blob/master/CONTRIBUTING.md#no-sql-injection | sql-injection |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| F8101 | File "%s": "%s" not found. | resource-not-exist |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| R7980 | Consider merging classes inherited to "%s" from %s. | consider-merging-classes-inherited |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| R8101 | Import ``Warning`` should be renamed as UserError ``from openerp.exceptions import Warning as UserError`` | openerp-exception-warning |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| R8110 | Method defined with old api version 7 | old-api7-method-defined |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7901 | %s Dangerous filter without explicit ``user_id`` in xml_id %s | dangerous-filter-wo-user |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7902 | %s Duplicate xml record id "%s" in %s | duplicate-xml-record-id |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7903 | %s | javascript-lint |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7904 | %s Deprecated <openerp> xml node | deprecated-openerp-xml-node |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7905 | %s record res.users without context="{'no_reset_password': True}" | create-user-wo-reset-password |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7906 | %s Duplicate id "%s" | duplicate-id-csv |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7907 | %s Duplicate xml field "%s" in lines %s | duplicate-xml-fields |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7908 | %s Missing newline | missing-newline-extrafiles |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7909 | %s Redundant name module reference in xml_ids "%s". | redundant-modulename-xml |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7910 | %s Use wrong tabs indentation instead of four spaces | wrong-tabs-instead-of-spaces |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7930 | %s not used from manifest | file-not-used |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7935 | External dependency "%s" without ImportError. More info: https://github.com/OCA/maintainer-tools/blob/master/CONTRIBUTING.md#external-dependencies | missing-import-error |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7936 | Missing external dependency "%s" from manifest. More info: https://github.com/OCA/maintainer-tools/blob/master/CONTRIBUTING.md#external-dependencies | missing-manifest-dependency |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7937 | %s The xml attribute is missing the translation="off" tag %s | xml-attribute-translatable |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7938 | pass into block except. If you really need to use the pass consider logging that exception | except-pass |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7939 | %s Use <odoo> instead of <odoo><data> or use <odoo noupdate="1">instead of <odoo><data noupdate="1"> | deprecated-data-xml-node |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7940 | %s Dangerous use of "replace" from view with priority %s < %s | dangerous-view-replace-wo-priority |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7942 | %s Deprecated <tree> xml attribute "%s" | xml-deprecated-tree-attribute |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W7950 | Same Odoo module absolute import. You should use relative import with "." instead of "openerp.addons.%s" | odoo-addons-relative-import |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8101 | Detected api.one and api.multi decorators together. | api-one-multi-together |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8102 | Missing api.one or api.multi in copy function. | copy-wo-api-one |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8103 | Translation method _("string") in fields is not necessary. | translation-field |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8104 | api.one deprecated | api-one-deprecated |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8105 | attribute "%s" deprecated | attribute-deprecated |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8106 | Missing ``super`` call in "%s" method. | method-required-super |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8110 | Missing ``return`` (``super`` is used) in method %s. | missing-return |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8111 | Field parameter "%s" is no longer supported. Use "%s" instead. | renamed-field-parameter |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8112 | "eval" referenced detected. | eval-referenced |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8113 | The attribute string is redundant. String parameter equal to name of variable | attribute-string-redundant |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8114 | Website "%s" in manifest key is not a valid URI | website-manifest-key-not-valid-uri |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8201 | You have a python file with execution permissions but you don't have a interpreter magic comment. If you really needs a execution permission then add a magic comment ( https://en.wikipedia.org/wiki/Shebang_(Unix) ). If you don't needs a execution permission then remove it with: chmod -x %s | incoherent-interpreter-exec-perm |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+
| W8202 | Use of vim comment | use-vim-comment |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+


Install
-------

``# pip install --upgrade git+https://github.com/oca/pylint-odoo.git``

Or

``# pip install --upgrade --pre pylint-odoo``

Usage
-----

``pylint --load-plugins=pylint_odoo -e odoolint ...``

Example to test just odoo-lint case:

``touch {ADDONS-PATH}/__init__.py``

``pylint --load-plugins=pylint_odoo -d all -e odoolint {ADDONS-PATH}``

If you have external files you can add them in ``examples`` folder to skip.

For rst-syntax-error skip unknown directives

Skip one xml check
--------------

If you need to skip one check in one xml file you can use the follow way

```xml
<?xml version="1.0" encoding="utf-8"?>
<!-- pylint:disable=name-of-check-to-skip -->
<odoo>
...
</odoo>
```

```xml
<?xml version="1.0" encoding="utf-8"?>
<!-- pylint:disable=name-of-check-to-skip, second-name-check-to-skip -->
<odoo>
...
</odoo>
```

This skip only work with the name of the check, not work with the name of check

The position of the comment it is not relative to the line that throw the check


.. |Build Status| image:: https://travis-ci.org/OCA/pylint-odoo.svg?branch=master
:target: https://travis-ci.org/OCA/pylint-odoo
.. |Coverage Status| image:: https://coveralls.io/repos/OCA/pylint-odoo/badge.svg?branch=master&service=github
:target: https://coveralls.io/github/OCA/pylint-odoo?branch=master
.. |Pypi Package| image:: https://img.shields.io/pypi/v/pylint-odoo.svg
:target: https://pypi.python.org/pypi/pylint-odoo

# See change log in https://pypi.python.org/pypi/pylint-odoo
Release History

Release History

This version
History Node

1.8.2

History Node

1.8.1

History Node

1.8.0

History Node

1.7.0

History Node

1.6.0

History Node

1.5.0

History Node

1.4.0

History Node

1.3.5

History Node

1.3.4

History Node

1.3.3

History Node

1.3.2

History Node

1.3.1

History Node

1.3.0

History Node

1.2.0

History Node

1.1.0

History Node

1.0.2

History Node

1.0.1

History Node

1.0.0

Download Files

Download Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
pylint-odoo-1.8.2.tar.gz (50.1 kB) Copy SHA256 Checksum SHA256 Source Oct 2, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting