Assembla home | Assembla project page
 

root/metric.py

Revision 1, 1.6 kB (checked in by nEUrOO, 1 year ago)

--

Line 
1 import sys, os
2 from preproc import pp_file
3 import popen2
4 projName = "project"
5
6 def my_sys(cmd):
7         r, w, e = popen2.popen3(cmd)
8         b1 = e.readlines()
9         b2 = r.readlines()
10         r.close()
11         e.close()
12         w.close()
13         return (b1,b2)
14
15 def generate_AST(fname):
16         xml_name = None
17         if 'preproc' in fname:
18                 xml_name = fname[:fname.rfind('.preproc.php')] + '.xml'
19         else:
20                 xml_name = fname[:fname.rfind('.php')] + '.xml'
21         my_sys("php-ast.exe " + fname + " " + xml_name)
22         return xml_name
23
24 def proceed(fname):
25         pname = pp_file(fname) #> fname.php -> fname.preproc.php
26         xname = generate_AST(pname)
27         # generate the study output on the file
28         (stderrlist , stdoutlist) = my_sys("php-oracle.exe --out:file " + xname + " " + projName )
29         #for e in stderrlist:
30         #       print "%s \t\t->\t\t %s" % (fname,e)
31         my_sys("rm -f " + xname)
32         my_sys("rm -f " + pname)
33         """
34                 tname = xname[:xname.rfind('.xml')] + ".txt"
35                 out = open(tname, 'w')
36                 for e in stdoutlist:
37                         out.write(e)
38                 out.write('\n<[[stderr]]>\n')
39                 for e in stderrlist:
40                         out.write(e)
41                 out.close()
42         """
43
44 def hasGoodExt(name):
45         return '.php' in name or '.inc' in name
46
47 def scandir(directory):
48         names = os.listdir(directory)
49         for name in names:
50                 srcname = os.path.join(directory, name)
51                 try:
52                         if os.path.isdir(srcname):
53                                 scandir(srcname)
54                         elif os.path.isfile(srcname) and hasGoodExt(srcname):
55                                 proceed(srcname)
56                 except (IOError, os.error), why:
57                         continue
58
59 def main(fname):
60         global projName
61         projName = fname + ".xml"
62         if os.path.isfile(fname):
63                 proceed(fname)
64         elif os.path.isdir(fname):
65                 scandir(fname)
66
67 if __name__ == "__main__":
68         main(sys.argv[1])
Note: See TracBrowser for help on using the browser.