# ✅ Instalación Completa - Herramientas de Verificación OCA ## Resumen de la Instalación Se han instalado y configurado exitosamente todas las herramientas de verificación OCA estándar en este repositorio. ## 📦 Paquetes Instalados Los siguientes paquetes Python han sido instalados en el entorno virtual (`.venv`): - ✅ **pre-commit** - Gestor de hooks de git - ✅ **black** - Formateador de código Python - ✅ **isort** - Ordenador de imports - ✅ **flake8** - Linter de estilo - ✅ **flake8-bugbear** - Plugin adicional para flake8 - ✅ **pylint** - Analizador estático de código - ✅ **pylint-odoo** - Plugin específico para Odoo - ✅ **autoflake** - Elimina imports y variables no usadas - ✅ **pyupgrade** - Actualiza sintaxis de Python ## 📄 Archivos de Configuración Creados ### Configuración Principal - ✅ `.pre-commit-config.yaml` - Configuración de pre-commit con hooks OCA - ✅ `.pylintrc` - Reglas de pylint (opcionales + mandatorias) - ✅ `.pylintrc-mandatory` - Solo reglas mandatorias de pylint - ✅ `.flake8` - Configuración de flake8 - ✅ `.isort.cfg` - Configuración de isort - ✅ `setup.cfg` - Configuración compartida - ✅ `pyproject.toml` - Configuración de black e isort - ✅ `.editorconfig` - Configuración de editor - ✅ `requirements.txt` - Dependencias del proyecto ### Herramientas y Scripts - ✅ `Makefile` - Comandos make para tareas comunes - ✅ `check_addon.sh` - Script de verificación rápida de addons - ✅ `LINTERS_README.md` - Documentación de uso ### VS Code - ✅ `.vscode/settings.json` - Configuración actualizada - ✅ `.vscode/extensions.json` - Extensiones recomendadas ## 🔧 Hooks de Pre-commit Instalados Los siguientes hooks se ejecutarán automáticamente en cada commit: 1. **forbidden-files** - Detecta archivos prohibidos (.rej) 2. **oca-update-pre-commit-excluded-addons** - Actualiza lista de addons excluidos 3. **autoflake** - Elimina imports/variables no usadas 4. **black** - Formatea código Python 5. **prettier** - Formatea XML, YAML, JSON 6. **eslint** - Verifica JavaScript 7. **trailing-whitespace** - Elimina espacios al final de línea 8. **end-of-file-fixer** - Asegura nueva línea al final de archivo 9. **debug-statements** - Detecta statements de debug 10. **fix-encoding-pragma** - Remueve pragmas de encoding 11. **check-case-conflict** - Detecta conflictos de mayúsculas/minúsculas 12. **check-docstring-first** - Verifica posición de docstrings 13. **check-executables-have-shebangs** - Verifica shebangs 14. **check-merge-conflict** - Detecta marcadores de conflicto 15. **check-symlinks** - Verifica enlaces simbólicos 16. **check-xml** - Verifica sintaxis XML 17. **mixed-line-ending** - Normaliza finales de línea 18. **pyupgrade** - Actualiza sintaxis Python 19. **isort** - Ordena imports (excepto __init__.py) 20. **setuptools-odoo-make-default** - Genera setup/ 21. **setuptools-odoo-get-requirements** - Actualiza requirements.txt 22. **flake8** - Verifica estilo Python 23. **mypy** - Verificación de tipos estática 24. **pylint** (opcional) - Análisis de código con exit-zero 25. **pylint** (mandatorio) - Análisis de código que falla el commit ## 🚀 Uso Rápido ### Comandos Make ```bash # Ver todos los comandos disponibles make help # Ejecutar todas las verificaciones make lint # Formatear código make format # Verificar formato sin modificar make check-format # Ejecutar flake8 make flake8 # Ejecutar pylint en todos los addons make pylint # Solo verificaciones mandatorias make pylint-required # Limpiar archivos temporales make clean # Actualizar requirements.txt make requirements # Actualizar hooks a últimas versiones make update-hooks ``` ### Script de Verificación de Addon ```bash # Verificar un addon específico ./check_addon.sh account_invoice_triple_discount ``` ### Pre-commit Manual ```bash # Ejecutar en todos los archivos pre-commit run --all-files # Ejecutar en archivos modificados pre-commit run # Ejecutar un hook específico pre-commit run black --all-files # Ejecutar en archivos específicos pre-commit run --files path/to/file.py ``` ### Herramientas Individuales ```bash # Black black . black --check . # Solo verificar sin modificar # isort isort . isort --check-only . # Solo verificar sin modificar # flake8 flake8 . flake8 account_invoice_triple_discount/ # pylint pylint --rcfile=.pylintrc account_invoice_triple_discount/ pylint --rcfile=.pylintrc-mandatory account_invoice_triple_discount/ ``` ## ⚙️ Configuración de VS Code Se recomienda instalar las siguientes extensiones: - Python - Black Formatter - isort - Pylint - Flake8 - Prettier - EditorConfig - Odoo Snippets Las extensiones recomendadas están definidas en `.vscode/extensions.json`. ## 🔍 Verificación de la Instalación Para verificar que todo está funcionando correctamente: ```bash # 1. Verificar versiones instaladas black --version flake8 --version pylint --version isort --version pre-commit --version # 2. Probar black en un archivo black --check account_invoice_triple_discount/models/ # 3. Probar flake8 en un addon flake8 account_invoice_triple_discount/ # 4. Ejecutar un hook simple pre-commit run forbidden-files --all-files ``` ## 📚 Documentación Adicional - Ver [LINTERS_README.md](LINTERS_README.md) para más detalles - [OCA Guidelines](https://github.com/OCA/maintainer-tools) - [pre-commit](https://pre-commit.com/) - [pylint-odoo](https://github.com/OCA/pylint-odoo) - [Black](https://black.readthedocs.io/) ## 🎯 Próximos Pasos 1. Ejecutar `make lint` para verificar el estado actual del código 2. Corregir cualquier problema encontrado 3. Hacer commit con los cambios (pre-commit se ejecutará automáticamente) 4. Si hay problemas que no se pueden resolver, revisar la configuración específica en los archivos `.pylintrc`, `.flake8`, etc. ## ⚠️ Notas Importantes - Los hooks de pre-commit se ejecutarán automáticamente en cada commit - Si necesitas hacer un commit sin verificación (NO RECOMENDADO): `git commit --no-verify` - Los archivos `__init__.py` son excluidos de la ordenación de imports por convención OCA - Las verificaciones de pylint tienen dos niveles: opcionales (con `--exit-zero`) y mandatorias (que fallan el commit) - El formateo con black y prettier puede modificar archivos automáticamente --- **✅ Instalación completada exitosamente** Fecha: 11 de febrero de 2026