代码: 全选
#!/usr/bin/env python
# -*- coding: gbk -*-
#####打印执行程序块的范围
import re
file = open(__file__)
linenum = start = end = 0
segments = []
rule = re.compile(r'^\s*(#.*)?$') #无效行:空行或者注释行
for line in file:
linenum += 1
if not rule.match(line): #如果是有效行
if start == 0:
start = end = linenum
else:
end += 1
else:
if start != 0:
segments.append((start,end))
start = end = 0
file.close()
spandur = 2 #如果中间跨spandur个无效行,仍然认为是一个程序块
spanseg = []
if len(segments) >= 2:
prestart,preend = segments.pop(0)
while len(segments) > 0:
curstart,curend = segments.pop(0)
if curstart - preend <= spandur:
prestart,preend = prestart,curend
else:
spanseg.append((prestart,preend))
prestart,preend = curstart,curend
spanseg.append((prestart,preend))
print 'lines executed:',spanseg[2:]
print '******************************************************'
##### 添加脚本执行结束必须执行的动作
import sys
def theend():
print '******************************************************'
sys.exitfunc = theend
###删除UltraEdit的.bak文件
#import os
#for subdir,itsSubdirs,itsFiles in os.walk('/'): #os.walk递归遍历一个目录,返回的元素为(子目录名,该子目录的直接子目录list,该子目录直接拥有的文件list)的迭代器
# for file in itsFiles:
# mainname,extname = os.path.splitext(file)
# main1,main2 = os.path.splitext(mainname)
# if extname == '.bak' and main2 in ['.py','.txt','.java']:
# filepath = os.path.join(subdir,file)
# print 'Delete',filepath
# os.remove(filepath)
把这段代码防到源文件头,然后下面就可以收集、测试代码段,结束后就使用#把整块注释掉,控制台会打出那些代码块被执行,当你有几千行代码后也可以知道那些忘记注释被执行了,上面注释掉的代码可以删除ue创建的临时.bat文件(如果你使用ue编译器的话)