複数のプロジェクトにまたがる大きなソースリポジトリがあります。ソースコードの健全性に関するレポートを作成し、対処する必要がある問題領域を特定したいと思います。
具体的には、循環的複雑度の高いルーチンを呼び出し、繰り返しを特定し、おそらく糸くずのような静的分析を実行して、疑わしい(したがってエラーの可能性が高い)構造を見つけたいと思います。
このようなレポートを作成するにはどうすればよいですか?
循環的複雑度を測定するために、 traceback.org で利用可能なNiceツールがあります。このページには、結果の解釈方法の概要も記載されています。
+1 pylint の場合。コーディング標準( PEP8 またはあなた自身の組織のバリアント)の順守を検証するのに優れており、最終的に循環的複雑さを軽減するのに役立ちます。
循環的複雑度の場合、radon
を使用できます。 https://github.com/rubik/radon
(pip
を使用してインストールします:pip install radon
)
さらに、次の機能も備えています。
静的解析には pylint と pychecker があります。個人的には、pycheckerよりも包括的なように見えるため、pylintを使用しています。
循環的複雑さについては、 このPerlプログラム 、または 記事 を試して、同じことをするpythonプログラムを導入します
新しいプロジェクトを理解する必要がある場合、Pycanaは魅力のように機能します!
PyCAna (Python Code Analyzer)は、コードを実行した後にクラス図を作成するpythonの単純なコードアナライザーの空想的な名前です。
仕組みをご覧ください: http://pycana.sourceforge.net/
出力:
Pydev のおかげで、 Eclipse IDE で integrate pylint を実行でき、変更したファイルを保存するたびにコードレポートを取得できます。
flake8 を使用して、1つのツールでpep8、pyflakes、および循環的複雑度分析を提供します。
同様のコードスニペットを見つけるのに役立つ CloneDigger というツールがあります。
循環的複雑度をチェックするために、もちろん mccabe
パッケージがあります。
インストール:
$ pip install --upgrade mccabe
使用法:
$ python -m mccabe --min=6 path/to/myfile.py
上記の6のしきい値に注意してください。 この回答 ごとに、スコア> 5はおそらく単純化する必要があります。
--min=3
を使用したサンプル出力:
68:1: 'Fetcher.fetch' 3
48:1: 'Fetcher._read_dom_tag' 3
103:1: 'main' 3
オプションで pylint-mccabe または pytest-mccabe などで使用することもできます。