4

Python インタープリターを起動して、解釈されたファイルのタブの使用法に一貫性がない場合に例外を発生-ttさせることができます。TabError

この例外を発生させるファイルを拒否する SVN の pre-commit フックを作成しようとしています。コミットされているファイルを渡すことができますpython -ttが、私の問題は、チェックされるだけでなく、ファイルも実行されることです。Pythonに「ファイルを分析するだけで、実行しない」ように指示する方法はありますか? あるいは、私が望むことを達成するには、他のアプローチの方が良いかもしれません。

4

2 に答える 2

6

py_compileモジュールを使用してこれを行うことができます:

$ python -tt -c "import py_compile; py_compile.compile('test.py', doraise=True)"

doraise=True例外を発生させ、pre-commit フックで簡単にテストできるゼロ以外の終了コードを返します。

于 2010-02-26T10:57:33.223 に答える
2

Python で推奨されるタブの使用法は、タブをまったく使用しないことです (インデントに 4 つのスペースを使用します)。それがあなたのコーディングスタイルである場合、問題はコードにタブがあるかどうかをチェックすることで解決できます。これは単純な正規表現で簡単に実行でき、「grep」でも実行できるため、インタープリターを実行する必要さえありません。

ただし、「py_compile」の方法には他にも利点があります。Python コードの構文もチェックするので、これは望ましいことかもしれません (ただし、SVN サーバーの計算能力が少しかかります)。

于 2010-02-26T11:09:41.020 に答える