1. 程式人生 > >Python_檢查程序規範

Python_檢查程序規範

blank ati import des strip 令行 print class spl

 1 ‘‘‘
 2     檢查Python程序的一些基本規範,例如,運算符兩測是否有空格,是否每次只導入一個模塊,在不同的功能模塊之間是否有空行,註釋是否夠多,等等
 3 ‘‘‘
 4 import sys
 5 import re
 6 
 7 def checkFormats(lines,desFileName):
 8     fp=open(desFileName,w)
 9     for i, line in enumerate(lines):
10         print(=*30)
11         print(Line:,i+1)
12         if
line.strip().startwith(#): 13 print( *10+Comments.Pass.) 14 fp.write(line) 15 continue 16 flag=True 17 #check operator symbols 18 symbols=[,,+,-,*,/,//,**,>>,<<,+=,-=,*=,/=] 19 temp_line=line
20 for symbol in symbols: 21 pattern=re.compile(r\s*+re.escape(symbol)+r\s*) 22 temp_lie=pattern.split(temp_line) 23 sep= +symbol+ 24 temp_line=sep.join(temp_line) 25 if line !=temp_line: 26 flag=False 27 print
( *10+You may miss some blank spaces in this line. ) 28 #check import statement 29 if line.strip().startwith(import): 30 if , in line: 31 flag = False 32 print( *10+"You‘d bbetter import one module at a time.") 33 temp_line=line.strip() 34 modules=modules.strip() 35 pattern=re.compile(r\s*,\s*) 36 modules=pattern.split(modules) 37 temp_line=‘‘ 38 for module in modules: 39 temp_line +=line[:line.index(import)] + import +module+\n 40 line=temp_line 41 pri_line=lines[i-1].strip() 42 if pri_line and(not pri_line.startwith(import))and (not pri_line.startwith(#)): 43 falg=False 44 print( *10+You should add a blank line before this line.) 45 line=\n+line 46 after_line=lines[i+1].strip() 47 if after_line and(not after_line.startwith(import)): 48 flag=False 49 print( *10+You should add a blank line after this line.) 50 line=line+\n 51 #check if there is a blank line before new funtional code block 52 #including the class/function definition 53 if line.strip() and not line.startswith( )and i>0: 54 pri_line=lines[i-1] 55 if pri_line.strip() and pri_line.startwith( ): 56 flag=False 57 print( *10 +"You‘d better add a blank line before this line.") 58 line=\n+line 59 if flag: 60 print( *10+Pass.) 61 fp.write(line) 62 fp.close() 63 64 if __name__ == __main__: 65 fileName=sys.argv[1] #命令行參數 66 fileLines=[] 67 with open(fileName,r) as fp: 68 fileLines=fp.readline() 69 desFileName=fileName[:-3]+_new.py 70 checkFormats(fileLines,desFileName) 71 #check the ratio of comment lines to all lines 72 comments=[line for line in fileLines if line.strip().startswith(#)] 73 ratio=len(comments)/len(fileLines) 74 if ratio <= 0.3: 75 print(=*30) 76 print(Comments in the file is less than 30%) 77 print(Perhaps you should add some comments at appropriate position.)

Python_檢查程序規範