17.11. tabnanny — 缩进验证器
目的:扫描 Python 源代码,查找可疑缩进。
在 Python 这样的语言中,一致地使用缩进很重要,因为空格很重要。 tabnanny
模块提供了一个扫描程序来报告缩进的模糊使用。
从命令行运行
使用 tabnanny
的最简单方法是从命令行运行它,传递要检查的文件名。 如果传递目录名,则递归扫描目录以查找要检查的 .py
文件。
在 PyMOTW 源代码中运行 tabnanny 暴露了一个带有制表符而不是空格的旧模块。
$ python3 -m tabnanny .
./source/queue/fetch_podcasts.py 65 " \t\tparsed_url =\
urlparse(enclosure['url'])\n"
fetch_podcasts.py
的第 65 行有两个制表符而不是 8 个空格。 这在文本编辑器中并不明显,文本编辑器配置制表符为 4 个空格,因此在视觉上没有区别。
for enclosure in entry.get('enclosures', []):
parsed_url = urlparse(enclosure['url'])
message('queuing {}'.format(
parsed_url.path.rpartition('/')[-1]))
enclosure_queue.put(enclosure['url'])
更正第 65 行并再次运行 tabnanny 在第 66 行显示另一个错误。最后一个问题出现在第 67 行。
如果要扫描文件,但不查看有关错误的详细信息,请使用 -q
选项禁止除文件名之外的所有信息。
$ python3 -m tabnanny -q .
./source/queue/fetch_podcasts.py
要查看有关正在扫描的文件的更多信息,请使用 -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.
注意
针对 PyMOTW 源文件运行这些示例将不会报告相同的错误,因为问题已得到修复。
See also
- tabnanny 标准库文档
tokenize
-- 用于 Python 源代码的词法扫描程序。- flake8 -- 模块化源代码检查器
- pycodestyle -- Python 风格指南检查器
- pylint -- python 代码静态检查器
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。