Python:代码统计

mor*_*aes 11 python code-metrics

你知道是否有一个Python库可以生成有关代码的统计信息吗?我正在考虑指向一个包并获取类,函数,方法,docblock行等的数量.

它最终可能包括像lambdas或其他疯狂统计数字这样无用的东西,只是为了好玩.

Dev*_*rre 7

人们通常不会用可以用十几行代码完成的事情来制作包.下面分析了所有 python语法的用法,并返回一个字典映射ast节点到该节点在源中出现的次数.显示数量defclass语句的示例也在其下方.

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])
Run Code Online (Sandbox Code Playgroud)


Céd*_*ien 4

你可以看看 Pymetrics,或者检查那里列举的其他工具