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.1.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.1-py3-none-any.whl (50.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dont_be_lazy-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 164adcb8fa5144382736edfee1cb890bc667833b7b014c8d239e97a64ea582e5
MD5 7c799855fc26221b9c6a340ec6e95a14
BLAKE2b-256 dc5cdcaf258b13acecee4fc53ba90d3bf667b0ee031108168b03cd9a31404f1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for dont_be_lazy-0.1.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: dont_be_lazy-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6183efd8aa80751fcc3e742a8876122f16933087b7c45c8650c2c0162ae54a6a
MD5 e6247a5c67989970d72a3a64877f2f97
BLAKE2b-256 a04c5fcd1b1f0ec8454094473675266cea063a5953c7f4beb5dec3d2c47cc1d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for dont_be_lazy-0.1.1-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