def ccjson(paths): """ Modified version of radon.cli.cc. This silently returns the digest as a JSON (string). """ config = Config( min=_cfg.get_value('cc_min', str, 'A').upper(), max=_cfg.get_value('cc_max', str, 'F').upper(), exclude=_cfg.get_value('exclude', str, None), ignore=_cfg.get_value('ignore', str, None), show_complexity=_cfg.get_value('show_complexity', bool, False), average=_cfg.get_value('average', bool, False), total_average=_cfg.get_value('total_average', bool, False), order=getattr(cc_mod, _cfg.get_value('order', str, 'SCORE').upper(), getattr(cc_mod, 'SCORE')), no_assert=_cfg.get_value('no_assert', bool, False), show_closures=_cfg.get_value('show_closures', bool, False), include_ipynb=_cfg.get_value('include_ipynb', bool, False), ipynb_cells=_cfg.get_value('ipynb_cells', bool, False) ) harvester = CCHarvester(paths, config) return harvester.as_json()
def radon_test(f): filename = 'a1/a1_solution_' + f + '.py' with open(filename) as file: source = file.read() cv = ComplexityVisitor.from_code(source) res = sorted_results(cv.functions + cv.classes, order=LINES) output = {} for r in res: # print(f'Function: {r.name}, CC: {r.complexity}') output['CC'] = r.complexity res = analyze(source) # pprint(res) basic = {'loc': res[0], 'lloc': res[1], 'sloc': res[2], 'comments': res[3], 'multi': res[4], 'blank': res[5], 'single_comment': res[6]} output['Lines'] = basic config = Config(min='A', max='F', exclude=None, ignore=None, no_assert=False, show_closures=False, order=LINES) ch = CCHarvester([filename], config) res = ch.results x = json.loads(ch.as_json()) # pprint(x) res = h_visit(source) hals = {'h1': res[0], 'h2': res[1], 'N1': res[2], 'N2': res[3], 'vocabulary': res[4], 'length': res[5], 'calculated_length': res[6], 'volume': res[7], 'difficulty': res[8], 'effort': res[9], 'time': res[10], 'bugs': res[11]} output['Halstead'] = hals pprint({f: output})