tabnanny — Validador de sangría¶
Propósito: | Escanear el código fuente de Python en busca de sangría sospechosa. |
---|
El uso constante de la sangría es importante en un lenguaje como Python, donde
el espacio en blanco es significativo. El módulo tabnanny
proporciona un
escáner para informar sobre el uso ambiguo de la sangría.
Correr desde la línea de comando¶
La forma más simple de usar tabnanny
es ejecutarlo desde la línea de
comandos, pasando los nombres de los archivos para verificar. Si pasas nombres
de directorio, los directorios se escanean recursivamente para encontrar
archivos .py
para verificar.
Ejecutar tabnanny a través del código fuente PyMOTW expuso un módulo antiguo con tabuladores en lugar de espacios.
$ python3 -m tabnanny .
./source/queue/fetch_podcasts.py 65 " \t\tparsed_url = \
urlparse(enclosure['url'])\n"
La línea 65 de fetch_podcasts.py
tenía dos tabuladores en lugar de 8
espacios. Esto no era evidente en un editor de texto, que estaba configurado
con tabuladores configurados en 4 espacios, por lo que visualmente no había
diferencia.
for enclosure in entry.get('enclosures', []):
parsed_url = urlparse(enclosure['url'])
message('queuing {}'.format(
parsed_url.path.rpartition('/')[-1]))
enclosure_queue.put(enclosure['url'])
Corregir la línea 65 y ejecutar tabnanny nuevamente mostró otro error en la línea 66. Un último problema apareció en la línea 67.
Si deseas escanear archivos, pero no ves los detalles sobre el error, usa la
opción -q
para suprimir toda la información, excepto el nombre de archivo.
$ python3 -m tabnanny -q .
./source/queue/fetch_podcasts.py
Para ver más información sobre los archivos que se escanean, usa la opción
-v
.
'source/queue/': listing directory
'source/queue/fetch_podcasts.py': *** Line 65: trouble in tab
city! ***
offending line: " \t\tparsed_url = urlparse(enclosure['url'])
\n"
indent not greater e.g. at tab sizes 1, 2
'source/queue/queue_fifo.py': Clean bill of health.
'source/queue/queue_lifo.py': Clean bill of health.
'source/queue/queue_priority.py': Clean bill of health.
Nota
Ejecutar estos ejemplos contra los archivos fuente PyMOTW no informará los mismos errores, ya que los problemas se han solucionado.
Ver también
- Documentación de la biblioteca estándar para tabnanny
tokenize
– Escáner léxico para el código fuente de Python.- flake8 – Verificador de código fuente modular.
- pycodestyle – Verificador de guía de estilo Python.
- pylint – Verificar estático de código Python.