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

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/pymotw/tabnanny...

译文地址:https://learnku.com/docs/pymotw/tabnanny...

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~