You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							41 lines
						
					
					
						
							992 B
						
					
					
				
			
		
		
	
	
							41 lines
						
					
					
						
							992 B
						
					
					
				#!/usr/bin/env python3
 | 
						|
import os
 | 
						|
import ast
 | 
						|
import stat
 | 
						|
import subprocess
 | 
						|
 | 
						|
fouts = set([x.decode('utf-8') for x in subprocess.check_output(['git', 'ls-files']).strip().split()])
 | 
						|
 | 
						|
pyf = []
 | 
						|
for d in ["cereal", "common", "scripts", "selfdrive", "tools"]:
 | 
						|
  for root, dirs, files in os.walk(d):
 | 
						|
    for f in files:
 | 
						|
      if f.endswith(".py"):
 | 
						|
        pyf.append(os.path.join(root, f))
 | 
						|
 | 
						|
imps = set()
 | 
						|
 | 
						|
class Analyzer(ast.NodeVisitor):
 | 
						|
  def visit_Import(self, node):
 | 
						|
    for alias in node.names:
 | 
						|
      imps.add(alias.name)
 | 
						|
    self.generic_visit(node)
 | 
						|
  def visit_ImportFrom(self, node):
 | 
						|
    imps.add(node.module)
 | 
						|
    self.generic_visit(node)
 | 
						|
 | 
						|
tlns = 0
 | 
						|
for f in sorted(pyf):
 | 
						|
  if f not in fouts:
 | 
						|
    continue
 | 
						|
  xbit = bool(os.stat(f)[stat.ST_MODE] & stat.S_IXUSR)
 | 
						|
  src = open(f).read()
 | 
						|
  lns = len(src.split("\n"))
 | 
						|
  tree = ast.parse(src)
 | 
						|
  Analyzer().visit(tree)
 | 
						|
  print("%5d %s %s" % (lns, f, xbit))
 | 
						|
  tlns += lns
 | 
						|
 | 
						|
print("%d lines of parsed openpilot python" % tlns)
 | 
						|
#print(sorted(list(imps)))
 | 
						|
 | 
						|
 |