Skip to main content

Tool that finds evidence of past skipped linting

Project description

Dont Be Lazy

Dont Be Lazy scans a repository for lint, type-checking, security, formatting, coverage, and test suppressions that were probably meant to be temporary and then forgotten. It helps teams find blanket ignores, stale skips, config-level exclusions, and other "we'll clean this up later" decisions before they become permanent.

What it can find

  • Inline suppressions such as # noqa, # type: ignore, # nosec, # nosemgrep, # fmt: off, and skipped tests.
  • Config-level suppressions such as ignored rules, per-file ignores, and excluded paths.
  • Risky patterns like file-wide ignores, blanket suppressions, non-strict xfail, and vulnerability audit ignores.
  • Age and ownership signals using git blame, git history, and baseline files.

Installation

pipx install dont_be_lazy

Or with pip:

pip install dont_be_lazy

For local development:

git clone https://github.com/matthewdeanmartin/dont_be_lazy.git
cd dont_be_lazy
uv sync --all-extras

Quick usage

Show the CLI:

dont_be_lazy --help

Scan a repository:

dont_be_lazy scan .

Focus on higher-risk suppressions:

dont_be_lazy scan . --risk high

Summarize findings by tool:

dont_be_lazy summary . --by tool

Find stale suppressions with git history:

dont_be_lazy stale . --older-than 180d --with-git-history

Create and check a baseline:

dont_be_lazy baseline create . --output .dont-be-lazy-baseline.json
dont_be_lazy baseline check . --baseline .dont-be-lazy-baseline.json

Review active policy rules:

dont_be_lazy rules list
dont_be_lazy rules test .

Export machine-readable output:

dont_be_lazy scan . --format sarif --output dont-be-lazy.sarif

Commands

Command Purpose
scan Find suppressions in code and config files.
summary Show grouped counts by tool, kind, scope, owner, age, or risk.
list Show supported tools, checks, and known suppression patterns.
config-suppressions Scan config-file-level ignores and exclusions.
stale Find old suppressions using a time threshold plus optional git metadata.
owners Group suppressions by git blame author, email, team, or path.
explain Explain one suppression by path:line or DBL identifier.
baseline Create, check, and prune accepted suppressions over time.
rules List policy rules and test current findings against them.

Output formats

scan supports table, json, jsonl, markdown, and sarif. Other commands support the subset that fits their output, so it can plug into terminal workflows, CI logs, dashboards, and code-scanning tools.

Documentation

License

MIT — see LICENSE.

Changelog

See CHANGELOG.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dont_be_lazy-0.1.0.tar.gz (51.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dont_be_lazy-0.1.0-py3-none-any.whl (50.1 kB view details)

Uploaded Python 3

File details

Details for the file dont_be_lazy-0.1.0.tar.gz.

File metadata

  • Download URL: dont_be_lazy-0.1.0.tar.gz
  • Upload date:
  • Size: 51.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for dont_be_lazy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ea717f763a1cbfaf5f68a3edec439a75634186baa1ae66ebb82b79c94a5866bc
MD5 fe51568fb735113bc2e498d5690950ba
BLAKE2b-256 92a5fb00c8f3c17c4d3f4662cff31e0adb1088b6b0bff89885df19a926234387

See more details on using hashes here.

Provenance

The following attestation bundles were made for dont_be_lazy-0.1.0.tar.gz:

Publisher: publish_to_pypi.yml on matthewdeanmartin/dont_be_lazy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dont_be_lazy-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: dont_be_lazy-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 50.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for dont_be_lazy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 58518db56db277bb3dd9b6f912068f256ac0b50384223141ed3209aff8226eab
MD5 f90d488d4bc1b009b1c0e6ec50d47b1d
BLAKE2b-256 fad1f734a13bf5d5f9b99f3e5a0e0f336f52bf87dc936583cef0371d02623649

See more details on using hashes here.

Provenance

The following attestation bundles were made for dont_be_lazy-0.1.0-py3-none-any.whl:

Publisher: publish_to_pypi.yml on matthewdeanmartin/dont_be_lazy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page