Las personas generalmente no hacen paquetes de cosas que se pueden hacer en una docena o dos líneas de código. A continuación, se analiza el uso de all sintaxis python y se devuelve un diccionario mapeando nodos de cuántas veces ese nodo apareció en la fuente. Los ejemplos que muestran el número de declaraciones def
y class
también están debajo de este.
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])
Python tiene una excelente introspección. [Crear AST] (http://docs.python.org/library/parser.html) fuera de su fuente ('suite', then' totuple') y analice para su contenido. – 9000
Gracias, y sí podría codificar el mío, pero eso no es lo que realmente pedí. Pregunto si alguien conoce una biblioteca de conveniencia existente que extrae estadísticas y trata con detalles de introspección. – moraes