
bellybutton es un motor de pelusa personalizable y fácil de configurar para Python.
Herramientas como Pylint y Flake8 proporcionan, fuera de la caja, una amplia variedad de reglas para hacer cumplir las mejores prácticas de Python, garantizar el cumplimiento de PEP-8 y evitar fuentes frecuentes de errores. Sin embargo, muchos proyectos tienen candidatos específicos de proyectos para el análisis estático, como guías de estilo interno, áreas de funcionalidad en desorden o fuentes comunes de error. Esto es especialmente cierto para esos proyectos con muchos contribuyentes o con bases de código grandes o heredadas.
bellybutton permite especificar las reglas de pelusa personalizadas por su proyecto y detectarse como parte de su proceso normal de compilación, prueba e implementación y, además, hace que la especificación de estas reglas sea altamente accesible, reduciendo en gran medida el costo de la adopción.
Prueba bellybutton si:
bellybutton se puede instalar a través de:
pip install bellybuttonUna vez instalado, ejecutando
bellybutton init En el directorio raíz de su proyecto, creará un archivo de configuración .bellybutton.yml con una regla de ejemplo para que comience a adaptarse. bellybutton también intentará proporcionar configuraciones de reglas adicionales basadas en la estructura del directorio de su proyecto.
Una vez que haya configurado bellybutton para su proyecto, en ejecución
bellybutton lint Ponerá el proyecto contra las reglas especificadas en su .bellybutton.yml . Además, ejecutando
bellybutton lint --modified-only Si usará GIT, solo vincule esos archivos que difieren de origin/master .
Para agregar bellybutton a su tubería CI, eche un vistazo a la configuración de TOX de este repositorio y .travis.yml como ejemplo.
Las reglas en los patrones de suministro bellybutton que deben atraparse y hacer que la pelusa falle. Las reglas como se especifican en su configuración .bellybutton.yml deben consistir en:
description Descripción, expresando el significado de la reglaexpr , que especifica el patrón que se atrapará, ya sea como una expresión de Astpath o como una expresión regular ( !regex ... ). Además, la clave utilizada para la regla dentro de la asignación rules sirve como su nombre.
Las reglas también pueden consistir en:
settings que especifica en qué archivos se debe aplicar la regla, así como si se puede ignorar a través de un # bb: ignore el comentarioexample de código Python que coincide con la reglainstead de una pieza de código alternativa, para guiar al desarrollador a arreglar su error de pelusa. Estos example y instead las cláusulas se verifican en tiempo de ejecución para asegurarse de que respectivamente lo son y no coinciden con la expr de la regla.
Como ejemplo, una regla de pelusa para una llamada de función desaprobada utilizando una expresión de Astpath podría parecer:
DeprecatedFnCall :
description : ` deprecated_fn ` will be deprecated in v9.1.2. Please use `new_fn` instead.
expr : //Call[func/Name/@id='deprecated_fn']
example : " deprecated_fn(*values) "
instead : " new_fn(values) " !settings especifican:
included en qué reglas se ejecutarán, utilizando la notación del globoexcluded en las que no se ejecutarán reglas (incluso cuando coinciden con las rutas included )allow_ignore que determina si las reglas pueden ignorarse, siempre que la línea que coincida con la regla tiene un # bb: ignore el comentario. Además, en el nivel raíz de .bellybutton.yml , se puede especificar una configuración default_settings Settings que será utilizada por reglas sin configuraciones explícitas. Cada regla debe tener un parámetro settings o poder recurrir a los default_settings .
Como ejemplo, un nodo !settings para la pelusa, solo un módulo específico podría parecer:
my_module_settings : !settings
included :
- ~+/my_package/my_module.py
excluded : []
allow_ignore : no Consulte el archivo de configuración de .bellybutton.yml de este repositorio como un ejemplo de configuración bellybutton , y el readMe de astpath para ver ejemplos de los tipos de patrones que puede pellar para usar bellybutton .
bellybutton está en un lanzamiento alfa y, como tal, le falta algunas características clave, documentación y cobertura de prueba completa. Además, bellybutton no está optimizado para el rendimiento en bases de código extremadamente grandes y puede contener errores de ruptura. Informe cualquier error encontrado.
!verbal !chain aún no se implementan