Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/OCA/odoo-pre-commit-hooks

Linters of Odoo addons that complement pylint-odoo
https://github.com/OCA/odoo-pre-commit-hooks

Last synced: about 2 months ago
JSON representation

Linters of Odoo addons that complement pylint-odoo

Lists

README

        

[//]: # (start-badges)

[![Build Status](https://github.com/OCA/odoo-pre-commit-hooks/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/OCA/odoo-pre-commit-hooks/actions/workflows/test.yml?query=branch%3Amain)
[![codecov](https://codecov.io/gh/OCA/odoo-pre-commit-hooks/branch/main/graph/badge.svg)](https://codecov.io/gh/OCA/odoo-pre-commit-hooks)
[![version](https://img.shields.io/pypi/v/oca-odoo-pre-commit-hooks.svg)](https://pypi.org/project/oca-odoo-pre-commit-hooks)
[![wheel](https://img.shields.io/pypi/wheel/oca-odoo-pre-commit-hooks.svg)](https://pypi.org/project/oca-odoo-pre-commit-hooks)
[![supported-versions](https://img.shields.io/pypi/pyversions/oca-odoo-pre-commit-hooks.svg)](https://pypi.org/project/oca-odoo-pre-commit-hooks)
[![commits-since](https://img.shields.io/github/commits-since/OCA/odoo-pre-commit-hooks/v0.0.31.svg)](https://github.com/OCA/odoo-pre-commit-hooks/compare/v0.0.31...main)
[![code-style-black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

[//]: # (end-badges)

# odoo-pre-commit-hooks

OCA's custom pre-commit hooks for Odoo modules

# Installation

You don't need to install it directly only configure your ".pre-commit-config.yaml" file

You even can install it directly:
- Installing from pypi:
- `pip install -U oca-odoo-pre-commit-hooks`

- Installing from github:
- `pip install --force-reinstall -U git+https://github.com/OCA/odoo-pre-commit-hooks.git@main`

# Usage pre-commit-config.yaml

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

```yaml
- repo: https://github.com/OCA/odoo-pre-commit-hooks
rev: v0.0.31
hooks:
- id: oca-checks-odoo-module
- id: oca-checks-po
args: ["--fix"]
```

# Usage directly the entry points

If you install directly the package use the entry point:

oca-checks-odoo-module --help
oca-checks-po --help

# Skip one xml-check for only one file

If you need to skip one check in one particular XML file you can use the follow comment

```xml

...

```

```xml

...

```

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

It disable the entire file

# Configuration
Behavior can be configured through several methods and as of now only consists of enabling/disabling checks.

## Enabling or Disabling Checks
Each available hook consists of multiple checks which can be enabled/disabled using any of the following methods (ordered by priority):

1. As an argument e.g., `oca-checks-odoo --enable=check-to-enable --disable=check-to-disable1,check-to-disable2`
2. Using environment variables `OCA_HOOKS_ENABLE` or `OCA_HOOKS_DISABLE` e.g., `export OCA_HOOKS_ENABLE=check1,check2`
3. A configuration file. The path to it can be specified with the argument `--config`. Alternatively a file named `.oca_hooks.cfg`
will be looked for (by default) in the following locations (in order):
1. Current working directory
2. Repo's root
3. User's home

### Using a Configuration File
To enable or disable checks using a configuration file, add a `disable` or `enable` key under the `MESSAGES_CONTROL` section.
For example:
```
[MESSAGES_CONTROL]
enable=check-enable1,check-enable2
disable=check-to-disable
```

As stated before, each source has a certain priority. This means that if the environment variable `OCA_HOOKS_ENABLE=check1`
exists, the configuration file above would not have any effect when it comes to enabling checks, and the only enabled
check will be `check1`.

However, if `OCA_HOOKS_DISABLE` is not set, the configuration file will still have an effect and `check-to-disable` will
be disabled.

[//]: # (start-checks)

# Checks

* Check manifest-syntax-error
Check if the manifest file has syntax error

* Check csv-duplicate-record-id
duplicate CSV "id" AKA xmlid but for CSV files

* Check csv-syntax-error
Check syntax error for CSV files declared in the manifest

* Check xml-deprecated-data-node
Deprecated node inside xml node

* Check xml-deprecated-openerp-node
deprecated xml node

* Check xml-deprecated-qweb-directive
for use of deprecated QWeb directives t-*-options

* Check xml-not-valid-char-link
The resource in in src/href contains a not valid character.

* Check xml-oe-structure-missing-id

Ensure all tags with class 'oe_structure' have an ID. For more information on the rationale, see:
https://github.com/OCA/odoo-pre-commit-hooks/issues/27

* Check xml-redundant-module-name

If the module is called "module_a" and the xmlid is
`
...

* Check xml-deprecated-tree-attribute
The tree-view declaration is using a deprecated attribute.

* Check xml-record-missing-id
Generated when a tag has no id.

* Check xml-duplicate-record-id

If a module has duplicated record_id AKA xml_ids
file1.xml
` instead of `` or use `` instead of ``
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view.xml#L3 Use `` instead of `` or use `` instead of ``
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L3 Use `` instead of `` or use `` instead of ``
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo.xml#L3 Use `` instead of `` or use `` instead of ``
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo2.xml#L3 Use `` instead of `` or use `` instead of ``
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/skip_xml_check.xml#L5 Use `` instead of `` or use `` instead of ``
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/skip_xml_check_2.xml#L3 Use `` instead of `` or use `` instead of ``
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/model_view.xml#L3 Use `` instead of `` or use `` instead of ``

* xml-deprecated-openerp-node

- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view.xml#L2 Deprecated xml node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L2 Deprecated xml node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/model_view.xml#L2 Deprecated xml node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/res_users.xml#L2 Deprecated xml node

* xml-deprecated-qweb-directive

- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L20 Deprecated QWeb directive `"t-field-options"`. Use `"t-options"` instead
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L7 Deprecated QWeb directive `"t-esc-options"`. Use `"t-options"` instead

* xml-deprecated-tree-attribute

- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo.xml#L31 Deprecated "