Exemplo n.º 1
0
        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]))
Exemplo n.º 2
0
 def setUp(self):
     from byond.objtree import ObjectTree
     self.tree = ObjectTree()
Exemplo n.º 3
0
                 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: