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]