#!/usr/bin/env python ''' Created on Jan 25, 2011 @author: Pete ########### SVN repository information ################### # $Date: 2011-01-27 00:45:24 +0000 (Thu, 27 Jan 2011) $ # $Author: jemian $ # $Revision: 251 $ # $URL: topdoc/src/Utils/TokenExaminer.py $ # $Id: TokenExaminer.py 251 2011-01-27 00:45:24Z jemian $ ########### SVN repository information ################### ''' import FileTree import os from FileTokens import TokenLog import sys from Utils.Validation import isEpicsTopLevelDir def makeTokens(d): keys = d.keys() keys.sort() results = {} tokNames = [] well_known_binary_exts = ('.gif', '.png', '.jpg', '.pdf', '.ps') for k in keys: for name in d[k]['files']: # loop over just the files for ext in well_known_binary_exts: # skip well-known binary files if name.lower().endswith(ext): name = None break if name == None: continue full = os.path.join(k, name) try: obj = TokenLog.TokenLog() obj.processFile(full) except: print "\n error while parsing " + full, sys.exc_info()[:2] continue #print "\n" + full print full s = obj.summary() results[full] = s for ky in s.keys(): if not ky in tokNames: tokNames.append( ky ) return results, tokNames def report(results, tokNames): ''' Print a table suitable for input into Excel ''' keys = results.keys() keys.sort() tokNames.sort() print "filename\t" + "\t".join( tokNames ) for k in keys: line = [k] for c in tokNames: if c in results[k]: line.append( "%d" % results[k][c] ) else: line.append( "0" ) print "\t".join(line) if __name__ == '__main__': working_dir = 'C:\\Users\\Pete\\Documents\\projects\\bcdaioc\\12id' print "\n".join(os.environ['PYTHONPATH'].split(";")) if isEpicsTopLevelDir(working_dir): os.chdir(working_dir) d = FileTree.FileTree().discover(".") results, tokNames = makeTokens(d) print len(results) report(results, tokNames)