博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之自动生成代码继承关系
阅读量:4025 次
发布时间:2019-05-24

本文共 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/

你可能感兴趣的文章
Tomcat 6.0 开发配置小结
查看>>
FusionCharts 使用手记
查看>>
Struts,Spring,Hibernate优缺点
查看>>
用Spring更好地处理Struts动作三种整合
查看>>
spring中配置二级缓存
查看>>
Hibernate 查询语句HQL基本语法
查看>>
HIbernate查询
查看>>
小技巧要你命三千之:checkbox radio select 只读效果
查看>>
Android开发(一)Android搭建、HelloWorld
查看>>
Android开发(一)拨打电话程序
查看>>
Android开发(一)发送短信程序
查看>>
Android(二)数据存储和访问 之文件
查看>>
Android(三)数据存储之XML解析技术
查看>>
Android(三) 数据存储之二 SharedPreferences
查看>>
Android(三)数据存储之三SQLite嵌入式数据库
查看>>
Android(四)数据存储之四ContentProvider
查看>>
Android(四)数据存储之四网络
查看>>
Android(五)数据存储之五网络数据交互
查看>>
Android(五)数据存储之五网络多线程断点下载
查看>>
Android(六)Activity、请求码与结果码、Intent、广播、服务
查看>>