Make includes interface more like the rest of practracker

Everything else assumes that somebody else will open the file for it.
This commit is contained in:
Nick Mathewson
2019-08-05 17:31:49 -04:00
parent 6b26281b50
commit 2a3c727dfe
2 changed files with 11 additions and 10 deletions
+8 -9
View File
@@ -103,11 +103,9 @@ class Rules(object):
"Forbidden include of {}".format(include),
is_advisory=self.is_advisory)
def applyToFile(self, fname):
with open_file(fname) as f:
#print(fname)
for error in self.applyToLines(iter(f), "{}:".format(fname)):
yield error
def applyToFile(self, fname, f):
for error in self.applyToLines(iter(f), "{}:".format(fname)):
yield error
def noteUnusedRules(self):
for p in self.patterns:
@@ -200,14 +198,14 @@ def toposort(graph, limit=100):
return all_levels
def consider_include_rules(fname):
def consider_include_rules(fname, f):
dirpath = os.path.split(fname)[0]
rules_fname = os.path.join(dirpath, RULES_FNAME)
rules = load_include_rules(os.path.join(dirpath, RULES_FNAME))
if rules is None:
return
for err in rules.applyToFile(fname):
for err in rules.applyToFile(fname, f):
yield err
list_unused = False
@@ -221,8 +219,9 @@ def walk_c_files(topdir="src"):
for fname in fnames:
if fname_is_c(fname):
fullpath = os.path.join(dirpath,fname)
for err in consider_include_rules(fullpath):
yield err
with open(fullpath) as f:
for err in consider_include_rules(fullpath, f):
yield err
def run_check_includes(topdir, list_unused=False, log_sorted_levels=False,
list_advisories=False):
+3 -1
View File
@@ -117,8 +117,10 @@ def consider_metrics_for_file(fname, f):
for item in consider_function_size(fname, f):
yield item
# Check for "upward" includes
f.seek(0)
n = 0
for item in includes.consider_include_rules(real_fname):
for item in includes.consider_include_rules(real_fname, f):
n += 1
if n:
yield problem.DependencyViolationItem(fname, n)