12

コードに関する統計を生成する Python ライブラリがあるかどうか知っていますか? パッケージを指して、クラス、関数、メソッド、docblock 行などの数を取得することを考えています。

最終的には、楽しみのために、ラムダの数やその他のクレイジーな統計などの役に立たないものを含めることができます。

4

3 に答える 3

8

通常、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])
于 2011-04-23T15:23:38.560 に答える
4

Pymetricsを見る か、そこに列挙されている他のツールを確認できます

于 2011-04-23T15:26:08.283 に答える
0

Taharが役立つかもしれません。各関数、メソッド、クラス、およびモジュールの長さに関する統計を(コード行で)表示します。ただし、inspectモジュールを使用しているため、分析するモジュールの1つがGUIなどを起動すると、予期しない方法で実行される可能性があります。

いつかASTの使用に切り替えますが、ASTがinspect.getsourcelines()と同様のサービスを提供できるかどうかはわかりません。

(編集)

Mergou(tokenizeモジュールを使用したtaharの書き直し)はアルファ版です。これが実際のビデオです:http ://www.youtube.com/watch?v = PI0iBZmInFU&feature = youtu.be

于 2013-01-04T20:42:41.200 に答える