Python コードを分析して問題のある領域を特定するにはどうすればよいですか?
-
01-07-2019 - |
質問
複数のプロジェクトに分割された大規模なソース リポジトリがあります。ソース コードの健全性に関するレポートを作成し、対処する必要がある問題領域を特定したいと考えています。
具体的には、循環的複雑度の高いルーチンを呼び出し、繰り返しを特定し、おそらく lint のような静的分析を実行して、疑わしい (したがって間違いがある可能性が高い) 構造を見つけたいと考えています。
このようなレポートを作成するにはどうすればよいでしょうか?
解決
循環的複雑さを測定するには、次の場所に優れたツールがあります。 トレースバック.org. 。このページには、結果を解釈する方法の概要も記載されています。
+1 の場合 パイリント. 。コーディング標準への準拠を検証するのに優れています( PEP8 または独自の組織のバリアント)、最終的には循環的な複雑さを軽減するのに役立ちます。
他のヒント
循環的複雑さの場合は次を使用できます radon
: https://github.com/rubik/radon
(使用 pip
インストールするには: pip install radon
)
さらに、次の機能もあります。
- 生のメトリクス (SLOC、コメント行、空白行などが含まれます)
- Halstead メトリクス (すべて)
- 保守性インデックス (Visual Studio で使用されるインデックス)
静的解析の場合は、 パイリント そして パイチェッカー. 。個人的には、pychecker よりも包括的であると思われる pylint を使用しています。
循環的複雑さについては、試してみることができます この Perl プログラム, 、またはこれ 記事 同じことを行うための Python プログラムを導入します
新しいプロジェクトを理解する必要がある場合、Pycana は魅力的に機能します。
PyCAna (Python Code Analyzer)は、コードを実行した後にクラス図を作成するPython用のシンプルなコードアナライザーの派手な名前です。
どのように機能するかを確認してください:http://pycana.sourceforge.net/
出力:
おかげで パイデブ, 、 あなたはできる パイリントを統合する の中に エクリプスIDE 非常に簡単に、変更したファイルを保存するたびにコード レポートを取得できます。
使用 フレーク8, 、pep8、pyflakes、および循環的複雑性分析を 1 つのツールで提供します
というツールがありますクローンディガー これは、類似したコード スニペットを見つけるのに役立ちます。
循環的複雑さをチェックするには、もちろん、 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
オプションで次の方法でも使用できます ピリント・マッケイブ または pytest-mcabe, 、など。