# Herramientas de Verificación OCA

Este repositorio está configurado con las herramientas de verificación estándar de OCA (Odoo Community Association).

## Herramientas Instaladas

- **pre-commit**: Gestor de hooks de git para ejecutar verificaciones automáticas
- **black**: Formateador de código Python
- **isort**: Ordenador de imports Python
- **flake8**: Linter de estilo Python (con flake8-bugbear)
- **pylint**: Analizador de código Python con pylint-odoo
- **autoflake**: Elimina imports y variables no utilizadas
- **pyupgrade**: Actualiza sintaxis de Python a versiones más modernas
- **prettier**: Formateador para XML, YAML, JSON, etc.

## Uso

### Verificación Manual

Para ejecutar las verificaciones en todos los archivos:

```bash
pre-commit run --all-files
```

Para ejecutar en archivos específicos:

```bash
pre-commit run --files path/to/file.py
```

### Verificación Automática

Los hooks de pre-commit están configurados para ejecutarse automáticamente en cada commit. Si hay errores, el commit será rechazado hasta que se corrijan.

### Ejecutar Herramientas Individuales

```bash
# Black
black .

# isort
isort .

# flake8
flake8 .

# pylint (opcional)
pylint --rcfile=.pylintrc <addon_name>

# pylint (mandatorio)
pylint --rcfile=.pylintrc-mandatory <addon_name>
```

## Configuración

Los archivos de configuración son:

- `.pre-commit-config.yaml`: Configuración de pre-commit hooks
- `.pylintrc`: Verificaciones opcionales y mandatorias de pylint
- `.pylintrc-mandatory`: Solo verificaciones mandatorias
- `.flake8`: Configuración de flake8
- `.isort.cfg`: Configuración de isort
- `setup.cfg`: Configuración adicional para flake8 e isort
- `pyproject.toml`: Configuración de black e isort
- `.editorconfig`: Configuración de editor para consistencia

## Actualización de Hooks

Para actualizar los hooks a las últimas versiones:

```bash
pre-commit autoupdate
```

## Desactivar Temporalmente

Si necesitas hacer un commit sin ejecutar las verificaciones (NO RECOMENDADO):

```bash
git commit --no-verify
```

## Más Información

- [OCA Guidelines](https://github.com/OCA/maintainer-tools)
- [pre-commit](https://pre-commit.com/)
- [pylint-odoo](https://github.com/OCA/pylint-odoo)
