web-dev-qa-db-ja.com

Pythonコードを分析して問題のある領域を特定するにはどうすればよいですか?

複数のプロジェクトにまたがる大きなソースリポジトリがあります。ソースコードの健全性に関するレポートを作成し、対処する必要がある問題領域を特定したいと思います。

具体的には、循環的複雑度の高いルーチンを呼び出し、繰り返しを特定し、おそらく糸くずのような静的分析を実行して、疑わしい(したがってエラーの可能性が高い)構造を見つけたいと思います。

このようなレポートを作成するにはどうすればよいですか?

98
Jerub

循環的複雑度を測定するために、 traceback.org で利用可能なNiceツールがあります。このページには、結果の解釈方法の概要も記載されています。

+1 pylint の場合。コーディング標準( PEP8 またはあなた自身の組織のバリアント)の順守を検証するのに優れており、最終的に循環的複雑さを軽減するのに役立ちます。

36
Mike Griffith

循環的複雑度の場合、radonを使用できます。 https://github.com/rubik/radon

pipを使用してインストールします:pip install radon

さらに、次の機能も備えています。

  • 生のメトリック(これらには、SLOC、コメント行、空白行、&cが含まれます。)
  • Halsteadメトリック(すべて)
  • 保守性インデックス(Visual Studioで使用されるもの)
28
Dave Halter

静的解析には pylintpychecker があります。個人的には、pycheckerよりも包括的なように見えるため、pylintを使用しています。

循環的複雑さについては、 このPerlプログラム 、または 記事 を試して、同じことをするpythonプログラムを導入します

18
freespace

新しいプロジェクトを理解する必要がある場合、Pycanaは魅力のように機能します!

PyCAna (Python Code Analyzer)は、コードを実行した後にクラス図を作成するpythonの単純なコードアナライザーの空想的な名前です。

仕組みをご覧ください: http://pycana.sourceforge.net/

出力:

alt text

11
msemelman

Pydev のおかげで、 Eclipse IDEintegrate pylint を実行でき、変更したファイルを保存するたびにコードレポートを取得できます。

6

flake8 を使用して、1つのツールでpep8、pyflakes、および循環的複雑度分析を提供します。

5
Wes Kendall

同様のコードスニペットを見つけるのに役立つ CloneDigger というツールがあります。

4
Anonymous

循環的複雑度をチェックするために、もちろん 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 などで使用することもできます。

3
Acumenus