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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
164adcb8fa5144382736edfee1cb890bc667833b7b014c8d239e97a64ea582e5
|
|
| MD5 |
7c799855fc26221b9c6a340ec6e95a14
|
|
| BLAKE2b-256 |
dc5cdcaf258b13acecee4fc53ba90d3bf667b0ee031108168b03cd9a31404f1a
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dont_be_lazy-0.1.1.tar.gz -
Subject digest:
164adcb8fa5144382736edfee1cb890bc667833b7b014c8d239e97a64ea582e5 - Sigstore transparency entry: 1438526730
- Sigstore integration time:
-
Permalink:
matthewdeanmartin/dont_be_lazy@513a2b0665d91c64be2eaafeee67294b38ba874b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/matthewdeanmartin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish_to_pypi.yml@513a2b0665d91c64be2eaafeee67294b38ba874b -
Trigger Event:
workflow_dispatch
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6183efd8aa80751fcc3e742a8876122f16933087b7c45c8650c2c0162ae54a6a
|
|
| MD5 |
e6247a5c67989970d72a3a64877f2f97
|
|
| BLAKE2b-256 |
a04c5fcd1b1f0ec8454094473675266cea063a5953c7f4beb5dec3d2c47cc1d9
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dont_be_lazy-0.1.1-py3-none-any.whl -
Subject digest:
6183efd8aa80751fcc3e742a8876122f16933087b7c45c8650c2c0162ae54a6a - Sigstore transparency entry: 1438526757
- Sigstore integration time:
-
Permalink:
matthewdeanmartin/dont_be_lazy@513a2b0665d91c64be2eaafeee67294b38ba874b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/matthewdeanmartin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish_to_pypi.yml@513a2b0665d91c64be2eaafeee67294b38ba874b -
Trigger Event:
workflow_dispatch
-
Statement type: