Remove "(bob)" author prefix from all TODO comments in benchmark/method_call.wren, include/wren.h, src/main.c, src/wren_common.h, src/wren_compiler.c, src/wren_core.c, src/wren_value.c, src/wren_value.h, and src/wren_vm.c. Update the TODO_PATTERN regex in metrics script to match the new format without author parentheses. Also refactor test file counting in metrics to use os.walk with fnmatch for recursive directory traversal instead of glob.iglob.
81 lines
1.9 KiB
Python
Executable File
81 lines
1.9 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
import glob
|
|
import fnmatch
|
|
import itertools
|
|
import os
|
|
import re
|
|
|
|
TODO_PATTERN = re.compile(r'\s*// TODO:')
|
|
DOC_PATTERN = re.compile(r'\s*//')
|
|
EXPECT_PATTERN = re.compile(r'// expect')
|
|
|
|
num_files = 0
|
|
num_docs = 0
|
|
num_code = 0
|
|
num_empty = 0
|
|
num_todos = 0
|
|
num_semicolons = 0
|
|
num_test_files = 0
|
|
num_test_todos = 0
|
|
num_expects = 0
|
|
num_test_empty = 0
|
|
num_test = 0
|
|
|
|
files = itertools.chain(glob.iglob("src/*.[ch]"), glob.iglob("include/*.[ch]"))
|
|
for source_path in files:
|
|
num_files += 1
|
|
with open(source_path, "r") as input:
|
|
for line in input:
|
|
num_semicolons += line.count(';')
|
|
match = TODO_PATTERN.match(line)
|
|
if match:
|
|
num_todos += 1
|
|
continue
|
|
|
|
match = DOC_PATTERN.match(line)
|
|
if match:
|
|
num_docs += 1
|
|
continue
|
|
|
|
if (line.strip() == ""):
|
|
num_empty += 1
|
|
continue
|
|
|
|
num_code += 1
|
|
|
|
for dir_path, dir_names, file_names in os.walk("test"):
|
|
for file_name in fnmatch.filter(file_names, "*.wren"):
|
|
num_test_files += 1
|
|
with open(os.path.join(dir_path, file_name), "r") as input:
|
|
for line in input:
|
|
if (line.strip() == ""):
|
|
num_test_empty += 1
|
|
else:
|
|
num_test += 1
|
|
|
|
match = TODO_PATTERN.match(line)
|
|
if match:
|
|
num_test_todos += 1
|
|
continue
|
|
|
|
match = EXPECT_PATTERN.search(line)
|
|
if match:
|
|
num_expects += 1
|
|
continue
|
|
|
|
print "source:"
|
|
print " files ", num_files
|
|
print " semicolons ", num_semicolons
|
|
print " TODOs ", num_todos
|
|
print " comment lines ", num_docs
|
|
print " code lines ", num_code
|
|
print " empty lines ", num_empty
|
|
print
|
|
print "test:"
|
|
print " files ", num_test_files
|
|
print " TODOs ", num_test_todos
|
|
print " expectations ", num_expects
|
|
print " non-empty lines", num_test
|
|
print " empty lines ", num_test_empty
|