ProcessTechLevels(child, path + '/' + key) def prettify(tree, indent=0): prefix = ' ' * indent for key in tree.keys(): atom = tree[key] print('{}{}/'.format(prefix, key)) prettify(atom.children, indent + len(key)) for propkey, value in atom.properties.items(): print('{}var/{} = {}'.format(' ' * (indent + len(key)), propkey, repr(value))) if os.path.isfile(sys.argv[1]): tree = ObjectTree() tree.ProcessFilesFromDME(sys.argv[1]) ProcessTechLevels(tree.Tree) with open( os.path.join(os.path.dirname(sys.argv[1]), 'tech_origin_list.csv'), 'w') as w: with open( os.path.join(os.path.dirname(sys.argv[1]), 'max_tech_origins.txt'), 'w') as mto: tech_columns = [] mto.write( 'Calculated Max Tech Levels:\n These tech levels have been determined by parsing ALL origin_tech variables in code included by {0}.\n' .format(sys.argv[1])) for tech in sorted(CMTLs.keys()): tech_columns.append(tech) mto.write('{:>15}: {}\n'.format(tech, CMTLs[tech]))
def setUp(self): from byond.objtree import ObjectTree self.tree = ObjectTree()
warning='sleep() should not be used in process().', regex=re.compile(r'\bsleep\(([0-9]+)\)\b'), in_procnames=('process')), RegexScanner(id='spawn-in-process', warning='spawn() should not be used in process().', regex=re.compile(r'\bspawn(\(([0-9]*)\))?\b'), in_procnames=('process')), RegexScanner( id='del-in-ex_act', warning= 'del() should not be used in ex_act(). Consider replacing with qdel.', regex=re.compile(r'\bdel(\(.*\))?\b'), in_procnames=('ex_act')), ] otr = ObjectTree() otr.ProcessFilesFromDME(sys.argv[1], '.dm') procs = 0 alerts = 0 for path in otr.Atoms: atom = otr.GetAtom(path) if isinstance(atom, Proc): continue proceed = False skipping = [] for rule in rules: if rule.MatchAtom(atom): proceed = True else: skipping += [rule] if not proceed: continue for childName in atom.children: