switched to GPLv3 ONLY, because i don't trust FSF anymore
[gaemu.git] / checker.d
blob5d0366f600c6449644e9876c8dd45c451146e0bd
1 module checker is aliced;
3 import std.stdio;
5 import gaem.parser;
6 import gaem.anal;
7 import gaem.utils;
10 // ////////////////////////////////////////////////////////////////////////// //
11 void main (string[] args) {
12 NodeFunc[] funcs;
14 bool styleWarnings = false;
15 bool warnVars = false;
16 bool warnWith = false;
17 bool warnAss = false;
18 bool warnUVars = false;
20 funcs = cliProcessArgs!(
21 "-w", (fname) { styleWarnings = true; },
22 "-Wall", (fname) { warnVars = true; warnWith = true; warnAss = true; },
23 "-Wvardecl", (fname) { warnVars = false; },
24 "-Wwith", (fname) { warnWith = false; },
25 "-Wass", (fname) { warnAss = false; },
26 "-Wuvars", (fname) { warnUVars = false; },
27 )(args);
29 if (funcs.length > 0) {
30 writeln(funcs.length, " function", (funcs.length > 1 ? "s" : ""), " parsed");
31 foreach (auto fn; funcs) {
32 if (warnVars) {analVars(fn);
33 bool skip = false;
34 foreach (string name; [
35 "scrCreateTile",
36 "scrCreateTileObj",
37 "scrLoadCheckpoint",
38 "scrLoadLevel",
39 "scrMakeItem",
40 "scrSetCursorTile",
41 "scrSetVendingItem",
42 "scrTestLevel",
43 "scrMagicSigns",
44 ]) {
45 if (fn.name == name) { skip = true; break; }
47 if (!skip && fn.name.length > 3 && fn.name[0..3] == "sui") skip = true;
48 if (!skip) analVars(fn);
50 if (warnWith) analWith(fn);
51 if (warnAss) analAss(fn);
52 if (warnUVars) analUninited(fn);