示例#1
0
def _getMetrics(file):
    data = loadPage(file)
    derived = data.get('derived', [])

    if derived:
        for d in derived:
            if d['name'].endswith('metrics.json'):
                return loadPage(d['resource'])

    return {}
示例#2
0
def _getMetrics(file):
    data = loadPage(file)
    derived = data.get('derived', [])

    if derived:
        for d in derived:
            if d['name'].endswith('metrics.json'):
                return loadPage(d['resource'])

    return {}
示例#3
0
def calculateMetricsForContributions(blacklist=[]):
    problems = []
    contributionMetrics = {}
    debug = {}

    contributions = loadPage('http://101companies.org/resources/contributions')['members']
    for contribution in contributions:
        if contribution['name'] in blacklist:
            continue

        dot()
        #print 'extracting files from {}'.format(contribution['name'])
        try:
            files = _extractFilesFromFolder(contribution['resource'])
        except Exception as e:
            problems.append({
                'resource': contribution['resource'],
                'exception': str(e)
            })

        size = 0
        loc = 0
        ncloc = 0

        for file in files:
            if not file.get('metrics', {}) == {}:
                metrics = file['metrics']
                if _isSystemRelevant(metrics):
                    size += int(metrics['size'])
                    loc += int(metrics['loc'])
                    ncloc += int(metrics['ncloc'])

        finalMetrics = {
            'size': size,
            'loc': loc,
            'ncloc': ncloc
        }

        debug[contribution['name']] = {
            'files': files,
            'metrics': finalMetrics
        }

        contributionMetrics[contribution['name']] = finalMetrics

    #serialize debug output
    json.dump(contributionMetrics, open('debugOutput/contributionMetrics.json', 'w'), indent=4)
    json.dump(debug, open('debugOutput/debug.json', 'w'), indent=4)
    json.dump(problems, open('debugOutput/metrics_problems.json', 'w'), indent=4)

    return contributionMetrics
示例#4
0
def _extractFilesFromFolder(uri):
    folder = loadPage(uri)
    files = []

    for file in folder.get('files', []):
        files.append({
            'resource': file['resource'],
            'metrics': _getMetrics(file['resource'])
        })

    for subFolder in folder.get('folders', []):
        files += _extractFilesFromFolder(subFolder['resource'])

    return files
示例#5
0
def _extractFilesFromFolder(uri):
    folder = loadPage(uri)
    files = []

    for file in folder.get('files', []):
        files.append({
            'resource': file['resource'],
            'metrics': _getMetrics(file['resource'])
        })

    for subFolder in folder.get('folders', []):
        files += _extractFilesFromFolder(subFolder['resource'])

    return files
示例#6
0
def calculateMetricsForContributions(blacklist=[]):
    problems = []
    contributionMetrics = {}
    debug = {}

    contributions = loadPage(
        'http://101companies.org/resources/contributions')['members']
    for contribution in contributions:
        if contribution['name'] in blacklist:
            continue

        dot()
        #print 'extracting files from {}'.format(contribution['name'])
        try:
            files = _extractFilesFromFolder(contribution['resource'])
        except Exception as e:
            problems.append({
                'resource': contribution['resource'],
                'exception': str(e)
            })

        size = 0
        loc = 0
        ncloc = 0

        for file in files:
            if not file.get('metrics', {}) == {}:
                metrics = file['metrics']
                if _isSystemRelevant(metrics):
                    size += int(metrics['size'])
                    loc += int(metrics['loc'])
                    ncloc += int(metrics['ncloc'])

        finalMetrics = {'size': size, 'loc': loc, 'ncloc': ncloc}

        debug[contribution['name']] = {'files': files, 'metrics': finalMetrics}

        contributionMetrics[contribution['name']] = finalMetrics

    #serialize debug output
    json.dump(contributionMetrics,
              open('debugOutput/contributionMetrics.json', 'w'),
              indent=4)
    json.dump(debug, open('debugOutput/debug.json', 'w'), indent=4)
    json.dump(problems,
              open('debugOutput/metrics_problems.json', 'w'),
              indent=4)

    return contributionMetrics