Skip to content

Commit

Permalink
Add Item.get_whitelist_string. (#144)
Browse files Browse the repository at this point in the history
  • Loading branch information
RJ722 authored and jendrikseipp committed Aug 12, 2018
1 parent bd584ac commit 3c965e2
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 24 deletions.
8 changes: 3 additions & 5 deletions tests/test_make_whitelist.py
Expand Up @@ -5,14 +5,12 @@


@pytest.fixture
def check_whitelist(v, capsys):
def check_whitelist(v):
def examine(code, results_before, results_after):
v.scan(code)
check(v.get_unused_code(), results_before)
capsys.readouterr() # Clear captured text
v.make_whitelist()
whitelist = capsys.readouterr().out
v.scan(whitelist)
for item in v.get_unused_code():
v.scan(item.get_whitelist_string())
check(v.get_unused_code(), results_after)
return examine

Expand Down
4 changes: 2 additions & 2 deletions tests/test_report.py
Expand Up @@ -27,9 +27,8 @@ def check_report(v, capsys):
def test_report(code, expected, make_whitelist=False):
filename = 'foo.py'
v.scan(code, filename=filename)
report_func = v.make_whitelist if make_whitelist else v.report
capsys.readouterr()
report_func()
v.report(make_whitelist=make_whitelist)
assert capsys.readouterr().out == expected.format(filename=filename)
return test_report

Expand All @@ -54,6 +53,7 @@ def test_make_whitelist(check_report):
bar # unused function ({filename}:7)
_.foobar # unused attribute ({filename}:8)
foobar # unused variable ({filename}:9)
# unreachable code after 'return' ({filename}:11)
_.myprop # unused property ({filename}:13)
"""
check_report(mock_code, expected, make_whitelist=True)
34 changes: 17 additions & 17 deletions vulture/core.py
Expand Up @@ -130,6 +130,16 @@ def get_report(self, add_size=False):
utils.format_path(self.filename), self.first_lineno,
self.message, self.confidence, size_report)

def get_whitelist_string(self):
filename = utils.format_path(self.filename)
if self.typ == 'unreachable_code':
return ('# {} ({}:{})'.format(
self.message, filename, self.first_lineno))
else:
prefix = '_.' if self.typ in ['attribute', 'property'] else ''
return "{}{} # unused {} ({}:{:d})".format(
prefix, self.name, self.typ, filename, self.first_lineno)

def _tuple(self):
return (self.filename, self.first_lineno, self.name)

Expand Down Expand Up @@ -262,24 +272,15 @@ def by_size(item):
return sorted(confidently_unused,
key=by_size if sort_by_size else by_name)

def make_whitelist(self, min_confidence=0, sort_by_size=False):
for item in self.get_unused_code(
min_confidence=min_confidence, sort_by_size=sort_by_size):
if item.typ != 'unreachable_code':
prefix = '_.' if item.typ in ['attribute', 'property'] else ''
print("{}{} # unused {} ({}:{:d})".format(
prefix, item.name, item.typ,
utils.format_path(item.filename), item.first_lineno))
self.found_dead_code_or_error = True
return self.found_dead_code_or_error

def report(self, min_confidence=0, sort_by_size=False):
def report(self, min_confidence=0, sort_by_size=False,
make_whitelist=False):
"""
Print ordered list of Item objects to stdout.
"""
for item in self.get_unused_code(
min_confidence=min_confidence, sort_by_size=sort_by_size):
print(item.get_report(add_size=sort_by_size))
print(item.get_whitelist_string() if make_whitelist
else item.get_report(add_size=sort_by_size))
self.found_dead_code_or_error = True
return self.found_dead_code_or_error

Expand Down Expand Up @@ -566,8 +567,7 @@ def main():
vulture = Vulture(verbose=args.verbose, ignore_names=args.ignore_names,
ignore_decorators=args.ignore_decorators)
vulture.scavenge(args.paths, exclude=args.exclude)
report_func = (vulture.make_whitelist if args.make_whitelist
else vulture.report)
sys.exit(report_func(
sys.exit(vulture.report(
min_confidence=args.min_confidence,
sort_by_size=args.sort_by_size))
sort_by_size=args.sort_by_size,
make_whitelist=args.make_whitelist))

0 comments on commit 3c965e2

Please sign in to comment.