A dev.to design essay argues CI was sized for human review speed and proposes tiering checks by cost and failure probability. Its figures are examples, so the case rests on the failure modes it names.
Reality
- Evidence22
- Adoption
- Insufficient
- Hype gap+30
- Incentives25
- Confidence45
contextlib.suppress discards the exception exactly as try/except/pass does, but it is a call expression rather than a handler, so rules that dispatch on handlers never see it. One new analyzer counts the gap.
Reality
- Evidence47
- Adoption11
- Hype gap+27
- Incentives79
- Confidence44
A Rust duplicate-code checker claims 191x to 250x against isolated Pylint. The more useful part of the argument is why R0801 cannot be sharded across CI workers.
Reality
- Evidence32
- Adoption8
- Hype gap+28
- Incentives82
- Confidence44
A Rust duplicate-code checker for Python claims roughly 219x on the one job Ruff skips and Pylint R0801 does slowly. Version 2 spent its effort on stable finding identity, not the algorithm.
Reality
- Evidence24
- Adoption8
- Hype gap+22
- Incentives72
- Confidence33
Two runtime-equivalent calls, one no-member error. The cause sits in astroid's implicit __call__ path, where a failed attribute lookup kills the generator before the correct branch runs.
Reality
- Evidence60
- Adoption
- Insufficient
- Hype gap+22
- Incentives58
- Confidence52
A developer hit the seam between Ruff's speed and Pylint's R0801 and wrote a single-purpose checker called Arid rather than keep waiting. No benchmarks published.
Reality
- Evidence24
- Adoption
- Insufficient
- Hype gap+32
- Incentives74
- Confidence30
A 16,000-line Flask app shipped a GIF trimmer that accepted start and end times and threw them away. Python does not warn about redefinition. Pylint E0102 does, for free.
Reality
- Evidence58
- Adoption20
- Hype gap+12
- Incentives68
- Confidence55