Merge branch 'tor-github/pr/1337'

This commit is contained in:
George Kadianakis 2019-09-25 14:19:49 +03:00
commit 7157d80c6f
8 changed files with 37 additions and 3 deletions

View File

@ -183,6 +183,7 @@ EXTRA_DIST+= \
scripts/maint/practracker/testdata/ex0.txt \
scripts/maint/practracker/testdata/ex1-expected.txt \
scripts/maint/practracker/testdata/ex1.txt \
scripts/maint/practracker/testdata/ex1-overbroad-expected.txt \
scripts/maint/practracker/testdata/ex.txt \
scripts/maint/practracker/testdata/header.h \
scripts/maint/practracker/testdata/not_c_file \

4
changes/ticket31338 Normal file
View File

@ -0,0 +1,4 @@
o Minor bugfixes (best practices tracker):
- When listing overbroad exceptions, do not also list problems,
and do not list insufficiently broad exceptions. Fixes bug 31338;
bugfix on 0.4.2.1-alpha.

View File

@ -224,6 +224,11 @@ def main(argv):
filt.addThreshold(problem.DependencyViolationItem("*.c", int(args.max_dependency_violations)))
filt.addThreshold(problem.DependencyViolationItem("*.h", int(args.max_dependency_violations)))
if args.list_overbroad and args.regen:
print("Cannot use --regen with --list-overbroad",
file=sys.stderr)
sys.exit(1)
# 1) Get all the .c files we care about
files_list = util.get_tor_c_files(TOR_TOPDIR, args.include_dir)
@ -239,6 +244,10 @@ def main(argv):
ProblemVault = problem.ProblemVault(exceptions_file)
problem_file = sys.stdout
if args.list_overbroad:
# If we're listing overbroad exceptions, don't list problems.
problem_file = util.NullFile()
# 2.1) Adjust the exceptions so that we warn only about small problems,
# and produce errors on big ones.
if not (args.regen or args.list_overbroad or args.strict):

View File

@ -77,8 +77,10 @@ class ProblemVault(object):
# (e.g. we went from 4k LoC to 3k LoC), but we do warn if the
# situation worsened (e.g. we went from 60 includes to 80).
status = problem.is_worse_than(self.exceptions[problem.key()])
if status == STATUS_OK:
self.used_exception_for[problem.key()] = problem
# Remember that we used this exception, so that we can later
# determine whether the exception was overbroad.
self.used_exception_for[problem.key()] = problem
return status

View File

@ -61,3 +61,9 @@ echo "ex1:"
run_practracker --exceptions "${DATA}/ex1.txt" > "${TMPDIR}/ex1-received.txt"
compare "${TMPDIR}/ex1-received.txt" "${DATA}/ex1-expected.txt"
echo "ex1.overbroad:"
run_practracker --exceptions "${DATA}/ex1.txt" --list-overbroad > "${TMPDIR}/ex1-overbroad-received.txt"
compare "${TMPDIR}/ex1-overbroad-received.txt" "${DATA}/ex1-overbroad-expected.txt"

View File

@ -0,0 +1,2 @@
problem file-size a.c 40 -> 38
problem file-size z.c 100 -> 0

View File

@ -1,5 +1,5 @@
problem file-size a.c 38
problem file-size a.c 40
problem include-count a.c 4
# this problem will produce an error
problem function-size a.c:i_am_a_function() 8
@ -8,6 +8,9 @@ problem function-size a.c:another_function() 11
problem file-size b.c 15
# This is removed, and so will produce an error.
# problem function-size b.c:foo() 4
# This exception isn't used.
problem file-size z.c 100
problem function-size b.c:bar() 5
problem dependency-violation a.c 3
problem dependency-violation header.h 3

View File

@ -41,3 +41,10 @@ def get_tor_c_files(tor_topdir, include_dirs=None):
files_list.append(full_path)
return files_list
class NullFile:
"""A file-like object that we can us to suppress output."""
def __init__(self):
pass
def write(self, s):
pass