Skip to main content

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
C8202 UTF-8 coding is not necessary unnecessary-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
W7943 %s Deprecated QWeb directive “%s”. Use “t-options” instead xml-deprecated-qweb-directive
W7944 %s The resource in in src/href contains a not valid chararter character-not-valid-in-resource-link
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 version="1.0" encoding="utf-8"?>
<!-- pylint:disable=name-of-check-to-skip -->
<odoo>
...
</odoo>
<?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

CHANGES

1.9.5

  • [REF] .travis.yml: Just deploy a env and avoid cleanup before to deploy

1.9.4

  • [REF] pylint_odoo: Increase coverage test
  • [FIX] README.rst: Fix syntax and run check
  • [FIX] don’t complain about string attribute nodes in translation check
  • [REF] javascript-lint: Allow to use moment (#189)
  • Allow short ternary expressions
  • [IMP] ESLint usability boost (#185)
  • [REF] javascript-lint: Emit a message if there is internal error
  • [REF] jslintrc: Use of property style for dot-location
  • [REF] The method message_post need the subject and body be translatable
  • [FIX] duplicate-xml-fields: Now consider as duplicated using domain and context values (#172)

1.9.3

  • [REF] pylint_odoo: Use check-name instead of check-code for add_message method (#174)
  • [FIX] pylint_odoo: Change the number of the appearances of the check (#173)
  • [REF] README: Auto-update Using pylint_odoo.messages2rst()
  • [ADD] unnecessary-utf8-coding-comment: The utf8 comment is unnecessary if the version of odoo is 11.0 because use py3 (#168)
  • [FIX] missing-external-dependency: Skip relative imports that starts with dot (#171)
  • [ADD] character-not-valid-in-resource-link: To valid the character ‘?/#’ into the in src/href link (#163)
  • [REF] javascript-lint: Disable comma-dangle and prefer-rest-params checks
  • [REF] .travis.yml: Freeze flake8 version In order to avoid false red if a new check is added
  • [ADD] Add licence OEEL-1 into licence-allowed for module depending on Enterprise (#165)
  • [ADD] xml-deprecated-qweb-directive: Deprecated QWeb directives (#157)
  • [FIX] Add 11.0 as valid Odoo version
  • [FIX] unicode error removing decode and use bytes with bytes - Open file with rb and use bytes with bytes - Use xml_special_char.xml: Use a special char to reproduce a decode error

1.8.2

  • [REF] pylint_odoo: Support python3

1.8.1

  • [REF] README: Auto-update Using pylint_odoo.messages2rst()
  • [FIX] deprecated-data-xml-node: Fix false negative with data/record + record for xml nodes (#156)
  • [FIX] disable xml check: get method called when the method is not called directly (#154)
  • [FIX] misc: TypeError argument of type ‘NoneType’ is not iterable (#150)
  • [FIX] manifest-version-format: Use real dot from regex (#153)
  • [FIX] manifest-version-format: Adds matching for string end to default manifest version format (#155)
  • [ADD] xml-deprecated-tree-attribute: Implements check for deprecated tree attributes (#149)
  • [REF] jslintrc: Disable prefer-spread
  • [IMP] missing-return: Skip missing return if function is a generator (#147)
  • [IMP] missing-return/required-super: setUpClass (#143)
  • [IMP] missing-readme: Check for other supported file names (#140)
  • [REF] jslintrc: Disable prefer-reflect error (#141)
  • [REF] file-not-used: Consider as used the files referenced from report xml files (#138)

1.8.0

  • [REF] README: Auto-update Using pylint_odoo.messages2rst()
  • [REF] cache: Cache other extension files just if is a odoo module (#142)
  • [IMP] pylint_odoo: Skip pylint check on one xml file (#135)
  • [ADD] website-manifest-key-not-valid-uri: For validate if the website into manifest is valid URI (#136)

1.7.0

  • [REF] README: Auto-update Using pylint_odoo.messages2rst()
  • [ADD] pylint_odoo: Adding new check resource-not-exist (#130)
  • [FIX] fields: Validate a assign directly from root class (#116)
  • [FIX] jslintrc: Remove deprecated ecmaFeatures key
  • [ADD] pylint_odoo: Adding check detected <data> tag inside <odoo> tag and show warning (#129)
  • [REF] Fix typo
  • [REF] jslint: Enable no-comma-dangle check
  • [IMP] sql-injection: support new cases and ignore some false positives (#122)
  • [FIX] xml-attribute-translatable: Skip if version is different 8.0 (#117)
  • [FIX] deprecated-module: Consider ‘from openerp.osv.expression’

1.6.0

  • [REF] README: Auto-update Using the following script: ‘PYTHONPATH=~/odoo/pylint-odoo python -c “import pylint_odoo;print pylint_odoo.messages2rst()”’

Project details


Release history Release notifications

This version
History Node

1.9.5

History Node

1.9.4

History Node

1.9.3

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 the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
pylint-odoo-1.9.5.tar.gz (55.7 kB) Copy SHA256 hash SHA256 Source None May 1, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page