Este projeto não é mais mantido ativamente.
Conteúdo
O Tidypy é uma ferramenta que encapsula várias outras ferramentas de análise estática e facilita a configuração, execução e revisão de seus resultados.
*.py . Além de executar várias ferramentas diferentes no seu código, ele também pode verificar seus arquivos YAML, JSON, PO, POT e RST.pyproject.toml definido pelo PEP 518. Todas as opções para todas as ferramentas que o Tidypy usa são declaradas em um só lugar, em vez de exigir que você configure cada ferramenta de uma maneira diferente.# noqa Comentário em sua fonte Python para ignorar facilmente os problemas relatados por qualquer ferramenta. Quando a Tidypy é instalada ( pip install tidypy ), o comando tidypy deve ficar disponível em seu ambiente:
$ tidypy - -help
Uso: Comando de Tidypy [Opções] [args] ...
Uma ferramenta que executa várias ferramentas de análise estática em um projeto Python
e agrega os resultados.
Opções:
-Versões mostram a versão e a saída.
-Help Mostra esta mensagem e saída.
Comandos:
Verificar executa as ferramentas nos arquivos do projeto.
O Config padrão produz uma configuração padrão que pode ser usada para
Bootstrap seu próprio arquivo de configuração.
Extensões geram uma listagem de todas as extensões de marés disponíveis.
Install-VCS instala Tidypy como um gancho de pré-compromisso no
VCs.
Codos de listas produz uma lista de todos os códigos de problema conhecidos que ferramentas
pode relatar.
Purge-Config-cache exclui o cache das configurações recuperadas de
fora da configuração primária.
Remover-vcs remove o gancho de pré-compromisso da Tidypy do
VCs.
Para que a Tidypy analise seu projeto, use o subcomando check :
$ tidypy cheque -help
Uso: Tidypy Check [Options] [Path]
Executa as ferramentas nos arquivos do projeto.
Aceita um argumento, que é o caminho para a base do projeto Python.
Se não for especificado, os padrões no diretório de trabalho atual.
Opções:
-x, --exclude regex especifica uma expressão regular correspondente
contra caminhos que você deseja excluir de
o exame. Pode ser especificado múltiplo
vezes. Substitui as expressões especificadas
No arquivo de configuração.
-t, - -tool [bandit | dlint | erradicate | jsonlint | manifesto | mccabe | polint | pycodestyle | pydiatra | pydocstyle | pyflakes | pylint | pyoma | rstlint | segredos | vulture | yamllint]
Especifica o nome de uma ferramenta para usar durante
o exame. Pode ser especificado múltiplo
vezes. Substitui o arquivo de configuração.
-R, --Report [Console, CSV, Custom, JSON, NULL, Pycodestyle, Pylint, Pylint-Parsable, Toml, Yaml] [: nome do arquivo]
Especifica o nome de um relatório para executar
Após o exame. Pode especificar um
Nome do arquivo de saída opcional usando o formulário -r
Relatório: nome do arquivo. Se o nome do arquivo não for definido, o
O relatório será escrito no stdout. Pode ser
especificado várias vezes. Substitui o
arquivo de configuração.
-C, - -Config FileName Especifica o caminho para o Tidypy
arquivo de configuração para usar em vez do
configuração encontrada no projeto
pyProject.toml.
-Trabalhadores num_workers O número de trabalhadores para usar para simplificar
Execute as ferramentas. Substitui o
arquivo de configuração.
-Disable-Merge desativando a fusão de questões de vários
Ferramentas quando a Tidypy as considera equivalente.
Substitui o arquivo de configuração.
-Desativar-se-Progresso Desativar a exibição da barra de progresso.
--Disable-noqa Desativar a capacidade de ignorar problemas usando
O comentário "# noqa" nos arquivos python.
--Disable-Config-cache Desative o uso do cache ao recuperar
Configurações referenciadas pelos "estende -se"
opção.
-Help Mostra esta mensagem e saída.
Se você precisar gerar um arquivo de configuração do esqueleto com as opções padrão, use o subcomando default-config :
$ tidypy default-config-help
Uso: Tidypy padrão-config [Opções]
Produz uma configuração padrão que pode ser usada para inicializar o seu próprio
arquivo de configuração.
Opções:
-Saída do projeto da configuração para que ela possa ser usada em um PyProject.toml
arquivo.
-Help Mostra esta mensagem e saída.
Se você quiser ver uma lista dos possíveis códigos de edição que poderiam ser devolvidos, use o subcomando list-codes :
$ tidypy list-codes-help
Uso: codos de listas de marés [Opções]
Produz uma listagem de todos os códigos de problema conhecidos que as ferramentas podem relatar.
Opções:
-t, - -tool [bandit | dlint | erradicate | jsonlint | manifesto | mccabe | polint | pycodestyle | pydiatra | pydocstyle | pyflakes | pylint | pyoma | rstlint | segredos | vulture | yamllint]
Especifica o nome de uma ferramenta cujos códigos
deve ser emitido. Se não for especificado, os padrões
para todas as ferramentas.
-f, - -formato [toml | json | yaml | csv]
Especifica o formato em que as ferramentas
deve ser emitido. Se não for especificado, os padrões
para Toml.
-Help Mostra esta mensagem e saída.
Se você deseja instalar ou remover o Tidypy como um gancho de pré-compromisso nos VCs do seu projeto, use os subcomandos install-vcs / remove-vcs :
$ tidypy install-vcs-help
Uso: Tidypy Install-VCS [Opções] VCS [PATH]
Instala o Tidypy como um gancho de pré-compromisso no VCS especificado.
Aceita dois argumentos:
VCS: o sistema de controle de versão para instalar o gancho. Escolha de:
Git, hg
Caminho: o caminho para a base do repositório para instalar o gancho.
Se não for especificado, os padrões no diretório de trabalho atual.
Opções:
-Estrelar se o gancho deve ou não impedir a confirmação se a Tidypy achar
problemas.
-Help Mostra esta mensagem e saída.
$ tidypy remove-vcs-help
Uso: Tidypy Remove-VCS [Opções] VCS [PATH]
Remove o gancho de pré-comprometimento da Tidypy do VCS especificado.
Aceita dois argumentos:
VCS: o sistema de controle de versão para remover o gancho. Escolha de:
Git, hg
Caminho: o caminho para a base do repositório para remover o gancho. Se
Não especificado, os padrões no diretório de trabalho atual.
Opções:
-Help Mostra esta mensagem e saída.
Se você deseja ativar a conclusão do Bash para a Tidypy, execute o seguinte em seu shell (ou coloque -o em seus scripts de inicialização do Bash):
$ avaliou "$ (_ tidypy_complete = fonte tidypy)"
Se você não deseja instalar o Tidypy localmente em seu sistema ou no seu VirtualENV, você pode usar a imagem publicada do Docker:
$ docker run -rm - -tty --volume = `pwd`:/Project tidypy/tidypy
O comando acima executará tidypy check no conteúdo do diretório atual. Se você deseja executá -lo em um diretório diferente, altere o `pwd` para qualquer caminho que você precisar (o objetivo é montar seu diretório de projeto para o volume do contêiner /project ).
A execução da Tidypy dessa maneira possui algumas limitações, principalmente o fato de que, como a Tidypy está funcionando por si só, um ambiente de python isolado, ferramentas como o Pylint não poderão introspectar os pacotes que seu projeto instalou localmente, portanto, pode relatar positivos falsos em torno de "Import-Error", "No-Name-in-Módulo" ", não-membro", etc. etc.
Se você quiser executar um comando que não seja check , basta passar isso quando você invocar o Docker:
$ docker run--rm--tty --volume = `pwd`:/Project tidypy/tidypy tidypy list-codes
PENDÊNCIA
Além de ignorar arquivos inteiros, ferramentas ou tipos de problemas específicos de ferramentas por meio do seu arquivo de configuração, você também pode usar comentários em seus arquivos de origem Python para ignorar problemas em linhas específicas. Algumas ferramentas têm seu próprio suporte interno e notação para fazer isso:
# pylint# nosec# noqa# noqa# pragma: whitelist secret O Tidypy vai além desses sinalizadores específicos da ferramenta para implementar # noqa em escala global para arquivos de origem Python. Ele ignorará questões para linhas que têm o comentário # noqa , independentemente de quais ferramentas levantarem os problemas. Se você deseja ignorar apenas um tipo específico de problema em uma linha, poderá usar a sintaxe como o seguinte:
# NOQA: Code1, Code2
Ou, se um código específico for usado em várias ferramentas, você poderá especificar a ferramenta exata no comentário:
# NOQA: Pycodestyle: Code1, Pylint: Code2
Ou, se você deseja ignorar qualquer problema que uma ferramenta específica aumente em uma linha, poderá especificar a ferramenta:
# noqa: @pycodestyle, @pylint
É claro que você pode misturar e combinar todas as três notações em um único comentário, se precisar:
# noqa: code1, pylint: code2,@pycodestyle
Você pode desativar o comportamento NOQA da Tidypy especificando a opção --disable-noqa na linha de comando ou configurando a opção noqa como false no seu arquivo de configuração. Uma advertência, no entanto: atualmente Pycodestyle e Pydocstyle não respeitam essa opção e sempre honrarão os comentários # noqa que encontrarem.
Fora da caixa, a Tidypy inclui suporte para várias ferramentas:
A Tidypy inclui vários métodos diferentes para apresentar e/ou exportar os resultados da análise de um projeto. Fora da caixa, ele fornece o seguinte:
filename , line , character , tool , code , message .O Tidypy inclui um punhado de plugins/integrações que o conectam a outras ferramentas.
--tidypy na linha de comando quando executar o Pytest ou incluí -lo como parte da propriedade addopts na sua configuração pytest.--with-tidypy na linha de comando quando você executar o nariz ou definir a propriedade with-tidypy como 1 em seu setup.cfg .tidypy . Para ativá -lo, você pode especificar --extend=tidypy.plugin.pbbt na linha de comando quando executar PBBT ou definir a propriedade extend em seu setup.cfg ou pbbt.yaml como tidypy.plugin.pbbt . Existe uma interface simples para estender o Tidypy para incluir mais e diferentes ferramentas e repórteres. Para adicionar uma ferramenta, crie uma classe que estenda o Tidypy.Tool e, no seu setup.py , declare um entry_point para tidypy.tools que aponta para a sua classe:
ENTRADE_POINTS = {
'tidypy.tools': [
'mycooltool = path.to.model: mycooltoolclassName',
],
}
Para adicionar um repórter, o processo é quase idêntico, exceto que você estende a Tidypy.Rorpore e declare um entry_point para tidypy.reports .
Sim, isso acontece. A filosofia que escolhi seguir com essa ferramenta é que não queria que ela escondesse nada de mim. Eu queria que seu comportamento padrão executasse todas as ferramentas em sua suíte usando seu cenário mais desagradável. Então, quando posso ver o escopo completo de danos, posso decidir desativar ferramentas ou problemas específicos por meio de uma configuração no nível do projeto. Imaginei que, se alguém dedicou um tempo para implementar uma verificação para um problema específico, deve pensar que ele tem algum valor. Se minha ferramenta esconder isso de mim por padrão, não poderei obter benefícios com ele.
Em geral, eu não recomendo começar a usar linters ou outros tipos de analisadores estáticos quando você pensa que está "pronto". Você deve incorporá -los ao seu fluxo de trabalho logo no início de um projeto - assim como faria (ou deveria) seus testes de unidade. Dessa forma, você encontra as coisas cedo e aprende com elas (ou desative -as). É muito menos assustador uma tarefa de lidar quando você os aborda incrementalmente.
As contribuições são muito bem -vindas. Especialmente se eles são correções de bugs! Para invadir esse código, basta cloná -lo e executar make setup . Isso criará um VirtualEnv com todas as ferramentas que você precisará. O Makefile também possui um alvo test para executar a suíte pytest e um alvo lint para executar o Tidypy por si mesmo.
Tidypy é liberado sob os termos da licença do MIT.