您是否知道是否有生成關於代碼的統計信息的Python庫?我正在考慮指向一個包,並獲取類,函數,方法,docblock行數等Python:代碼統計信息
它可能最終包括像lambda數或其他瘋狂的統計數字,只是爲了好玩的無用的東西。
您是否知道是否有生成關於代碼的統計信息的Python庫?我正在考慮指向一個包,並獲取類,函數,方法,docblock行數等Python:代碼統計信息
它可能最終包括像lambda數或其他瘋狂的統計數字,只是爲了好玩的無用的東西。
你可以在Pymetrics看看,或檢查其他工具enumerated there
人們通常不會在十二行或兩行代碼中完成軟件包。以下分析所有 python語法的用法,並返回一個映射ast節點的字典,以表示該節點在源中出現的次數。顯示def
和class
語句數量的示例也在其下面。
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])
這對我有用。謝謝。 – xApple 2011-11-30 11:25:45
也許Tahar可以提供幫助,它顯示每個函數,方法,類和模塊有多長統計(代碼行) 。但是,由於它使用的是inspect模塊,如果它分析的某個模塊啓動了一個GUI或類似的東西,它可能會以意想不到的方式運行。
雖然我不知道AST是否可以提供類似於inspect.getsourcelines()的服務,但我會轉而使用AST的某一天。
(EDIT)
Mergou(使用令牌化模塊塔希爾的重寫)是α,這裏是它在行動視頻:http://www.youtube.com/watch?v=PI0iBZmInFU&feature=youtu.be
Python有極好的自省。 [創建AST](http://docs.python.org/library/parser.html)從你的源代碼('suite',然後'totuple')並分析你的內心。 – 9000 2011-04-23 13:56:37
謝謝,是的,我可以編碼我自己,但這不是我問的。我問是否有人知道現有的便利圖書館提取統計數據並處理反省細節。 – moraes 2011-04-23 15:14:06