如果解释的文件具有不一致的选项卡用法,则可以启动 Python 解释器-tt
以引发异常。TabError
我正在尝试为 SVN 编写一个预提交挂钩,以拒绝引发此异常的文件。我可以传递正在提交的文件,python -tt
但我的问题是除了被检查之外,该文件也被执行。有没有办法告诉 Python“只分析文件,不要运行它”?或者也许其他一些方法会更好地完成我想要的。
如果解释的文件具有不一致的选项卡用法,则可以启动 Python 解释器-tt
以引发异常。TabError
我正在尝试为 SVN 编写一个预提交挂钩,以拒绝引发此异常的文件。我可以传递正在提交的文件,python -tt
但我的问题是除了被检查之外,该文件也被执行。有没有办法告诉 Python“只分析文件,不要运行它”?或者也许其他一些方法会更好地完成我想要的。
您可以使用该py_compile
模块执行此操作:
$ python -tt -c "import py_compile; py_compile.compile('test.py', doraise=True)"
将doraise=True
引发异常并返回一个非零退出代码,您可以在预提交挂钩中轻松测试该代码。
Python 中首选的制表符用法是完全不使用制表符(使用四个空格进行缩进)。如果那是您的编码风格,那么问题可能会减少到检查代码中是否有任何选项卡。这可以通过简单的正则表达式轻松完成,即使使用 'grep' 也是如此,因此甚至不需要运行解释器。
不过,“py_compile”方式还有其他优势:它还检查 Python 代码语法,这可能是可取的(尽管会消耗 SVN 服务器的一些计算能力)。