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.
		
		
		
		
		
			
		
			
				
					
					
						
							54 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							54 lines
						
					
					
						
							1.3 KiB
						
					
					
				| #!/usr/bin/env python3
 | |
| import os
 | |
| import ast
 | |
| import stat
 | |
| import subprocess
 | |
| 
 | |
| fouts = {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
 | |
| carlns = 0
 | |
| scriptlns = 0
 | |
| testlns = 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))
 | |
|   if 'test' in f:
 | |
|     testlns += lns
 | |
|   elif f.startswith('tools/') or f.startswith('scripts/') or f.startswith('selfdrive/debug'):
 | |
|     scriptlns += lns
 | |
|   elif f.startswith('selfdrive/car'):
 | |
|     carlns += lns
 | |
|   else:
 | |
|     tlns += lns
 | |
| 
 | |
| print("%d lines of openpilot python" % tlns)
 | |
| print("%d lines of car ports" % carlns)
 | |
| print("%d lines of tools/scripts/debug" % scriptlns)
 | |
| print("%d lines of tests" % testlns)
 | |
| #print(sorted(list(imps)))
 | |
| 
 |