| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- """Support Vulture."""
- from argparse import ArgumentParser
- from vulture.core import ERROR_CODES, Vulture, make_config
- from pylama.context import RunContext
- from pylama.lint import LinterV2 as BaseLinter
- class Linter(BaseLinter):
- """vulture runner."""
- name = "vulture"
- @classmethod
- def add_args(cls, parser: ArgumentParser):
- """Add --max-complexity option."""
- parser.add_argument(
- "--vulture-min-confidence",
- type=int,
- help="Minimum confidence (between 0 and 100) for code to be reported as unused.",
- )
- parser.add_argument(
- "--vulture-ignore-names",
- help="Comma-separated list of names to ignore",
- )
- parser.add_argument(
- "--vulture-ignore-decorators",
- help="Comma-separated list of decorators to ignore",
- )
- def run_check(self, ctx: RunContext): # noqa
- """Check code with vulture."""
- params = ctx.get_params("vulture")
- options = ctx.options
- if options:
- params.setdefault("min-confidence", options.vulture_min_confidence)
- params.setdefault("ignore-names", options.vulture_ignore_names)
- params.setdefault("ignore-decorators", options.vulture_ignore_decorators)
- config = make_config(parse_params(ctx.filename, params))
- vulture = Vulture(
- verbose=config["verbose"],
- ignore_names=config["ignore_names"],
- ignore_decorators=config["ignore_decorators"],
- )
- vulture.scan(ctx.source, filename=ctx.filename)
- unused_code_items = vulture.get_unused_code(
- min_confidence=config["min_confidence"], sort_by_size=config["sort_by_size"]
- )
- for item in unused_code_items:
- error_code = ERROR_CODES[item.typ]
- ctx.push(
- source="vulture",
- type="R",
- lnum=item.first_lineno,
- number=error_code,
- text=f"{item.message} ({item.confidence}% confidence)",
- )
- def parse_params(path, params=None):
- """Convert params from pylama."""
- return [f"--{key}={value}" for key, value in params.items() if value] + [path]
|