Skip to content

configurar precommit

Oriol Piera edited this page Mar 3, 2025 · 1 revision

Hi ha 3 maneres de fer-lo servir:


Amb l'eina pre-commit automàticament al fer un commit

  1. Instal·lem pre-commit al venv de erp: pip install pre-commit
  2. Activem el pre-commit dins el repositori: pre-commit install

Podem desactivar-lo sempre que vulguem: pre-commit uninstall

Al fer un commit ens formatarà automàticament el codi dels fitxers modificats amb autoflake i autopep8. També farà les comprovacions amb flake8 i algunes altres pels XML i fitxer YAML.

  • Si algun formatador fa algun canvi o no passen totes les comprovacions el commit no es farà.
  • Els fitxers modificats pel pre-commit queden unstaged.
  • Fa el mateix que farà el GitHub Actions (definit al fitxer .pre-commit-config.yaml).

Amb l'eina pre-commit manualment, sense força que es passi al fer cada commit

  1. Anem a la carpeta del repositori
  2. Executem pre-commit run -a (tots els fitxers del repositori) o pre-commit run --files (fitxers especificats)
  3. Si volem que executi pre-commit per tots els fitxers modificats en un repo local, podem executar pre-commit run --files $(git diff --cached --name-only). Aquest mètode només arreglarà fitxers modificats. Si se n'han afegit, s'hauran d'afegir previament amb git add.

Integrat amb VSCode

  1. Instal·lem l'extensió de Python
  2. Instal·lem autopep8 (1.5.7) i flake8 (3.9.2) al venv de erp
  3. Activem el venv de erp a VSCode (barra blava de baix a la dreta dins d'un fitxer Python)
  4. A la configuració de VSCode settings.json definim el següent:
{
    "[python]": {
        "editor.defaultFormatter": "ms-python.python",
        "editor.formatOnSave": true,
    },
    "python.formatting.provider": "autopep8",
    "python.linting.enabled": true,
    "python.linting.flake8Enabled": true,
    "python.linting.flake8CategorySeverity.W": "Error",
    "python.terminal.activateEnvInCurrentTerminal": true,
    "python.terminal.activateEnvironment": true,
}

Al programar veurem els errors que ens marca flake8 i al guardar se'ns formata automàticament el codi amb autopep8. Aquestes dues eines tindran en compte la configuració dels fitxers .flake8 i .pycodestyle del repositori.