1. 程式人生 > >使用python對py文件程序代碼復用度檢查

使用python對py文件程序代碼復用度檢查

imp tar format opera time() bin i+1 bsp open

#!/user/bin/env python
# @Time     :2018/6/5 14:58
# @Author   :PGIDYSQ
#@File      :PyCheck.py
from os.path import isfile as isfile
from time import time as time

Result ={}
AllLines =[]
FileName = rC:\Users\PGIDYSQ\Desktop\fibo.py#訪問.py文件路徑
‘‘‘py文件程序代碼復用度檢查‘‘‘
def PreOperate():
    global
AllLines with open(FileName,r,encoding=UTF-8) as fp: for line in fp: line = .join(line.split()) AllLines.append(line) def IfHasDuplicated(Index1): for item in Result.values(): for it in item: if Index1 == it[0]:
return it[1] return False def IsInSpan(Index2): for item in Result.values(): for i in item: if i[0] <=Index2<i[0]+i[1]: return True return False def MainCheck(): global Result TotalLen = len(AllLines) Index1 =0 while Index1 < TotalLen -1: span
= IfHasDuplicated(Index1) if span: Index1 += span continue Index2 = Index1 + 1 while Index2 < TotalLen: if IsInSpan(Index2): Index2 += 1 continue src = ‘‘ des = ‘‘ for i in range(10): if Index2 + 1>=TotalLen: break src += AllLines[Index1 + 1] des += AllLines[Index2 + 1] if src == des: t = Result.get(Index1,[]) for tt in t: if tt[0] == Index2: tt[1] = i+1 break else: t.append([Index2,i+1]) Result[Index1] = t else: break t = Result.get(Index1, []) for tt in t: if tt[0] == Index2: Index2 += tt[1] break else: Index2 += 1 Result[Index1] = Result.get(Index1,[]) for n in Result[Index1][::-1]: if n[1] < 3: Result[Index1].remove(n) if not Result[Index1]: del Result[Index1] a = [ttt[1] for ttt in Result.get(Index1,[[Index1,1]])] if a: Index1 += max(a) else: Index1 += 1 def Output(): print(-*20) print(Result:) for key,value in Result.items(): print(The original line is :\n{0}.format(AllLines[key])) print(Its line number is {0}.format(key+1)) print(The duplicated line numbers are:) for i in value: print( Start:,i[0], Span:,i[1]) print(-*20) print(-*20) if isfile(FileName): start =time() PreOperate() MainCheck() Output() print(Time used:,time() - start)

使用python對py文件程序代碼復用度檢查