本文共 2406 字,大约阅读时间需要 8 分钟。
## 自动化生成代码继承关系
import os,sys,reimport shutil,string#[OK]gCount = 0def getList(dirname,pFunc): global gCount try: ls=os.listdir(dirname) except: print dirname,'is access deny' else: for file in ls: temp = os.path.join(dirname,file) if(os.path.isdir(temp)): getList(temp,pFunc) else: gCount = gCount + 1 if re.search(r'.h$',file): pFunc(dirname,file)#[OK]def loadSiteList(file): file = open(file,"r") sites = file.readlines() return sites#[OK]def removeBR(site): result = re.search(r'\n',site) if result: return site.replace('\n','') return site#[OK]def process(dirname,file): global gCount #[1] #print '[%d]->%s' % (gCount,file) #[2] path = os.path.join(dirname,file) list = loadSiteList(path) #[3] for str in list: parseString(str,path)#[OK]def getRenderObject(str): res = re.search('[^<]?\s*class\s+(Render\w+)\s*[^\;\w,]',str) if res: return res.group(1) return None#[OK]def getParent(str): res = re.search(':\s*public\s+(\w+)\s*',str) if res: return res.group(1) return None#[Test]objList = []objInfo = {}urlList = {}def parseString(str,path): global objList,objInfo str = removeBR(str) obj = getRenderObject(str) if obj != None: if obj in objList: #print "%s has exist in list" % (obj) return else: objList.append(obj) urlList[obj] = path objInfo[obj] = getParent(str) #print '%s->%s' % (obj,objInfo[obj])def link(dest,src): return '%s' % (dest,src)def HeadLink(dest,src): return '%s' % (dest,src)def link_form(dest): return '-->%s' % (dest)def getPath(obj): global objList,objInfo,urlList if obj in objList: return urlList[obj] else: return "#"#[OK]def showResult(): global objList,objInfo,urlList for obj in objList: tmp = obj print HeadLink(getPath(tmp),tmp), while tmp: parent = objInfo[tmp] print link_form( link(getPath(parent) ,parent) ) if parent in objList: tmp = parent else: tmp = None print '
'getList(os.path.join(os.getcwd(),"src"),process)#print "++++++++++++++++++++++++++++++++++++++++++++++"print ''showResult()print ''
转载地址:http://njvbi.baihongyu.com/