summaryrefslogblamecommitdiff
path: root/showvars.py
blob: 7e9c06252f94a45d5b728d391427fb5d128b5e16 (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                                                                        



                                                           






                                     
             






















                                                                          










                                                                                    
                             



                                                                                                   


                                                               
                 
 




                              
            
           
                                              
              
 

                            
                                                         
 


                                                                                 
                   







                                              
 


                                                           



                         




                                              

                                              
#!/usr/bin/python


# must be started in the npc dir

import os
import re
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-v", "--verbose", dest="verbose", action="store_true", default=False,
                  help="show the occurrences of that var")

parser.add_option("-f", "--file", dest="fname", default="",
                  help="inspect that file", metavar="FILE")

(options, args) = parser.parse_args()

def handleFile(fname):
	f = open(fname)
	lines = f.readlines();
	f.close()
	rm=[]
	for l in lines:
		#remove comments
		line = l.split(r"//")[0]

		sp = line.split()

		# no set command?
		if not "set" in sp:
			continue

		# ignore those lines printing messages
		if 'mes "' in line:
			continue

		#ignore anything before the "set" command:
		sp = sp[sp.index("set")+1:]
		line = "".join(sp)
		endpos = line.find(",")

		#check for comma
		if endpos>0:
			#ok its a oneliner, the comma is in the same line:
			varname = line[0:endpos].strip()
			assignment = line[endpos+1:].strip()[:-1] # remove semicolon
			if assignment != "0":
				if varname.startswith("@"):
					continue
				if varname.startswith("$"):
					continue
				if varname in allvars:
					if not fname in allvars[varname]:
						allvars[varname] += [fname]
				else:
					allvars[varname] = [fname]
			else:
				#print fname
				if fname == "." + os.sep + "functions" + os.sep + "clear_vars.txt":
					rm += [varname]

		else:
			# ok error, you need to check manually:
			print "\tline:\t",line
	return rm

if options.fname:
	path=options.fname
else:
	path=".."+os.sep+"npc"

allvars = {}
rmvars = []
print "please check manully for vars in here:"
os.chdir(path)

for tpl in os.walk("."):
	for fname in tpl[2]:
		rmvars += handleFile(tpl[0]+os.sep+fname)

unusedcounter=0
usedcounter=0
print "These variables are found in the scripts, which are deleted in clear_vars"
for var in allvars:
	if not var in rmvars:
		continue

	unusedcounter+=1
	print "\t",var
	if options.verbose:
		for fname in allvars[var]:
			print "\t","\t", fname


print "These variables are valid variables of the scripts:"
for var in allvars:
	if var in rmvars:
		continue

	usedcounter+=1
	print "\t",var
	if options.verbose:
		for fname in allvars[var]:
			print "\t","\t", fname

print "number of vars used:", usedcounter
print "number of vars cleared:", unusedcounter