import java.io.*; import antlr.DumpASTVisitor; /***************************************************************************** * SoftwareMetrics driver for PL/SQL * - Populates the rule table * - Invokes the analyser on the argument source files */ class PLSQLMain { public static void main(String[] args) { int i; InputStream in = System.in; SoftwareMetrics.start("Whole", "Run", 0); // Make sure singleton exists SoftwareMetrics.addRule("^=", 0.0, 1, 0, false); SoftwareMetrics.addRule("<<", 0.0, 1, 0, false); SoftwareMetrics.addRule("<", 0.0, 1, 0, false); SoftwareMetrics.addRule(">", 0.0, 1, 0, false); SoftwareMetrics.addRule("<>", 0.0, 1, 0, false); SoftwareMetrics.addRule("=", 0.0, 1, 0, false); SoftwareMetrics.addRule("=>", 0.0, 1, 0, false); SoftwareMetrics.addRule(">>", 0.0, 1, 0, false); SoftwareMetrics.addRule("||", 0.0, 1, 0, false); SoftwareMetrics.addRule("?", 0.0, 1, 0, false); SoftwareMetrics.addRule("_", 0.0, 1, 0, false); SoftwareMetrics.addRule("-", 0.0, 1, 0, false); SoftwareMetrics.addRule(",", 0.0, 0, 0, false); SoftwareMetrics.addRule(":=", 0.0, 1, 0, false); SoftwareMetrics.addRule("!=", 0.0, 1, 0, false); SoftwareMetrics.addRule("/", 0.0, 1, 0, false); SoftwareMetrics.addRule(".", 0.0, 1, 0, false); SoftwareMetrics.addRule(";", 0.0, 0, 0, false); SoftwareMetrics.addRule("..", 0.0, 1, 0, false); SoftwareMetrics.addRule("(", 0.0, 1, 0, false); SoftwareMetrics.addRule("(+)", 0.0, 1, 0, false); SoftwareMetrics.addRule(")", 0.0, 0, 0, false); SoftwareMetrics.addRule("@", 0.0, 1, 0, false); SoftwareMetrics.addRule("*", 0.0, 1, 0, false); SoftwareMetrics.addRule("**", 0.0, 1, 0, false); SoftwareMetrics.addRule("%", 0.0, 1, 0, false); SoftwareMetrics.addRule("+", 0.0, 1, 0, false); SoftwareMetrics.addRule("abs", 0.0, 1, 0, false); SoftwareMetrics.addRule("accept", 0.0, 1, 0, false); SoftwareMetrics.addRule("access", 0.0, 1, 0, false); SoftwareMetrics.addRule("add", 0.0, 1, 0, false); SoftwareMetrics.addRule("add_months", 0.0, 1, 0, false); SoftwareMetrics.addRule("all", 0.0, 1, 0, false); SoftwareMetrics.addRule("all_rows", 0.0, 1, 0, false); SoftwareMetrics.addRule("alter", 0.0, 1, 0, false); SoftwareMetrics.addRule("always", 0.0, 1, 0, false); SoftwareMetrics.addRule("analyze", 0.0, 1, 0, false); SoftwareMetrics.addRule("analyzed", 0.0, 1, 0, false); SoftwareMetrics.addRule("and", 1.0, 1, 0, false); SoftwareMetrics.addRule("any", 0.0, 1, 0, false); SoftwareMetrics.addRule("archivelog", 0.0, 1, 0, false); SoftwareMetrics.addRule("array", 0.0, 1, 0, false); SoftwareMetrics.addRule("arraylen", 0.0, 1, 0, false); SoftwareMetrics.addRule("as", 0.0, 1, 0, false); SoftwareMetrics.addRule("asc", 0.0, 1, 0, false); SoftwareMetrics.addRule("ascii", 0.0, 1, 0, false); SoftwareMetrics.addRule("assert", 0.0, 1, 0, false); SoftwareMetrics.addRule("assign", 0.0, 1, 0, false); SoftwareMetrics.addRule("at", 0.0, 1, 0, false); SoftwareMetrics.addRule("audit", 0.0, 1, 0, false); SoftwareMetrics.addRule("authid", 0.0, 1, 0, false); SoftwareMetrics.addRule("authorization", 0.0, 1, 0, false); SoftwareMetrics.addRule("autoextend", 0.0, 1, 0, false); SoftwareMetrics.addRule("automatic", 0.0, 1, 0, false); SoftwareMetrics.addRule("avg", 0.0, 1, 0, false); SoftwareMetrics.addRule("backup", 0.0, 1, 0, false); SoftwareMetrics.addRule("backups", 0.0, 1, 0, false); SoftwareMetrics.addRule("base_table", 0.0, 1, 0, false); SoftwareMetrics.addRule("begin", 0.0, 1, 0, false); SoftwareMetrics.addRule("between", 0.0, 1, 0, false); SoftwareMetrics.addRule("binary_integer", 0.0, 1, 0, false); SoftwareMetrics.addRule("blob", 0.0, 1, 0, false); SoftwareMetrics.addRule("body", 0.0, 1, 0, false); SoftwareMetrics.addRule("boolean", 0.0, 1, 0, false); SoftwareMetrics.addRule("both", 0.0, 1, 0, false); SoftwareMetrics.addRule("bulk", 0.0, 1, 0, false); SoftwareMetrics.addRule("by", 0.0, 1, 0, false); SoftwareMetrics.addRule("case", 0.0, 1, 0, false); SoftwareMetrics.addRule("cast", 0.0, 1, 0, false); SoftwareMetrics.addRule("ceil", 0.0, 1, 0, false); SoftwareMetrics.addRule("char", 0.0, 1, 0, false); SoftwareMetrics.addRule("character", 0.0, 1, 0, false); SoftwareMetrics.addRule("char_base", 0.0, 1, 0, false); SoftwareMetrics.addRule("chartorowid", 0.0, 1, 0, false); SoftwareMetrics.addRule("check", 0.0, 1, 0, false); SoftwareMetrics.addRule("choose", 0.0, 1, 0, false); SoftwareMetrics.addRule("chr", 0.0, 1, 0, false); SoftwareMetrics.addRule("clob", 0.0, 1, 0, false); SoftwareMetrics.addRule("close", 0.0, 1, 0, false); SoftwareMetrics.addRule("close_cached_open_cursors", 0.0, 1, 0, false); SoftwareMetrics.addRule("cluster", 0.0, 1, 0, false); SoftwareMetrics.addRule("clusters", 0.0, 1, 0, false); SoftwareMetrics.addRule("colauth", 0.0, 1, 0, false); SoftwareMetrics.addRule("collect", 0.0, 1, 0, false); SoftwareMetrics.addRule("column", 0.0, 1, 0, false); SoftwareMetrics.addRule("columns", 0.0, 1, 0, false); SoftwareMetrics.addRule("comment", 0.0, 1, 0, false); SoftwareMetrics.addRule("commit", 0.0, 1, 0, false); SoftwareMetrics.addRule("commit_point_strength", 0.0, 1, 0, false); SoftwareMetrics.addRule("compile", 0.0, 1, 0, false); SoftwareMetrics.addRule("compress", 0.0, 1, 0, false); SoftwareMetrics.addRule("compute", 0.0, 1, 0, false); SoftwareMetrics.addRule("concat", 0.0, 1, 0, false); SoftwareMetrics.addRule("connect", 0.0, 1, 0, false); SoftwareMetrics.addRule("const", 0.0, 1, 0, false); SoftwareMetrics.addRule("constant", 0.0, 1, 0, false); SoftwareMetrics.addRule("constraint", 0.0, 1, 0, false); SoftwareMetrics.addRule("constraints", 0.0, 1, 0, false); SoftwareMetrics.addRule("contains", 0.0, 1, 0, false); SoftwareMetrics.addRule("continue", 0.0, 1, 0, false); SoftwareMetrics.addRule("convert", 0.0, 1, 0, false); SoftwareMetrics.addRule("cos", 0.0, 1, 0, false); SoftwareMetrics.addRule("cosh", 0.0, 1, 0, false); SoftwareMetrics.addRule("count", 0.0, 1, 0, false); SoftwareMetrics.addRule("crash", 0.0, 1, 0, false); SoftwareMetrics.addRule("create", 0.0, 1, 0, false); SoftwareMetrics.addRule("current", 0.0, 1, 0, false); SoftwareMetrics.addRule("currval", 0.0, 1, 0, false); SoftwareMetrics.addRule("cursor", 0.0, 1, 0, false); SoftwareMetrics.addRule("database", 0.0, 1, 0, false); SoftwareMetrics.addRule("data_base", 0.0, 1, 0, false); SoftwareMetrics.addRule("datafile", 0.0, 1, 0, false); SoftwareMetrics.addRule("datafiles", 0.0, 1, 0, false); SoftwareMetrics.addRule("date", 0.0, 1, 0, false); SoftwareMetrics.addRule("dba", 0.0, 1, 0, false); SoftwareMetrics.addRule("'dd'", 0.0, 1, 0, false); SoftwareMetrics.addRule("debugoff", 0.0, 1, 0, false); SoftwareMetrics.addRule("debugon", 0.0, 1, 0, false); SoftwareMetrics.addRule("decimal", 0.0, 1, 0, false); SoftwareMetrics.addRule("declare", 0.0, 1, 0, false); SoftwareMetrics.addRule("decode", 1.0, 1, 0, false); SoftwareMetrics.addRule("default", 0.0, 1, 0, false); SoftwareMetrics.addRule("define", 0.0, 1, 0, false); SoftwareMetrics.addRule("definition", 0.0, 1, 0, false); SoftwareMetrics.addRule("delay", 0.0, 1, 0, false); SoftwareMetrics.addRule("delete", 0.0, 1, 0, false); SoftwareMetrics.addRule("delta", 0.0, 1, 0, false); SoftwareMetrics.addRule("desc", 0.0, 1, 0, false); SoftwareMetrics.addRule("describe", 0.0, 1, 0, false); SoftwareMetrics.addRule("digits", 0.0, 1, 0, false); SoftwareMetrics.addRule("dispose", 0.0, 1, 0, false); SoftwareMetrics.addRule("distinct", 0.0, 1, 0, false); SoftwareMetrics.addRule("do", 0.0, 1, 0, false); SoftwareMetrics.addRule("double", 0.0, 1, 0, false); SoftwareMetrics.addRule("drop", 0.0, 1, 0, false); SoftwareMetrics.addRule("dual", 0.0, 1, 0, false); SoftwareMetrics.addRule("dump", 0.0, 1, 0, false); SoftwareMetrics.addRule("each", 0.0, 1, 0, false); SoftwareMetrics.addRule("either", 0.0, 1, 0, false); SoftwareMetrics.addRule("element", 0.0, 1, 0, false); SoftwareMetrics.addRule("else", 0.0, 1, 0, false); SoftwareMetrics.addRule("elsif", 1.0, 1, 0, false); SoftwareMetrics.addRule("enable", 0.0, 1, 0, false); SoftwareMetrics.addRule("end", 0.0, 0, 0, false); SoftwareMetrics.addRule("entry", 0.0, 1, 0, false); SoftwareMetrics.addRule("error", 0.0, 1, 0, false); SoftwareMetrics.addRule("errorstack", 0.0, 1, 0, false); SoftwareMetrics.addRule("escape", 0.0, 1, 0, false); SoftwareMetrics.addRule("estimate", 0.0, 1, 0, false); SoftwareMetrics.addRule("event", 0.0, 1, 0, false); SoftwareMetrics.addRule("event#", 0.0, 1, 0, false); SoftwareMetrics.addRule("events", 0.0, 1, 0, false); SoftwareMetrics.addRule("everything", 0.0, 1, 0, false); SoftwareMetrics.addRule("eword", 0.0, 1, 0, false); SoftwareMetrics.addRule("except", 0.0, 1, 0, false); SoftwareMetrics.addRule("exception", 0.0, 1, 0, false); SoftwareMetrics.addRule("exception_init", 0.0, 1, 0, false); SoftwareMetrics.addRule("exceptions", 0.0, 1, 0, false); SoftwareMetrics.addRule("exclusive", 0.0, 1, 0, false); SoftwareMetrics.addRule("exec", 0.0, 1, 0, false); SoftwareMetrics.addRule("execute", 0.0, 1, 0, false); SoftwareMetrics.addRule("exists", 0.0, 1, 0, false); SoftwareMetrics.addRule("exit", 1.0, 1, 0, false); SoftwareMetrics.addRule("exp", 0.0, 1, 0, false); SoftwareMetrics.addRule("explain", 0.0, 1, 0, false); SoftwareMetrics.addRule("extend", 0.0, 1, 0, false); SoftwareMetrics.addRule("extends", 0.0, 1, 0, false); SoftwareMetrics.addRule("extent", 0.0, 1, 0, false); SoftwareMetrics.addRule("extents", 0.0, 1, 0, false); SoftwareMetrics.addRule("external", 0.0, 1, 0, false); SoftwareMetrics.addRule("externally", 0.0, 1, 0, false); SoftwareMetrics.addRule("false", 0.0, 1, 0, false); SoftwareMetrics.addRule("fast", 0.0, 1, 0, false); SoftwareMetrics.addRule("fatal", 0.0, 1, 0, false); SoftwareMetrics.addRule("fetch", 0.0, 1, 0, false); SoftwareMetrics.addRule("file", 0.0, 1, 0, false); SoftwareMetrics.addRule("filename", 0.0, 1, 0, false); SoftwareMetrics.addRule("files", 0.0, 1, 0, false); SoftwareMetrics.addRule("filter", 0.0, 1, 0, false); SoftwareMetrics.addRule("first", 0.0, 1, 0, false); SoftwareMetrics.addRule("flag", 0.0, 1, 0, false); SoftwareMetrics.addRule("flagger", 0.0, 1, 0, false); SoftwareMetrics.addRule("float", 0.0, 1, 0, false); SoftwareMetrics.addRule("floor", 0.0, 1, 0, false); SoftwareMetrics.addRule("for", 1.0, 1, 0, false); SoftwareMetrics.addRule("forall", 1.0, 1, 0, false); SoftwareMetrics.addRule("force", 0.0, 1, 0, false); SoftwareMetrics.addRule("foreign", 0.0, 1, 0, false); SoftwareMetrics.addRule("forever", 0.0, 1, 0, false); SoftwareMetrics.addRule("form", 0.0, 1, 0, false); SoftwareMetrics.addRule("found", 0.0, 1, 0, false); SoftwareMetrics.addRule("fragment", 0.0, 1, 0, false); SoftwareMetrics.addRule("free", 0.0, 1, 0, false); SoftwareMetrics.addRule("freelist", 0.0, 1, 0, false); SoftwareMetrics.addRule("freelists", 0.0, 1, 0, false); SoftwareMetrics.addRule("from", 0.0, 1, 0, false); SoftwareMetrics.addRule("full", 0.0, 1, 0, false); SoftwareMetrics.addRule("func", 0.0, 1, 0, false); SoftwareMetrics.addRule("function", 0.0, 1, 0, false); SoftwareMetrics.addRule("general", 0.0, 1, 0, false); SoftwareMetrics.addRule("generic", 0.0, 1, 0, false); SoftwareMetrics.addRule("get", 0.0, 1, 0, false); SoftwareMetrics.addRule("gethitratio", 0.0, 1, 0, false); SoftwareMetrics.addRule("gethits", 0.0, 1, 0, false); SoftwareMetrics.addRule("getmisses", 0.0, 1, 0, false); SoftwareMetrics.addRule("gets", 0.0, 1, 0, false); SoftwareMetrics.addRule("glb", 0.0, 1, 0, false); SoftwareMetrics.addRule("global", 0.0, 1, 0, false); SoftwareMetrics.addRule("goto", 0.0, 1, 0, false); SoftwareMetrics.addRule("grant", 0.0, 1, 0, false); SoftwareMetrics.addRule("greatest", 1.0, 1, 0, false); SoftwareMetrics.addRule("greatest_lb", 0.0, 1, 0, false); SoftwareMetrics.addRule("group", 0.0, 1, 0, false); SoftwareMetrics.addRule("hash", 0.0, 1, 0, false); SoftwareMetrics.addRule("hashed", 0.0, 1, 0, false); SoftwareMetrics.addRule("have", 0.0, 1, 0, false); SoftwareMetrics.addRule("having", 0.0, 1, 0, false); SoftwareMetrics.addRule("hextoraw", 0.0, 1, 0, false); SoftwareMetrics.addRule("'hh'", 0.0, 1, 0, false); SoftwareMetrics.addRule("'hh24'", 0.0, 1, 0, false); SoftwareMetrics.addRule("identified", 0.0, 1, 0, false); SoftwareMetrics.addRule("if", 0.5, 1, 0, false); SoftwareMetrics.addRule("immediate", 0.0, 1, 0, false); SoftwareMetrics.addRule("in", 0.0, 1, 0, false); SoftwareMetrics.addRule("increment", 0.0, 1, 0, false); SoftwareMetrics.addRule("index", 0.0, 1, 0, false); SoftwareMetrics.addRule("indexes", 0.0, 1, 0, false); SoftwareMetrics.addRule("indicator", 0.0, 1, 0, false); SoftwareMetrics.addRule("initcap", 0.0, 1, 0, false); SoftwareMetrics.addRule("initial", 0.0, 1, 0, false); SoftwareMetrics.addRule("initrans", 0.0, 1, 0, false); SoftwareMetrics.addRule("inner", 0.0, 1, 0, false); SoftwareMetrics.addRule("insert", 0.0, 1, 0, false); SoftwareMetrics.addRule("instance", 0.0, 1, 0, false); SoftwareMetrics.addRule("instr", 0.0, 1, 0, false); SoftwareMetrics.addRule("instrb", 0.0, 1, 0, false); SoftwareMetrics.addRule("int", 0.0, 1, 0, false); SoftwareMetrics.addRule("integer", 0.0, 1, 0, false); SoftwareMetrics.addRule("intersect", 0.0, 1, 0, false); SoftwareMetrics.addRule("intersection", 0.0, 1, 0, false); SoftwareMetrics.addRule("into", 0.0, 1, 0, false); SoftwareMetrics.addRule("invalid", 0.0, 1, 0, false); SoftwareMetrics.addRule("is", 0.0, 1, 0, false); SoftwareMetrics.addRule("isopen", 0.0, 1, 0, false); SoftwareMetrics.addRule("java", 0.0, 1, 0, false); SoftwareMetrics.addRule("join", 0.0, 1, 0, false); SoftwareMetrics.addRule("julian", 0.0, 1, 0, false); SoftwareMetrics.addRule("keep", 0.0, 1, 0, false); SoftwareMetrics.addRule("kept", 0.0, 1, 0, false); SoftwareMetrics.addRule("key", 0.0, 1, 0, false); SoftwareMetrics.addRule("kill", 0.0, 1, 0, false); SoftwareMetrics.addRule("label", 0.0, 1, 0, false); SoftwareMetrics.addRule("language", 0.0, 1, 0, false); SoftwareMetrics.addRule("last", 0.0, 1, 0, false); SoftwareMetrics.addRule("last_day", 0.0, 1, 0, false); SoftwareMetrics.addRule("leading", 0.0, 1, 0, false); SoftwareMetrics.addRule("least", 1.0, 1, 0, false); SoftwareMetrics.addRule("least_ub", 0.0, 1, 0, false); SoftwareMetrics.addRule("left", 0.0, 1, 0, false); SoftwareMetrics.addRule("length", 0.0, 1, 0, false); SoftwareMetrics.addRule("lengthb", 0.0, 1, 0, false); SoftwareMetrics.addRule("level", 0.0, 1, 0, false); SoftwareMetrics.addRule("like", 0.0, 1, 0, false); SoftwareMetrics.addRule("limited", 0.0, 1, 0, false); SoftwareMetrics.addRule("link", 0.0, 1, 0, false); SoftwareMetrics.addRule("ln", 0.0, 1, 0, false); SoftwareMetrics.addRule("lock", 0.0, 1, 0, false); SoftwareMetrics.addRule("log", 0.0, 1, 0, false); SoftwareMetrics.addRule("logfile", 0.0, 1, 0, false); SoftwareMetrics.addRule("long", 0.0, 1, 0, false); SoftwareMetrics.addRule("loop", 0.0, 0, 0, false); SoftwareMetrics.addRule("lower", 0.0, 1, 0, false); SoftwareMetrics.addRule("lpad", 0.0, 1, 0, false); SoftwareMetrics.addRule("ltrim", 0.0, 1, 0, false); SoftwareMetrics.addRule("lub", 0.0, 1, 0, false); SoftwareMetrics.addRule("matches", 0.0, 1, 0, false); SoftwareMetrics.addRule("max", 0.0, 1, 0, false); SoftwareMetrics.addRule("maxarchlogs", 0.0, 1, 0, false); SoftwareMetrics.addRule("maxdatafiles", 0.0, 1, 0, false); SoftwareMetrics.addRule("maxextents", 0.0, 1, 0, false); SoftwareMetrics.addRule("maximum", 0.0, 1, 0, false); SoftwareMetrics.addRule("maximum_connections", 0.0, 1, 0, false); SoftwareMetrics.addRule("maxinstances", 0.0, 1, 0, false); SoftwareMetrics.addRule("maxlogfiles", 0.0, 1, 0, false); SoftwareMetrics.addRule("maxloghistory", 0.0, 1, 0, false); SoftwareMetrics.addRule("maxlogmembers", 0.0, 1, 0, false); SoftwareMetrics.addRule("maxsize", 0.0, 1, 0, false); SoftwareMetrics.addRule("maxtrans", 0.0, 1, 0, false); SoftwareMetrics.addRule("maxvalue", 0.0, 1, 0, false); SoftwareMetrics.addRule("max_value", 0.0, 1, 0, false); SoftwareMetrics.addRule("member", 0.0, 1, 0, false); SoftwareMetrics.addRule("merge", 0.0, 1, 0, false); SoftwareMetrics.addRule("merge_aj", 0.0, 1, 0, false); SoftwareMetrics.addRule("message", 0.0, 1, 0, false); SoftwareMetrics.addRule("'mi'", 0.0, 1, 0, false); SoftwareMetrics.addRule("'mm'", 0.0, 1, 0, false); SoftwareMetrics.addRule("min", 0.0, 1, 0, false); SoftwareMetrics.addRule("minextents", 0.0, 1, 0, false); SoftwareMetrics.addRule("minus", 0.0, 1, 0, false); SoftwareMetrics.addRule("minvalue", 0.0, 1, 0, false); SoftwareMetrics.addRule("min_value", 0.0, 1, 0, false); SoftwareMetrics.addRule("mlslabel", 0.0, 1, 0, false); SoftwareMetrics.addRule("mod", 0.0, 1, 0, false); SoftwareMetrics.addRule("mode", 0.0, 1, 0, false); SoftwareMetrics.addRule("modify", 0.0, 1, 0, false); SoftwareMetrics.addRule("module", 0.0, 1, 0, false); SoftwareMetrics.addRule("'mon'", 0.0, 1, 0, false); SoftwareMetrics.addRule("'month'", 0.0, 1, 0, false); SoftwareMetrics.addRule("monitor", 0.0, 1, 0, false); SoftwareMetrics.addRule("months_between", 0.0, 1, 0, false); SoftwareMetrics.addRule("mount", 0.0, 1, 0, false); SoftwareMetrics.addRule("name", 0.0, 1, 0, false); SoftwareMetrics.addRule("namespace", 0.0, 1, 0, false); SoftwareMetrics.addRule("natural", 0.0, 1, 0, false); SoftwareMetrics.addRule("nested", 0.0, 1, 0, false); SoftwareMetrics.addRule("new", 0.0, 1, 0, false); SoftwareMetrics.addRule("new_time", 0.0, 1, 0, false); SoftwareMetrics.addRule("next", 0.0, 1, 0, false); SoftwareMetrics.addRule("next_day", 0.0, 1, 0, false); SoftwareMetrics.addRule("nextval", 0.0, 1, 0, false); SoftwareMetrics.addRule("nextvalue", 0.0, 1, 0, false); SoftwareMetrics.addRule("nls", 0.0, 1, 0, false); SoftwareMetrics.addRule("nlssort", 0.0, 1, 0, false); SoftwareMetrics.addRule("noarchivelog", 0.0, 1, 0, false); SoftwareMetrics.addRule("noaudit", 0.0, 1, 0, false); SoftwareMetrics.addRule("nocache", 0.0, 1, 0, false); SoftwareMetrics.addRule("nocompress", 0.0, 1, 0, false); SoftwareMetrics.addRule("nocycle", 0.0, 1, 0, false); SoftwareMetrics.addRule("no_expand", 0.0, 1, 0, false); SoftwareMetrics.addRule("noforce", 0.0, 1, 0, false); SoftwareMetrics.addRule("nomaxvalue", 0.0, 1, 0, false); SoftwareMetrics.addRule("no_merge", 0.0, 1, 0, false); SoftwareMetrics.addRule("nominvalue", 0.0, 1, 0, false); SoftwareMetrics.addRule("nomount", 0.0, 1, 0, false); SoftwareMetrics.addRule("none", 0.0, 1, 0, false); SoftwareMetrics.addRule("noorder", 0.0, 1, 0, false); SoftwareMetrics.addRule("nooverride", 0.0, 1, 0, false); SoftwareMetrics.addRule("noparallel", 0.0, 1, 0, false); SoftwareMetrics.addRule("noparallelism", 0.0, 1, 0, false); SoftwareMetrics.addRule("nopreempt", 0.0, 1, 0, false); SoftwareMetrics.addRule("noresetlogs", 0.0, 1, 0, false); SoftwareMetrics.addRule("noreverse", 0.0, 1, 0, false); SoftwareMetrics.addRule("normal", 0.0, 1, 0, false); SoftwareMetrics.addRule("nosort", 0.0, 1, 0, false); SoftwareMetrics.addRule("not", 0.0, 1, 0, false); SoftwareMetrics.addRule("notfound", 0.0, 1, 0, false); SoftwareMetrics.addRule("nothing", 0.0, 1, 0, false); SoftwareMetrics.addRule("noundo", 0.0, 1, 0, false); SoftwareMetrics.addRule("nowait", 0.0, 1, 0, false); SoftwareMetrics.addRule("null", 0.0, 1, 0, false); SoftwareMetrics.addRule("number", 0.0, 1, 0, false); SoftwareMetrics.addRule("number_base", 0.0, 1, 0, false); SoftwareMetrics.addRule("numeric", 0.0, 1, 0, false); SoftwareMetrics.addRule("num_rows", 0.0, 1, 0, false); SoftwareMetrics.addRule("nvl", 1.0, 1, 0, false); SoftwareMetrics.addRule("object", 0.0, 1, 0, false); SoftwareMetrics.addRule("occurred", 0.0, 1, 0, false); SoftwareMetrics.addRule("occurrences", 0.0, 1, 0, false); SoftwareMetrics.addRule("of", 0.0, 1, 0, false); SoftwareMetrics.addRule("offline", 0.0, 1, 0, false); SoftwareMetrics.addRule("on", 0.0, 1, 0, false); SoftwareMetrics.addRule("online", 0.0, 1, 0, false); SoftwareMetrics.addRule("only", 0.0, 1, 0, false); SoftwareMetrics.addRule("open", 0.0, 1, 0, false); SoftwareMetrics.addRule("optimizer", 0.0, 1, 0, false); SoftwareMetrics.addRule("option", 0.0, 1, 0, false); SoftwareMetrics.addRule("options", 0.0, 1, 0, false); SoftwareMetrics.addRule("or", 1.0, 1, 0, false); SoftwareMetrics.addRule("order", 0.0, 1, 0, false); SoftwareMetrics.addRule("others", 0.0, 1, 0, false); SoftwareMetrics.addRule("out", 0.0, 1, 0, false); SoftwareMetrics.addRule("outer", 0.0, 1, 0, false); SoftwareMetrics.addRule("own", 0.0, 1, 0, false); SoftwareMetrics.addRule("owned", 0.0, 1, 0, false); SoftwareMetrics.addRule("owner", 0.0, 1, 0, false); SoftwareMetrics.addRule("package", 0.0, 1, 0, false); SoftwareMetrics.addRule("parallel", 0.0, 1, 0, false); SoftwareMetrics.addRule("parameter", 0.0, 1, 0, false); SoftwareMetrics.addRule("partition", 0.0, 1, 0, false); SoftwareMetrics.addRule("partitions", 0.0, 1, 0, false); SoftwareMetrics.addRule("path", 0.0, 1, 0, false); SoftwareMetrics.addRule("pcm", 0.0, 1, 0, false); SoftwareMetrics.addRule("pctfree", 0.0, 1, 0, false); SoftwareMetrics.addRule("pctincrease", 0.0, 1, 0, false); SoftwareMetrics.addRule("pctused", 0.0, 1, 0, false); SoftwareMetrics.addRule("pending", 0.0, 1, 0, false); SoftwareMetrics.addRule("percent", 0.0, 1, 0, false); SoftwareMetrics.addRule("permanent", 0.0, 1, 0, false); SoftwareMetrics.addRule("piece", 0.0, 1, 0, false); SoftwareMetrics.addRule("plan", 0.0, 1, 0, false); SoftwareMetrics.addRule("positive", 0.0, 1, 0, false); SoftwareMetrics.addRule("power", 0.0, 1, 0, false); SoftwareMetrics.addRule("pragma", 0.0, 1, 0, false); SoftwareMetrics.addRule("precision", 0.0, 1, 0, false); SoftwareMetrics.addRule("primary", 0.0, 1, 0, false); SoftwareMetrics.addRule("prior", 0.0, 1, 0, false); SoftwareMetrics.addRule("priro", 0.0, 1, 0, false); SoftwareMetrics.addRule("private", 0.0, 1, 0, false); SoftwareMetrics.addRule("privilege", 0.0, 1, 0, false); SoftwareMetrics.addRule("priv_number", 0.0, 1, 0, false); SoftwareMetrics.addRule("procedure", 0.0, 1, 0, false); SoftwareMetrics.addRule("process", 0.0, 1, 0, false); SoftwareMetrics.addRule("profile", 0.0, 1, 0, false); SoftwareMetrics.addRule("program", 0.0, 1, 0, false); SoftwareMetrics.addRule("protocol", 0.0, 1, 0, false); SoftwareMetrics.addRule("public", 0.0, 1, 0, false); SoftwareMetrics.addRule("query", 0.0, 1, 0, false); SoftwareMetrics.addRule("queue", 0.0, 1, 0, false); SoftwareMetrics.addRule("queued", 0.0, 1, 0, false); SoftwareMetrics.addRule("quit", 0.0, 1, 0, false); SoftwareMetrics.addRule("quota", 0.0, 1, 0, false); SoftwareMetrics.addRule("raise", 0.0, 1, 0, false); SoftwareMetrics.addRule("range", 0.0, 1, 0, false); SoftwareMetrics.addRule("raw", 0.0, 1, 0, false); SoftwareMetrics.addRule("rawtohex", 0.0, 1, 0, false); SoftwareMetrics.addRule("rawtolab", 0.0, 1, 0, false); SoftwareMetrics.addRule("rdbms", 0.0, 1, 0, false); SoftwareMetrics.addRule("read", 0.0, 1, 0, false); SoftwareMetrics.addRule("real", 0.0, 1, 0, false); SoftwareMetrics.addRule("reason", 0.0, 1, 0, false); SoftwareMetrics.addRule("receive", 0.0, 1, 0, false); SoftwareMetrics.addRule("record", 0.0, 1, 0, false); SoftwareMetrics.addRule("recover", 0.0, 1, 0, false); SoftwareMetrics.addRule("recovery", 0.0, 1, 0, false); SoftwareMetrics.addRule("recursive", 0.0, 1, 0, false); SoftwareMetrics.addRule("redo", 0.0, 1, 0, false); SoftwareMetrics.addRule("ref", 0.0, 1, 0, false); SoftwareMetrics.addRule("refresh", 0.0, 1, 0, false); SoftwareMetrics.addRule("release", 0.0, 1, 0, false); SoftwareMetrics.addRule("remote", 0.0, 1, 0, false); SoftwareMetrics.addRule("remote_dependencies_mode", 0.0, 1, 0, false); SoftwareMetrics.addRule("remr", 0.0, 1, 0, false); SoftwareMetrics.addRule("rename", 0.0, 1, 0, false); SoftwareMetrics.addRule("replace", 0.0, 1, 0, false); SoftwareMetrics.addRule("reply", 0.0, 1, 0, false); SoftwareMetrics.addRule("request", 0.0, 1, 0, false); SoftwareMetrics.addRule("resetlogs", 0.0, 1, 0, false); SoftwareMetrics.addRule("resource", 0.0, 1, 0, false); SoftwareMetrics.addRule("resource_limit", 0.0, 1, 0, false); SoftwareMetrics.addRule("restricted", 0.0, 1, 0, false); SoftwareMetrics.addRule("resume", 0.0, 1, 0, false); SoftwareMetrics.addRule("return", 0.0, 1, 0, false); SoftwareMetrics.addRule("returncode", 0.0, 1, 0, false); SoftwareMetrics.addRule("reuse", 0.0, 1, 0, false); SoftwareMetrics.addRule("reversal", 0.0, 1, 0, false); SoftwareMetrics.addRule("reverse", 0.0, 1, 0, false); SoftwareMetrics.addRule("revoke", 0.0, 1, 0, false); SoftwareMetrics.addRule("right", 0.0, 1, 0, false); SoftwareMetrics.addRule("role", 0.0, 1, 0, false); SoftwareMetrics.addRule("rollback", 0.0, 1, 0, false); SoftwareMetrics.addRule("round", 0.0, 1, 0, false); SoftwareMetrics.addRule("row", 0.0, 1, 0, false); SoftwareMetrics.addRule("rowcount", 0.0, 1, 0, false); SoftwareMetrics.addRule("%rowcount", 0.0, 1, 0, false); SoftwareMetrics.addRule("rowidtochar", 0.0, 1, 0, false); SoftwareMetrics.addRule("rowlabel", 0.0, 1, 0, false); SoftwareMetrics.addRule("row_locking", 0.0, 1, 0, false); SoftwareMetrics.addRule("rownum", 0.0, 1, 0, false); SoftwareMetrics.addRule("rowtype", 0.0, 1, 0, false); SoftwareMetrics.addRule("rpad", 0.0, 1, 0, false); SoftwareMetrics.addRule("rtrim", 0.0, 1, 0, false); SoftwareMetrics.addRule("run", 0.0, 1, 0, false); SoftwareMetrics.addRule("'rr'", 0.0, 1, 0, false); SoftwareMetrics.addRule("'rrr'", 0.0, 1, 0, false); SoftwareMetrics.addRule("sample", 0.0, 1, 0, false); SoftwareMetrics.addRule("save", 0.0, 1, 0, false); SoftwareMetrics.addRule("savedata", 0.0, 1, 0, false); SoftwareMetrics.addRule("savepoint", 0.0, 1, 0, false); SoftwareMetrics.addRule("scan", 0.0, 1, 0, false); SoftwareMetrics.addRule("schema", 0.0, 1, 0, false); SoftwareMetrics.addRule("score", 0.0, 1, 0, false); SoftwareMetrics.addRule("segment", 0.0, 1, 0, false); SoftwareMetrics.addRule("select", 0.0, 1, 0, false); SoftwareMetrics.addRule("separate", 0.0, 1, 0, false); SoftwareMetrics.addRule("sequence", 0.0, 1, 0, false); SoftwareMetrics.addRule("serializable", 0.0, 1, 0, false); SoftwareMetrics.addRule("server_type", 0.0, 1, 0, false); SoftwareMetrics.addRule("service", 0.0, 1, 0, false); SoftwareMetrics.addRule("session", 0.0, 1, 0, false); SoftwareMetrics.addRule("sessionid", 0.0, 1, 0, false); SoftwareMetrics.addRule("sessions", 0.0, 1, 0, false); SoftwareMetrics.addRule("set", 0.0, 1, 0, false); SoftwareMetrics.addRule("share", 0.0, 1, 0, false); SoftwareMetrics.addRule("short", 0.0, 1, 0, false); SoftwareMetrics.addRule("show", 0.0, 1, 0, false); SoftwareMetrics.addRule("shrink", 0.0, 1, 0, false); SoftwareMetrics.addRule("shutdown", 0.0, 1, 0, false); SoftwareMetrics.addRule("sign", 0.0, 1, 0, false); SoftwareMetrics.addRule("sin", 0.0, 1, 0, false); SoftwareMetrics.addRule("sinh", 0.0, 1, 0, false); SoftwareMetrics.addRule("size", 0.0, 1, 0, false); SoftwareMetrics.addRule("smallint", 0.0, 1, 0, false); SoftwareMetrics.addRule("snapshot", 0.0, 1, 0, false); SoftwareMetrics.addRule("sort", 0.0, 1, 0, false); SoftwareMetrics.addRule("soundex", 0.0, 1, 0, false); SoftwareMetrics.addRule("source", 0.0, 1, 0, false); SoftwareMetrics.addRule("space", 0.0, 1, 0, false); SoftwareMetrics.addRule("split", 0.0, 1, 0, false); SoftwareMetrics.addRule("spool", 0.0, 1, 0, false); SoftwareMetrics.addRule("sql", 0.0, 1, 0, false); SoftwareMetrics.addRule("sqlcode", 0.0, 1, 0, false); SoftwareMetrics.addRule("sqlerrm", 0.0, 1, 0, false); SoftwareMetrics.addRule("sqrt", 0.0, 1, 0, false); SoftwareMetrics.addRule("'ss'", 0.0, 1, 0, false); SoftwareMetrics.addRule("start", 0.0, 1, 0, false); SoftwareMetrics.addRule("statement", 0.0, 1, 0, false); SoftwareMetrics.addRule("statement_id", 0.0, 1, 0, false); SoftwareMetrics.addRule("statistic", 0.0, 1, 0, false); SoftwareMetrics.addRule("status", 0.0, 1, 0, false); SoftwareMetrics.addRule("stddev", 0.0, 1, 0, false); SoftwareMetrics.addRule("stop", 0.0, 1, 0, false); SoftwareMetrics.addRule("subquery", 0.0, 1, 0, false); SoftwareMetrics.addRule("substr", 0.0, 1, 0, false); SoftwareMetrics.addRule("substrb", 0.0, 1, 0, false); SoftwareMetrics.addRule("subtype", 0.0, 1, 0, false); SoftwareMetrics.addRule("sum", 0.0, 1, 0, false); SoftwareMetrics.addRule("suspend", 0.0, 1, 0, false); SoftwareMetrics.addRule("switch", 0.0, 1, 0, false); SoftwareMetrics.addRule("synonym", 0.0, 1, 0, false); SoftwareMetrics.addRule("sysdate", 0.0, 1, 0, false); SoftwareMetrics.addRule("tabauth", 0.0, 1, 0, false); SoftwareMetrics.addRule("table", 0.0, 1, 0, false); SoftwareMetrics.addRule("tables", 0.0, 1, 0, false); SoftwareMetrics.addRule("tablespace", 0.0, 1, 0, false); SoftwareMetrics.addRule("tan", 0.0, 1, 0, false); SoftwareMetrics.addRule("tanh", 0.0, 1, 0, false); SoftwareMetrics.addRule("task", 0.0, 1, 0, false); SoftwareMetrics.addRule("temporary", 0.0, 1, 0, false); SoftwareMetrics.addRule("terminate", 0.0, 1, 0, false); SoftwareMetrics.addRule("the", 0.0, 1, 0, false); SoftwareMetrics.addRule("then", 0.0, 0, 0, false); SoftwareMetrics.addRule("these", 0.0, 1, 0, false); SoftwareMetrics.addRule("this", 0.0, 1, 0, false); SoftwareMetrics.addRule("thread", 0.0, 1, 0, false); SoftwareMetrics.addRule("to", 0.0, 1, 0, false); SoftwareMetrics.addRule("to_char", 0.0, 1, 0, false); SoftwareMetrics.addRule("to_date", 0.0, 1, 0, false); SoftwareMetrics.addRule("to_label", 0.0, 1, 0, false); SoftwareMetrics.addRule("to_multi_byte", 0.0, 1, 0, false); SoftwareMetrics.addRule("to_number", 0.0, 1, 0, false); SoftwareMetrics.addRule("to_single_byte", 0.0, 1, 0, false); SoftwareMetrics.addRule("trace", 0.0, 1, 0, false); SoftwareMetrics.addRule("trailing", 0.0, 1, 0, false); SoftwareMetrics.addRule("transaction", 0.0, 1, 0, false); SoftwareMetrics.addRule("translate", 0.0, 1, 0, false); SoftwareMetrics.addRule("trigger", 0.0, 1, 0, false); SoftwareMetrics.addRule("trim", 0.0, 1, 0, false); SoftwareMetrics.addRule("true", 0.0, 1, 0, false); SoftwareMetrics.addRule("trunc", 0.0, 1, 0, false); SoftwareMetrics.addRule("truncate", 0.0, 1, 0, false); SoftwareMetrics.addRule("type", 0.0, 1, 0, false); SoftwareMetrics.addRule("uid", 0.0, 1, 0, false); SoftwareMetrics.addRule("union", 0.0, 1, 0, false); SoftwareMetrics.addRule("unique", 0.0, 1, 0, false); SoftwareMetrics.addRule("unlimited", 0.0, 1, 0, false); SoftwareMetrics.addRule("unsigned", 0.0, 1, 0, false); SoftwareMetrics.addRule("until", 0.0, 1, 0, false); SoftwareMetrics.addRule("updatable", 0.0, 1, 0, false); SoftwareMetrics.addRule("update", 0.0, 1, 0, false); SoftwareMetrics.addRule("upper", 0.0, 1, 0, false); SoftwareMetrics.addRule("usage", 0.0, 1, 0, false); SoftwareMetrics.addRule("use", 0.0, 1, 0, false); SoftwareMetrics.addRule("use_anti", 0.0, 1, 0, false); SoftwareMetrics.addRule("use_concat", 0.0, 1, 0, false); SoftwareMetrics.addRule("used", 0.0, 1, 0, false); SoftwareMetrics.addRule("use_hash", 0.0, 1, 0, false); SoftwareMetrics.addRule("use_merge", 0.0, 1, 0, false); SoftwareMetrics.addRule("use_nl", 0.0, 1, 0, false); SoftwareMetrics.addRule("user", 0.0, 1, 0, false); SoftwareMetrics.addRule("userenv", 0.0, 1, 0, false); SoftwareMetrics.addRule("userid", 0.0, 1, 0, false); SoftwareMetrics.addRule("username", 0.0, 1, 0, false); SoftwareMetrics.addRule("using", 0.0, 1, 0, false); SoftwareMetrics.addRule("validate", 0.0, 1, 0, false); SoftwareMetrics.addRule("values", 0.0, 1, 0, false); SoftwareMetrics.addRule("varchar", 0.0, 1, 0, false); SoftwareMetrics.addRule("varchar2", 0.0, 1, 0, false); SoftwareMetrics.addRule("variance", 0.0, 1, 0, false); SoftwareMetrics.addRule("varray", 0.0, 1, 0, false); SoftwareMetrics.addRule("view", 0.0, 1, 0, false); SoftwareMetrics.addRule("views", 0.0, 1, 0, false); SoftwareMetrics.addRule("vsize", 0.0, 1, 0, false); SoftwareMetrics.addRule("when", 1.0, 1, 0, false); SoftwareMetrics.addRule("whenever", 0.0, 1, 0, false); SoftwareMetrics.addRule("where", 0.0, 1, 0, false); SoftwareMetrics.addRule("while", 1.0, 1, 0, false); SoftwareMetrics.addRule("with", 0.0, 1, 0, false); SoftwareMetrics.addRule("work", 0.0, 1, 0, false); SoftwareMetrics.addRule("write", 0.0, 1, 0, false); SoftwareMetrics.addRule("xor", 0.0, 1, 0, false); SoftwareMetrics.addRule("'yy'", 0.0, 1, 0, false); SoftwareMetrics.addRule("'yyyy'", 0.0, 1, 0, false); for (i = 0; i < args.length; i++) { try { System.out.println("Processing File: " + args[i]); SoftwareMetrics.start(args[i], "Source", 0); in = new FileInputStream(args[i]); PLSqlLexer lexer = new PLSqlLexer(new DataInputStream(in)); PLSqlParser parser = new PLSqlParser(lexer); parser.start_rule(); // System.out.println("==> Dump of AST <=="); // DumpASTVisitor visitor = new DumpASTVisitor(); // visitor.visit(parser.getAST()); } catch(Exception e) { System.err.println("Exception: "+e); e.printStackTrace(); System.err.println("Problem Parsing File: " + args[i]); } finally { SoftwareMetrics.finishAll(); } } } }