Algunos ganchos listos para usar para compromiso previo.
Ver también: https://github.com/pre-commit/pre-commit
Agregue esto a su .pre-commit-config.yaml
- repositorio: https://github.com/pre-commit/pre-commit-hooksrev: v5.0.0 # Utilice la referencia a la que desea señalar los ganchos: - id: espacio en blanco final # - id: ...
check-added-large-files
Evite que se confirmen archivos gigantes.
Especifique qué es "demasiado grande" con args: ['--maxkb=123']
(predeterminado=500kB).
Limita los archivos marcados a aquellos indicados como preparados para ser agregados por git.
Si está instalado git-lfs
, se omitirán los archivos lfs (requiere git-lfs>=2.2.1
)
--enforce-all
: verifica todos los archivos enumerados, no solo aquellos preparados para agregarlos.
check-ast
Simplemente verifique si los archivos se analizan como Python válido.
check-builtin-literals
Requiere sintaxis literal al inicializar tipos integrados de Python vacíos o cero.
Permite llamar a constructores con argumentos posicionales (por ejemplo, list('abc')
).
Permite llamar a constructores desde el espacio de nombres builtins
( __builtin__
) ( builtins.list()
).
Ignore este requisito para tipos integrados específicos con --ignore=type1,type2,…
.
Prohibir la sintaxis de palabras clave dict
con --no-allow-dict-kwargs
.
check-case-conflict
Busque archivos con nombres que pudieran entrar en conflicto en un sistema de archivos que no distingue entre mayúsculas y minúsculas como MacOS HFS+ o Windows FAT.
check-docstring-first
Comprueba si hay un error común al colocar código antes de la cadena de documentación.
check-executables-have-shebangs
Comprueba que los ejecutables no binarios tengan un shebang adecuado.
check-illegal-windows-names
Busque archivos que no se puedan crear en Windows.
check-json
Intenta cargar todos los archivos json para verificar la sintaxis.
check-merge-conflict
Busque archivos que contengan cadenas de conflicto de fusión.
--assume-in-merge
: permite ejecutar el enlace cuando no hay ninguna operación de fusión en curso
check-shebang-scripts-are-executable
Comprueba que los scripts con shebangs sean ejecutables.
check-symlinks
Comprueba si hay enlaces simbólicos que no apunten a nada.
check-toml
Intenta cargar todos los archivos TOML para verificar la sintaxis.
check-vcs-permalinks
Garantiza que los enlaces a sitios web de vcs sean enlaces permanentes.
--additional-github-domain DOMAIN
: agrega verificación para el dominio especificado. Se puede repetir varias veces. por ejemplo, si su empresa usa GitHub Enterprise, puede usar algo como --additional-github-domain github.example.com
check-xml
Intenta cargar todos los archivos xml para verificar la sintaxis.
check-yaml
Intenta cargar todos los archivos yaml para verificar la sintaxis.
--allow-multiple-documents
: permite archivos yaml que utilizan la sintaxis de varios documentos
--unsafe
: en lugar de cargar los archivos, simplemente analícelos en busca de sintaxis. Una verificación solo de sintaxis habilita extensiones y construcciones inseguras que de otro modo estarían prohibidas. El uso de esta opción elimina todas las garantías de portabilidad a otras implementaciones de yaml. Implica --allow-multiple-documents
.
debug-statements
Verifique las importaciones del depurador y las llamadas a py37+ breakpoint()
en la fuente de Python.
destroyed-symlinks
Detecta enlaces simbólicos que se cambian a archivos normales con el contenido de una ruta a la que apuntaba ese enlace simbólico. Esto suele suceder en Windows cuando un usuario clona un repositorio que tiene enlaces simbólicos pero no tiene permiso para crear enlaces simbólicos.
detect-aws-credentials
Comprueba la existencia de secretos de AWS que haya configurado con la CLI de AWS. Están disponibles los siguientes argumentos:
--credentials-file CREDENTIALS_FILE
: archivo de configuración de estilo AWS CLI adicional en una ubicación no estándar para obtener las credenciales configuradas. Se puede repetir varias veces.
--allow-missing-credentials
: permite el paso del enlace cuando no se detectan credenciales.
detect-private-key
Comprueba la existencia de claves privadas.
double-quote-string-fixer
Este gancho reemplaza cadenas entre comillas dobles por cadenas entre comillas simples.
end-of-file-fixer
Se asegura de que los archivos terminen en una nueva línea y solo en una nueva línea.
file-contents-sorter
Ordene las líneas en archivos específicos (el valor predeterminado es alfabético). Debe proporcionar los files
de destino como entrada. Tenga en cuenta que este gancho eliminará las líneas en blanco y NO respeta ningún comentario. Todas las nuevas líneas se convertirán en cambios de línea ( n
).
Están disponibles los siguientes argumentos:
--ignore-case
: dobla los caracteres de minúsculas a mayúsculas.
--unique
: asegúrese de que cada línea sea única.
fix-byte-order-marker
elimina el marcador de orden de bytes UTF-8
fix-encoding-pragma
En desuso ya que py2 es EOL; use pyupgrade en su lugar.
Agregue # -*- coding: utf-8 -*-
a la parte superior de los archivos de Python.
Para eliminar el paso pragma de codificación --remove
(útil en una base de código solo de Python3)
forbid-new-submodules
Evite la adición de nuevos submódulos de git.
Esto pretende ser una ayuda para migrar fuera de los submódulos. Si desea prohibirlos por completo, utilice forbid-submodules
forbid-submodules
prohíbe cualquier submódulo en el repositorio.
mixed-line-ending
Reemplaza o verifica el final de línea mixta.
--fix={auto,crlf,lf,no}
Esta opción no es compatible con git setup check-in LF check-out CRLF ya que git difumina esto más tarde de invocar el gancho.
auto
: reemplaza automáticamente el final de línea más frecuente. Este es el argumento predeterminado.
crlf
, lf
: obliga a reemplazar el final de línea por CRLF y LF respectivamente.
no
: comprueba si hay algún final de línea mixto sin modificar ningún archivo.
name-tests-test
verifica que los archivos de prueba tengan el nombre correcto.
--pytest
(el valor predeterminado): asegúrese de que las pruebas coincidan con .*_test.py
--pytest-test-first
: garantiza que las pruebas coincidan con test_.*.py
--django
/ --unittest
: garantiza que las pruebas coincidan con test.*.py
no-commit-to-branch
Proteja sucursales específicas de registros directos.
Utilice args: [--branch, staging, --branch, main]
para configurar la rama. Tanto main
como master
están protegidos de forma predeterminada si no se establece ningún argumento de rama.
-b
/ --branch
se puede especificar varias veces para proteger varias ramas.
-p
/ --pattern
se puede utilizar para proteger ramas que coincidan con una expresión regular proporcionada (por ejemplo, --pattern, release/.*
). Puede especificarse varias veces.
Tenga en cuenta que no-commit-to-branch
está configurado de forma predeterminada en always_run
. Como resultado, ignorará cualquier configuración de files
, exclude
, types
o exclude_types
. Establezca always_run: false
para permitir que este enlace se omita de acuerdo con estos filtros de archivos. Advertencia: en esta configuración, este gancho siempre permitiría confirmaciones vacías ( git commit --allow-empty
).
pretty-format-json
Comprueba que todos tus archivos JSON sean bonitos. "Bonita" aquí significa que las claves están ordenadas y sangradas. Puede configurar esto con las siguientes opciones de línea de comando:
--autofix
: formatea automáticamente los archivos json
--indent ...
- Controla la sangría (ya sea un número para varios espacios o una cadena de espacios en blanco). El valor predeterminado es 2 espacios.
--no-ensure-ascii
conserva los caracteres Unicode en lugar de convertirlos en secuencias de escape
--no-sort-keys
: al realizar la reparación automática, conserva el orden de claves original (en lugar de ordenar las claves)
--top-keys comma,separated,keys
: claves para mantener en la parte superior de las asignaciones.
requirements-txt-fixer
Ordena las entradas en requisitos.txt y constraints.txt y elimina las entradas incorrectas para pkg-resources==0.0.0
sort-simple-yaml
Ordena archivos YAML simples que constan únicamente de claves de nivel superior, conservando comentarios y bloques.
Tenga en cuenta que sort-simple-yaml
de forma predeterminada no coincide con ningún files
ya que impone un formato muy específico. Debes optar por esto configurando files
, por ejemplo:
- id: sort-simple-yamlfiles: ^config/simple/
trailing-whitespace
Recorta los espacios en blanco finales.
Para preservar los saltos de línea estrictos de Markdown, utilice args: [--markdown-linebreak-ext=md]
(u otras extensiones utilizadas por sus archivos de Markdown). Si por alguna razón desea tratar todos los archivos como rebajas, utilice --markdown-linebreak-ext=*
.
De forma predeterminada, este gancho recorta todos los espacios en blanco desde los finales de las líneas. Para especificar un conjunto personalizado de caracteres para recortar, use args: [--chars,"<chars to trim>"]
.
check-byte-order-marker
: en su lugar utilice fix-byte-order-marker
Si desea utilizar estos ganchos, también están disponibles como paquete independiente.
Simplemente pip install pre-commit-hooks