コードに関する統計を生成する Python ライブラリがあるかどうか知っていますか? パッケージを指して、クラス、関数、メソッド、docblock 行などの数を取得することを考えています。
最終的には、楽しみのために、ラムダの数やその他のクレイジーな統計などの役に立たないものを含めることができます。
コードに関する統計を生成する Python ライブラリがあるかどうか知っていますか? パッケージを指して、クラス、関数、メソッド、docblock 行などの数を取得することを考えています。
最終的には、楽しみのために、ラムダの数やその他のクレイジーな統計などの役に立たないものを含めることができます。
通常、12 行または 2 行のコードで実行できるものからパッケージを作成する人はいません。以下は、すべてのpython 構文の使用法を分析し、ast ノードをそのノードがソースで出現した回数にマッピングする辞書を返します。def
その下には、 andclass
ステートメントの数を示す例もあります。
import collections
import os
import ast
def analyze(packagedir):
stats = collections.defaultdict(int)
for (dirpath, dirnames, filenames) in os.walk(packagedir):
for filename in filenames:
if not filename.endswith('.py'):
continue
filename = os.path.join(dirpath, filename)
syntax_tree = ast.parse(open(filename).read(), filename)
for node in ast.walk(syntax_tree):
stats[type(node)] += 1
return stats
print("Number of def statements:", analyze('.')[ast.FunctionDef])
print("Number of class statements:", analyze('.')[ast.ClassDef])
Pymetricsを見る か、そこに列挙されている他のツールを確認できます
Taharが役立つかもしれません。各関数、メソッド、クラス、およびモジュールの長さに関する統計を(コード行で)表示します。ただし、inspectモジュールを使用しているため、分析するモジュールの1つがGUIなどを起動すると、予期しない方法で実行される可能性があります。
いつかASTの使用に切り替えますが、ASTがinspect.getsourcelines()と同様のサービスを提供できるかどうかはわかりません。
(編集)
Mergou(tokenizeモジュールを使用したtaharの書き直し)はアルファ版です。これが実際のビデオです:http ://www.youtube.com/watch?v = PI0iBZmInFU&feature = youtu.be