Alguns ganchos prontos para uso para pré-confirmação.
Veja também: https://github.com/pre-commit/pre-commit
Adicione isto ao seu .pre-commit-config.yaml
- repo: https://github.com/pre-commit/pre-commit-hooksrev: v5.0.0 # Use a referência que deseja apontar para os ganchos: - id: espaço em branco à direita # - id: ...
check-added-large-files
Evite que arquivos gigantes sejam comprometidos.
Especifique o que é "muito grande" com args: ['--maxkb=123']
(padrão=500kB).
Limita os arquivos verificados àqueles indicados como preparados para adição pelo git.
Se git-lfs
estiver instalado, os arquivos lfs serão ignorados (requer git-lfs>=2.2.1
)
--enforce-all
- Verifica todos os arquivos listados, não apenas aqueles preparados para adição.
check-ast
Basta verificar se os arquivos são analisados como python válido.
check-builtin-literals
Exigir sintaxe literal ao inicializar tipos internos vazios ou zero do Python.
Permite chamar construtores com argumentos posicionais (por exemplo, list('abc')
).
Permite chamar construtores do namespace builtins
( __builtin__
) ( builtins.list()
).
Ignore este requisito para tipos internos específicos com --ignore=type1,type2,…
.
Proibir a sintaxe da palavra-chave dict
com --no-allow-dict-kwargs
.
check-case-conflict
Verifique se há arquivos com nomes que possam entrar em conflito em um sistema de arquivos que não diferencia maiúsculas de minúsculas, como MacOS HFS+ ou Windows FAT.
check-docstring-first
Verifica um erro comum ao colocar o código antes da docstring.
check-executables-have-shebangs
Verifica se os executáveis não binários têm um shebang adequado.
check-illegal-windows-names
Verifique se há arquivos que não podem ser criados no Windows.
check-json
Tenta carregar todos os arquivos json para verificar a sintaxe.
check-merge-conflict
Verifique se há arquivos que contenham sequências de conflitos de mesclagem.
--assume-in-merge
- Permite executar o gancho quando não há operação de mesclagem em andamento
check-shebang-scripts-are-executable
Verifica se os scripts com shebangs são executáveis.
check-symlinks
Verifica se há links simbólicos que não apontam para nada.
check-toml
Tenta carregar todos os arquivos TOML para verificar a sintaxe.
check-vcs-permalinks
Garante que os links para sites de vcs sejam links permanentes.
--additional-github-domain DOMAIN
- Adiciona verificação para o domínio especificado. Pode ser repetido várias vezes. por exemplo, se sua empresa usa GitHub Enterprise, você pode usar algo como --additional-github-domain github.example.com
check-xml
Tenta carregar todos os arquivos XML para verificar a sintaxe.
check-yaml
Tenta carregar todos os arquivos yaml para verificar a sintaxe.
--allow-multiple-documents
- permite arquivos yaml que usam a sintaxe de vários documentos
--unsafe
- Em vez de carregar os arquivos, simplesmente analise-os quanto à sintaxe. Uma verificação somente de sintaxe permite extensões e construções inseguras que de outra forma seriam proibidas. Usar esta opção remove todas as garantias de portabilidade para outras implementações yaml. Implica --allow-multiple-documents
.
debug-statements
Verifique as importações do depurador e as chamadas py37+ breakpoint()
na fonte python.
destroyed-symlinks
Detecta links simbólicos que são alterados para arquivos normais com o conteúdo de um caminho para o qual esse link simbólico estava apontando. Isso geralmente acontece no Windows quando um usuário clona um repositório que possui links simbólicos, mas não tem permissão para criar links simbólicos.
detect-aws-credentials
Verifica a existência de segredos da AWS que você configurou com a AWS CLI. Os seguintes argumentos estão disponíveis:
--credentials-file CREDENTIALS_FILE
- arquivo de configuração adicional no estilo AWS CLI em um local não padrão para buscar credenciais configuradas. Pode ser repetido várias vezes.
--allow-missing-credentials
- Permite a passagem do gancho quando nenhuma credencial é detectada.
detect-private-key
Verifica a existência de chaves privadas.
double-quote-string-fixer
Este gancho substitui strings com aspas duplas por strings com aspas simples.
end-of-file-fixer
Garante que os arquivos terminem em uma nova linha e apenas em uma nova linha.
file-contents-sorter
Classifique as linhas em arquivos especificados (o padrão é alfabético). Você deve fornecer os files
de destino como entrada. Observe que este gancho removerá linhas em branco e NÃO respeitará nenhum comentário. Todas as novas linhas serão convertidas em feeds de linha ( n
).
Os seguintes argumentos estão disponíveis:
--ignore-case
- dobra letras minúsculas em caracteres maiúsculos.
--unique
- garante que cada linha seja única.
fix-byte-order-marker
remove o marcador de ordem de bytes UTF-8
fix-encoding-pragma
Obsoleto porque py2 é EOL - use pyupgrade.
Adicione # -*- coding: utf-8 -*-
ao topo dos arquivos python.
Para remover o pragma de codificação, passe --remove
(útil em uma base de código somente python3)
forbid-new-submodules
Impedir a adição de novos submódulos git.
O objetivo é ajudar a migrar para fora dos submódulos. Se você quiser bani-los totalmente, use forbid-submodules
forbid-submodules
proíbe quaisquer submódulos no repositório.
mixed-line-ending
Substitui ou verifica o final da linha mista.
--fix={auto,crlf,lf,no}
Esta opção não é compatível com git setup check-in LF check-out CRLF, pois git smudge isso depois que o gancho é invocado.
auto
- Substitui automaticamente o final de linha mais frequente. Este é o argumento padrão.
crlf
, lf
- Força a substituir o final da linha por CRLF e LF, respectivamente.
no
- Verifica se há alguma linha mista terminando sem modificar nenhum arquivo.
name-tests-test
verifica se os arquivos de teste estão nomeados corretamente.
--pytest
(o padrão): certifique-se de que os testes correspondam a .*_test.py
--pytest-test-first
: certifique-se de que os testes correspondam test_.*.py
--django
/ --unittest
: garante que os testes correspondam test.*.py
no-commit-to-branch
Proteja filiais específicas de checkins diretos.
Use args: [--branch, staging, --branch, main]
para definir a ramificação. Tanto main
quanto master
são protegidos por padrão se nenhum argumento de ramificação for definido.
-b
/ --branch
pode ser especificado várias vezes para proteger várias ramificações.
-p
/ --pattern
pode ser usado para proteger ramificações que correspondem a uma regex fornecida (por exemplo, --pattern, release/.*
). Pode ser especificado várias vezes.
Observe que no-commit-to-branch
é configurado por padrão como always_run
. Como resultado, ele irá ignorar qualquer configuração de files
, exclude
, types
ou exclude_types
. Defina always_run: false
para permitir que esse gancho seja ignorado de acordo com esses filtros de arquivo. Advertência: nesta configuração, commits vazios ( git commit --allow-empty
) sempre seriam permitidos por este gancho.
pretty-format-json
Verifica se todos os seus arquivos JSON estão bonitos. "Bonito" aqui significa que as chaves estão classificadas e recuadas. Você pode configurar isso com as seguintes opções de linha de comando:
--autofix
- formata automaticamente arquivos json
--indent ...
- Controla o recuo (um número para vários espaços ou uma sequência de espaços em branco). O padrão é 2 espaços.
--no-ensure-ascii
preserva caracteres Unicode em vez de converter em sequências de escape
--no-sort-keys
- ao corrigir automaticamente, retém a ordem original das chaves (em vez de classificar as chaves)
--top-keys comma,separated,keys
- Chaves para manter no topo dos mapeamentos.
requirements-txt-fixer
Classifica entradas em requisitos.txt e restrições.txt e remove entradas incorretas para pkg-resources==0.0.0
sort-simple-yaml
Classifica arquivos YAML simples que consistem apenas em chaves de nível superior, preservando comentários e blocos.
Observe que sort-simple-yaml
por padrão não corresponde a nenhum files
, pois impõe um formato muito específico. Você deve aceitar isso definindo files
, por exemplo:
- id: sort-simple-yamlfiles: ^config/simple/
trailing-whitespace
Corta os espaços em branco à direita.
Para preservar as quebras de linha rígidas do Markdown, use args: [--markdown-linebreak-ext=md]
(ou outras extensões usadas pelos seus arquivos markdown). Se por algum motivo você quiser tratar todos os arquivos como markdown, use --markdown-linebreak-ext=*
.
Por padrão, este gancho corta todos os espaços em branco do final das linhas. Para especificar um conjunto personalizado de caracteres para cortar, use args: [--chars,"<chars to trim>"]
.
check-byte-order-marker
: em vez disso, use fix-byte-order-marker
Se você quiser usar esses ganchos, eles também estão disponíveis como um pacote independente.
Simplesmente pip install pre-commit-hooks