def count()

in src/plugins/utils/sloc.py [0:0]


def count(path):
    """ Count lines of Code """
    # We determine how many cores there are, and adjust the
    # process count based on that. Max 4 procs.
    my_core_count = min((4, int( multiprocessing.cpu_count() )))
    inp = subprocess.check_output("cloc --quiet --progress-rate=0 --processes=%u %s" % (my_core_count, path), shell = True).decode('ascii', 'replace')
    m = re.search(r".*Language\s+files\s+blank\s+comment\s+code[\s\S]+?-+([\s\S]+?)-+[\s\S]+?SUM:\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)", inp, flags=re.MULTILINE|re.UNICODE)
    languages = {}
    ccount = 0
    years = 0
    cost = 0
    codecount = ""
    comment = ""
    blank = ""
    if m:
        lingos = m.group(1)
        fcount = m.group(2)
        blank = m.group(3)
        comment = m.group(4)
        codecount = m.group(5)
        for lm in re.finditer(r"([A-Za-z +-/0-9]+)\s+\d+\s+(\d+)\s+(\d+)\s+(\d+)", lingos):
            lang = lm.group(1).replace(" Header", "").lower()
            lang = re.sub(r"\s\s+", "", lang)
            lang = re.sub(r"^[Cc]\\?/", "", lang)
            lang = lang.replace(".", "_")
            if len(lang) > 0:
                C = 0
                D = 0
                E = 0
                if lang in languages:
                    C = languages[lang]['code']
                    D = languages[lang]['comment']
                    E = languages[lang]['blank']
                languages[lang] = {
                    'code': int(lm.group(4))+C,
                    'comment': int(lm.group(3))+D,
                    'blank': int(lm.group(2))+E
                    }
        ccount = int(codecount.replace(",", "")) + int(comment.replace(",", ""))
        codecount = int(codecount.replace(",,", ""))
        blank = int(blank.replace(",,", ""))
        comment = int(comment.replace(",,", ""))
        years = ccount / 3300.0
        cost = years * 72000
    return [languages, codecount, comment, blank, years, cost]