Mercurial > codeOptimizer
annotate codeOptimizer.py @ 1:a1224150b8f6
Cleanup and making code easier to read.
| author | Tom Fredrik Blenning Klaussen <bfg@blenning.no> |
|---|---|
| date | Sun, 16 Sep 2012 10:35:39 +0200 |
| parents | 28b636105ed6 |
| children | 10f1d7de9bc3 |
| rev | line source |
|---|---|
|
0
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
1 #!/usr/bin/env python -O |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
2 |
|
1
a1224150b8f6
Cleanup and making code easier to read.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
0
diff
changeset
|
3 import sys |
|
0
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
4 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
5 from Compilable import Compilable |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
6 from DepGraph import DepGraph |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
7 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
8 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
9 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
10 def isHppfile(name): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
11 if name.endswith(".hpp"): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
12 return True |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
13 if name.endswith(".h"): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
14 return True |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
15 return False |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
16 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
17 def isCppfile(name): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
18 if name.endswith(".cpp"): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
19 return True |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
20 return False |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
21 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
22 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
23 infiles = sys.argv[1:] |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
24 |
|
1
a1224150b8f6
Cleanup and making code easier to read.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
0
diff
changeset
|
25 files = {} |
|
0
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
26 unknown = [] |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
27 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
28 flags = '-DHAS_BOOST -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_XML_LIB -DQT_SQL_LIB -O3 -Wall -I/opt/local/include -I/Users/bfg/QtSDK/Desktop/Qt/4.8.1/gcc/include -F/Users/bfg/QtSDK/Desktop/Qt/4.8.1/gcc/lib -I/Users/bfg/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtOpenGL -I/Users/bfg/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtXml -I/Users/bfg/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtSql -I/Users/bfg/projects/dedupe' |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
29 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
30 for file in infiles: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
31 if isHppfile(file) or isCppfile(file): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
32 c = Compilable(file) |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
33 c.setFlags(flags) |
|
1
a1224150b8f6
Cleanup and making code easier to read.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
0
diff
changeset
|
34 files[file] = c |
|
0
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
35 else: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
36 unknown.append(file) |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
37 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
38 if len(unknown) > 0: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
39 str = ", " |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
40 raise SystemExit(str.join(unknown) + " are of unknown filetype") |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
41 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
42 depgraph = DepGraph() |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
43 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
44 for file in files: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
45 depgraph.add(files[file]) |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
46 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
47 for file in files: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
48 depgraph.addDependency(files[file], files[file].dependencies()) |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
49 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
50 files = depgraph.directedGraph() |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
51 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
52 for file in files: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
53 if not file.worksWithoutModifications(): |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
54 print file.path |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
55 raise SystemExit(str.join(file.path) + " does not compile at all") |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
56 |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
57 for file in files: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
58 removable = file.removeRemovableIncludes() |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
59 if removable: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
60 print 'Removable lines in ' + file.path |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
61 for r in removable: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
62 print str(r) + ' : ' + file.lines[r].rstrip() |
|
1
a1224150b8f6
Cleanup and making code easier to read.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
0
diff
changeset
|
63 |
|
a1224150b8f6
Cleanup and making code easier to read.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
0
diff
changeset
|
64 replacable = file.replaceIncludes(dict.fromkeys(removable, '\n')) |
|
0
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
65 if replacable: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
66 print 'Replacable lines in ' + file.path |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
67 for r in replacable: |
|
28b636105ed6
Working version of codeOptimizer.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
68 print str(r) + ' : ' + file.lines[r].rstrip() |
