私はPythonでコーディングスタイルをチェックするツールを探しています。Pythonコードスタイル/標準を適用するツール
PHPの場合、Code Snifferがあり、Drupalが使用しているのはperl scriptです。 Pythonコードのためのそのようなツールはありますか?
私はPythonでコーディングスタイルをチェックするツールを探しています。Pythonコードスタイル/標準を適用するツール
PHPの場合、Code Snifferがあり、Drupalが使用しているのはperl scriptです。 Pythonコードのためのそのようなツールはありますか?
これまでは、PyLintを主に使用していました。未定義の変数を使用したとき、使用しないときなどにインポートするときに強調表示できます。
80文字以上の長さの行、特定の正規表現に一致しない変数、パブリックメソッドがあまりないクラス、docs-tringsがないメソッドなどについて苦情を申し立てることができます。
たとえば、スクリプトの...
import os
import somefakelib
def myfunc(x):
blah = "Something"
print os.listdir(x+blh)
PyLintは、次のメッセージを生成します。
C: 1: Missing docstring
F: 2: Unable to import 'somefakelib' (No module named somefakelib)
C: 4:myfunc: Missing docstring
C: 4:myfunc: Invalid name "x" (should match [a-z_][a-z0-9_]{2,30}$)
C: 4:myfunc: Invalid name "x" (should match [a-z_][a-z0-9_]{2,30}$)
E: 6:myfunc: Undefined variable 'blh'
W: 5:myfunc: Unused variable 'blah'
W: 2: Unused import somefakelib
彼らはすべての有効な苦情ですが、私は大会やリファクタリングのメッセージの多くを無効にする傾向があります。あなたはどちらかあなたのコード内のコメントとして、特定のメッセージを無効にすることができますPyLintコマンドのコマンドライン引数として
#pylint:disable-msg=R0903,C0103,R0903,F0401,C0301
..or:
pylint --disable-msg=R0903,C0103,R0903,F0401,C0301 myfile.py
を無効にして上記のメッセージと、それは次のメッセージを生成します
C: 1: Missing docstring
C: 4:myfunc: Missing docstring
E: 6:myfunc: Undefined variable 'blh'
W: 5:myfunc: Unused variable 'blah'
W: 2: Unused import somefakelib
PyLintも、ファイルが持っているどのように多くのコード/コメント/ドキュメンテーション文字列/空白の行を含む「コードレポート」、あたり-Cメッセージの数を生成します。上記のコードのためにあなたのコードに「スコア」を与えます.10はメッセージなし、0は一般的に構文エラーです
もう1つのオプションはPyFlakesです。これは少し冗長すぎます(私は最近、 PyLintの)再度、上記のスクリプトを使用して、PyFlakesは、次のメッセージを与える:私が使用
example.py:2: 'somefakelib' imported but unused
example.py:6: undefined name 'blh'
最後のオプションは、名前が示すPEP8を強制するようpep8.py
、です。関数/クラスの前後で正しい空白行、コードの周りにスペースを入れたり、4桁の字下げなどを行うなど、賢明なスクリプトです。上記のコードで実行
が、それは次のように生成します。それは主に正しい空白のような文体の事を強制され
example.py:4:1: E302 expected 2 blank lines, found 1
example.py:6:23: E201 whitespace after '('
example.py:6:32: W292 no newline at end of file
、それはPyLintまたはPyFlakesのようなコードの多くの静的解析を行うので、私はありませんPyLintまたはPyFlakesと一緒にpep8.pyを使用してください。
pep8.py
はもともとpython mailing list hereに発表されたが、この中にダウンロードリンクが今死んでいる...そこcburroughsにより、githubのミラーがgithub.com/cburroughs/pep8.pyでいくつかのマイナーな修正で、だ、またはあなたがan older revision
PyCheckerは別のオプションですが、私はそれを使用していません
時間の説明のために取られた – solarc
reindent.py
という名前のスクリプトは、システムのPythonディストリビューションに含まれていることがあります。このコードは、すべてのコードを推奨インデント4スペースに再インデントします。
相続人は、あなたのディストリビューションでそれを見つけることができない場合は、そのコピー:http://www.koders.com/python/fid24D30FCD2CE388C67CB980EF55630D25970CFB96.aspx?s=cdef%3Aparser
ありがとう、ちょうど1つのことをチェックしますが、それは便利になるでしょう。 – solarc
既存の(レガシー)プロジェクトを引き継ぐときにpep8スタイルの強制ツールを検索する際にこのstackoverflow質問が見つかりました。
https://github.com/hhatto/autopep8
autopep8 -i yourpythonsourcefile.py
自動的pep8を確認するために、すべてのソースコードを変換します。私のレガシープロジェクトで試してみると素晴らしい作品です。だから私はここでこの答えを更新すると思った。
私はちょうどpep8.pyについて見つけましたが、ページは読み込まれません。しかしそれはまだGoogleのキャッシュにありますhttp://74.125.93.132/search?q=cache:-sI5YpbDc9MJ:svn.browsershots.org/trunk/devtools/pep8/pep8.py+pep8.py それは唯一のツールですか?他に良い点はありますか? – solarc