
Dlint es una herramienta para alentar las mejores prácticas de codificación y ayudar a garantizar que el código de Python sea seguro.
Lo más importante que he hecho como programador en los últimos años es realizar agresivamente el análisis de código estático. Aún más valioso que los cientos de errores graves que he evitado es el cambio de mentalidad sobre la forma en que veo la confiabilidad del software y la calidad del código.
- John Carmack, 2011
Para que un proyecto de análisis estático tenga éxito, los desarrolladores deben sentir que se benefician y disfrutan de usarlo.
- Lecciones de la creación de herramientas de análisis estático en Google
Para la documentación y una lista de reglas, ver documentos.
$ python -m pip install dlintY verifique que se instalara correctamente:
$ python -m flake8 -h
Usage: flake8 [options] file file ...
...
Installed plugins: dlint: 0.16.0, mccabe: 0.5.3, pycodestyle: 2.2.0, pyflakes: 1.3.0 Tenga en cuenta el dlint: 0.16.0 .
Dlint se basa en flake8 para realizar su pelusa. Esto proporciona muchas características útiles sin reinventar la rueda.
Ejecutemos un cheque simple:
$ cat << EOF > test.py
print("TEST1")
exec('print("TEST2")')
EOF $ python test.py
TEST1
TEST2$ python -m flake8 --select=DUO test.py
test.py:2:1: DUO105 use of " exec " is insecure/docs/linters/DUO105.md .DUO ? Dlint fue desarrollado originalmente por el equipo de duo Labs. La bandera --select=DUO le dice flake8 que solo ejecute reglas de pelusa dlint.
Desde aquí, podemos ejecutar fácilmente Dlint contra un directorio del código Python:
$ python -m flake8 --select=DUO /path/to/code Para ajustar su pelusa, consulte la ayuda flake8 :
$ python -m flake8 --helpLos resultados de DLINT también se pueden incluir en línea en su editor para comentarios rápidos. Esto generalmente requiere un complemento o extensión del editor. Aquí hay algunos puntos de partida para editores comunes:
Dlint se puede integrar fácilmente en las tuberías de CI, o cualquier cosa realmente.
Para obtener más información y ejemplos, consulte '¿Cómo puedo integrar dlint en XYZ?'.
Los complementos personalizados de DLINT se basan en una convención de nomenclatura simple y confían en los módulos de Python. Para hacer un complemento personalizado DLINT, use las siguientes convenciones:
dlint_plugin_ .Dlint .dlint.linters.base.BaseLinter .get_results de manera apropiada y heredar de ast.NodeVisitor .Vea un complemento de ejemplo para más detalles.
Primero, instale paquetes de desarrollo:
$ python -m pip install -r requirements.txt
$ python -m pip install -r requirements-dev.txt
$ python -m pip install -e . $ pytest$ flake8$ pytest --cov$ pytest -k test_benchmark_run --benchmark-py-file /path/to/file.py tests/test_benchmark/O obtener resultados de referencia para las revestimientos individualmente:
$ pytest -k test_benchmark_individual --benchmark-py-file /path/to/file.py tests/test_benchmark/O correr contra una sola linter:
$ pytest -k test_benchmark_individual[DUO138-BadReCatastrophicUseLinter] --benchmark-py-file /path/to/file.py tests/test_benchmark/