def handleFile(phase, dirname, basename, suffix): filename = os.path.join(dirname, basename) #if the target file is older than the file this rule should be applied to, do nothing #Also check the rules dump - if this one is newer, then we have to execute this stuff, otherwise do nothing tFilename = os.path.join(const101.tRoot, dirname, basename + suffix) if not tools101.build(filename, tFilename) or not tools101.build(const101.rulesDump, tFilename): entry = {'units' : json.load(open(tFilename, 'r')), 'filename': filename} if not entry['units'] == []: matches.append(entry) return units = list() # metadata units for the file at hand id = 0 # current rule number for r in rules: rule = r["rule"] result = matchFile(phase, dirname, basename, rule) if not result is None: if "metadata" in rule: metadata = rule["metadata"] if isinstance(metadata, list): for m in metadata: buildUnit(units, id, m, result) else: buildUnit(units, id, metadata, result) id += 1 # Contract units to pay attention to dominators keys = list() removals = list() for unit in units: metadata = unit["metadata"] if "dominator" in metadata: keys.append(metadata["dominator"]) for key in keys: for unit in units: metadata = unit["metadata"] if key in metadata \ and (not "dominator" in metadata or not metadata["dominator"] == key): removals.append(unit) survivals = list() for unit in units: if not unit in removals: survivals.append(unit) units = survivals # Add entry to matches if any matches for file at hand tools101.makedirs(os.path.join(const101.tRoot, dirname)) matchesFile = open(tFilename, 'w') matchesFile.write(json.dumps(units)) if len(units) > 0: global noUnits global noFilesAffected noUnits += len(units) noFilesAffected += 1 entry = dict() entry["filename"] = filename entry["units"] = units matches.append(entry) tools101.tick()
sys.path.append('../../libraries/101meta') import tools101 import const101 blacklist = json.load(open('blacklist.json', 'r')) #features = json.load(open('debugOutput/features.json', 'r')) features = features.deriveFeaturesForContributions(blacklist) #metrics = json.load(open('debugOutput/contributionMetrics.json', 'r')) metrics = metrics.calculateMetricsForContributions(blacklist) idx = 0 for featureMapping in features: if len(featureMapping['contributions']) > 1: contributions = featureMapping['contributions'] path = os.path.join(const101.views, 'features', str(idx)) tools101.makedirs(path) json.dump(featureMapping['features'], open(os.path.join(path, 'features.json'), 'w'), indent=4) visualization.visualize(contributions, metrics, os.path.join(path, str(idx) + '.png')) idx += 1 print '\n\nFinished'