Este proyecto ya no se mantiene activamente.
Contenido
Tidypy es una herramienta que encapsula una serie de otras herramientas de análisis estático y facilita la configuración de configurar, ejecutar y revisar sus resultados.
*.py . Además de ejecutar varias herramientas diferentes en su código, también puede verificar sus archivos YAML, JSON, PO, POT y RST.pyproject.toml definido por PEP 518. Todas las opciones para todas las herramientas usos que Tidypy usa se declaran en un solo lugar, en lugar de requerir que configure cada herramienta de una manera diferente.# noqa en su fuente de Python para ignorar fácilmente los problemas reportados por cualquier herramienta. Cuando se instala Tidypy ( pip install tidypy ), el comando tidypy debe estar disponible en su entorno:
$ Tidypy --help
Uso: Tidypy [Opciones] Comando [Args] ...
Una herramienta que ejecuta varias herramientas de análisis estático en un proyecto de Python
y agrega los resultados.
Opciones:
-Versión Mostrar la versión y la salida.
--Help Muestra este mensaje y salida.
Comandos:
Verifique ejecutar las herramientas en los archivos del proyecto.
Controlación predeterminada emite una configuración predeterminada que se puede usar para
Bootstrap su propio archivo de configuración.
Las extensiones emiten una lista de todas las extensiones de Tidypy disponibles.
install-vcs instala tidypy como un gancho previo al comercio en el especificado
VC.
Lists-codes emite una lista de todos los códigos de problemas conocidos que herramientas
puede informar.
Purge-config-cache elimina el caché de las configuraciones recuperadas de
fuera de la configuración primaria.
Eliminar VCS elimina el gancho de Tidypy Pre-Commit del especificado
VC.
Para que Tidypy analice su proyecto, use el subcomando check :
$ Tidypy Check --help
Uso: Tidypy Check [Opciones] [Ruta]
Ejecuta las herramientas en los archivos del proyecto.
Acepta un argumento, que es el camino hacia la base del proyecto Python.
Si no se especifica, el valor predeterminado al directorio de trabajo actual.
Opciones:
-x, -Exclude regex especifica una expresión regular coincidente
contra los caminos de los que quieres excluir
el examen. Se puede especificar múltiple
veces. Anula las expresiones especificadas
En el archivo de configuración.
-t, - -tool [Bandit | dlint | Eradicate | jsonlint | manifest | mccabe | polint | pycodestyle | pydiatra | pydocstyle | pyflakes | pylint | Pyroma | rstlint | secretos | Vulture | Yamllint]
Especifica el nombre de una herramienta para usar durante
el examen. Se puede especificar múltiple
veces. Anula el archivo de configuración.
-r,-Informar [Consola, CSV, Custom, JSON, Null, Pycodestyle, Pylint, Pylint-Passable, Toml, Yaml] [: nombre de archivo]
Especifica el nombre de un informe para ejecutar
Después del examen. Puede especificar un
Nombre de archivo de salida opcional utilizando el formulario -r
Informe: nombre de archivo. Si el nombre de archivo es inseguro, el
El informe se escribirá en Stdout. Puede ser
especificado varias veces. Anula el
archivo de configuración.
-C, - -Config FileName especifica la ruta hacia el Tidypy
archivo de configuración para usar en lugar del
configuración encontrada en el proyecto
pyproject.toml.
-trabajadores num_workers El número de trabajadores que se utilizarán simultáneamente
Ejecutar las herramientas. Anula el
archivo de configuración.
--Disable-Merge deshabilite la fusión de problemas de varios
Herramientas cuando Tidypy los considera equivalentes.
Anula el archivo de configuración.
-Descripción-Progress Deshabilite la visualización de la barra de progreso.
--desesable-noqa deshabilita la capacidad de ignorar los problemas utilizando
El comentario "# NOQA" en los archivos de Python.
--Disable-Config-Cache Desactive el uso del caché al recuperar
Configuraciones a las referenciadas por "extensas"
opción.
--Help Muestra este mensaje y salida.
Si necesita generar un archivo de configuración de esqueleto con las opciones predeterminadas, use el subcomando default-config :
$ Tidypy default-config --help
Uso: Tidypy predeterminado-config [opciones]
Emite una configuración predeterminada que se puede usar para arrancar su propia
archivo de configuración.
Opciones:
--PyProject outen la configuración para que pueda usarse en un pyproject.toml
archivo.
--Help Muestra este mensaje y salida.
Si desea ver una lista de los posibles códigos de emisión que podrían devolverse, use el subcomando list-codes :
$ Tidypy List-Codes --help
Uso: Tidypy List-codes [Opciones]
Emite una lista de todos los códigos de problemas conocidos que las herramientas pueden informar.
Opciones:
-t, - -tool [Bandit | dlint | Eradicate | jsonlint | manifest | mccabe | polint | pycodestyle | pydiatra | pydocstyle | pyflakes | pylint | Pyroma | rstlint | secretos | Vulture | Yamllint]
Especifica el nombre de una herramienta cuyos códigos
debe ser emitido. Si no se especifica, los valores predeterminados
a todas las herramientas.
-f, -format [toml | json | yaml | csv]
Especifica el formato en el que las herramientas
debe ser emitido. Si no se especifica, los valores predeterminados
a Toml.
--Help Muestra este mensaje y salida.
Si desea instalar o eliminar TidyPy como un gancho previamente al Commit en los VCS de su proyecto, use los subcomands install-vcs / remove-vcs :
$ Tidypy Install-VCS --help
Uso: Tidypy Install-VCS [Opciones] VCS [ruta]
Instala Tidypy como un gancho precomito en los VC especificados.
Acepta dos argumentos:
VCS: el sistema de control de versiones para instalar el gancho. Elija entre:
Git, HG
Ruta: la ruta a la base del repositorio para instalar el gancho en.
Si no se especifica, el valor predeterminado al directorio de trabajo actual.
Opciones:
-Estricar si el gancho debe evitar o no la confirmación si los tidypy encuentran
asuntos.
--Help Muestra este mensaje y salida.
$ Tidypy Remout-VCS --help
Uso: Tidypy Remout-VCS [Opciones] VCS [ruta]
Elimina el gancho de Tidypy Pre-Commit de los VC especificados.
Acepta dos argumentos:
VCS: el sistema de control de versiones para eliminar el gancho. Elija entre:
Git, HG
Ruta: la ruta a la base del repositorio para eliminar el gancho de. Si
No especificado, el valor predeterminado al directorio de trabajo actual.
Opciones:
--Help Muestra este mensaje y salida.
Si desea habilitar la finalización de BASH para Tidypy, ejecute lo siguiente en su caparazón (o póngalo en sus scripts de inicio de Bash):
$ eval "$ (_ tidypy_complete = fuente tidypy)"
Si no desea instalar TidyPy localmente en su sistema o en su VirtualEnv, puede usar la imagen Docker publicada:
$ Docker Run - -Rm -Tty --Volume = `pwd`:/Project Tidypy/Tidypy
El comando anterior ejecutará tidypy check en el contenido del directorio actual. Si desea ejecutarlo en un directorio diferente, cambie el `pwd` a cualquier ruta que necesite (el objetivo es montar su directorio de proyecto al volumen del contenedor /project ).
Ejecutar TidyPy de esta manera tiene algunas limitaciones, principalmente en torno al hecho de que, dado que TidyPy se ejecuta en su propio entorno de pitón aislado, herramientas como Pylint no podrán introspectar los paquetes que su proyecto instaló localmente, por lo que puede informar falsos positivos en torno a "Importar órgano", "sin nombre", "" No-miembro ", etc., etc., etc., etc., etc., etc., etc.
Si desea ejecutar un comando que no sea check , simplemente pase eso cuando invoque Docker:
$ docker run--rm-tty --volume = `pwd`:/proyecto tidypy/tidypy tidypy list-codes
HACER
Además de ignorar archivos completos, herramientas o tipos de problemas específicos de las herramientas a través de su archivo de configuración, también puede usar comentarios en sus archivos fuente de Python para ignorar los problemas en líneas específicas. Algunas herramientas tienen su propio soporte y notación incorporados para hacer esto:
# pylint# nosec# noqa# noqa# pragma: whitelist secret Tidypy va más allá de estos indicadores específicos de la herramienta para implementar # noqa a escala global para los archivos de origen de Python. Ignorará los problemas de las líneas que tienen el comentario # noqa , independientemente de qué herramientas planteen los problemas. Si solo desea ignorar un tipo particular de problema en una línea, puede usar sintaxis como la siguiente:
# NOQA: CODE1, CODE2
O, si se usa un código en particular en múltiples herramientas, puede especificar la herramienta exacta en el comentario:
# Noqa: PyCodeStyle: Code1, Pylint: Code2
O, si desea ignorar cualquier problema, una herramienta específica aumenta en una línea, puede especificar la herramienta:
# Noqa: @pycodestyle, @pylint
Puede, por supuesto, mezclar y combinar las tres anotaciones en un solo comentario si es necesario:
# NOQA: CODE1, Pylint: Code2,@pycodestyle
Puede deshabilitar el comportamiento de NOQA de Tidypy especificando la opción --disable-noqa en la línea de comandos o configurando la opción noqa en false en su archivo de configuración. Sin embargo, una advertencia: actualmente Pycodestyle y Pydocstyle no respetan esta opción y siempre honrarán cualquier comentario # noqa que encuentren.
Fuera de la caja, Tidypy incluye soporte para una serie de herramientas:
Tidypy incluye una serie de métodos diferentes para presentar y/o exportar los resultados del análisis de un proyecto. Fuera de la caja, proporciona lo siguiente:
filename , line , character , tool , code , message .Tidypy incluye un puñado de complementos/integraciones que lo conectan a otras herramientas.
--tidypy en la línea de comandos cuando ejecuta Pytest, o incluirlo como parte de la propiedad addopts en su configuración de Pytest.--with-tidypy en la línea de comando cuando corre la nariz, o establece la propiedad with-tidypy en 1 en su setup.cfg .tidypy . Para habilitarlo, puede especificar --extend=tidypy.plugin.pbbt en la línea de comandos cuando ejecuta PBBT, o establecer la propiedad extend en su setup.cfg o pbbt.yaml a tidypy.plugin.pbbt . Existe una interfaz simple para extender TidyPy para incluir más y diferentes herramientas y reporteros. Para agregar una herramienta, cree una clase que extienda TidyPy.Tool, y en su setup.py , declare un entry_point para tidypy.tools que apunta a su clase:
entry_points = {
'Tidypy.Tools': [
'mycooltool = path.to.model: mycooltoolclassname',
]
}
Para agregar un reportero, el proceso es casi idéntico, excepto que extiende TidyPy.eport y declara un entry_point para tidypy.reports .
Sí, eso sucede. La filosofía que elegí seguir con esta herramienta es que no quería que me escondiera nada. Quería que su comportamiento predeterminado ejecute todas las herramientas en su suite utilizando su entorno más desagradable. Luego, cuando puedo ver el alcance completo del daño, puedo decidir deshabilitar herramientas o problemas específicos a través de una configuración de nivel de proyecto. Pensé que si alguien se tomó el tiempo para implementar un cheque para un problema en particular, debe pensar que tiene algún valor. Si mis herramientas me ocultan de mí por defecto, entonces no podré obtener ningún beneficio de ello.
En general, no recomiendo comenzar a usar linters u otros tipos de analizadores estáticos cuando creas que has "terminado". Debe incorporarlos a su flujo de trabajo justo al comienzo de un proyecto, tal como lo haría (o debería) sus pruebas unitarias. De esa manera encuentras cosas temprano y aprendes de ellas (o las desactives). Es mucho menos desalentador una tarea que lidiar cuando las aborda de forma incremental.
Las contribuciones son más bienvenidas. ¡Particularmente si son correcciones de errores! Para hackear este código, simplemente clonarlo y luego ejecutar make setup . Esto creará un VirtualEnv con todas las herramientas que necesitará. El Makefile también tiene un objetivo test para ejecutar la suite Pytest y un objetivo lint para ejecutar Tidypy sobre sí mismo.
Tidypy se publica bajo los términos de la licencia MIT.