Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
FREEDOM251

Freedom251 › Blog › CI

A Linter That Silently Passes Can Be Worse Than No Linter at All

By Freedom251 Team · · 4 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A green lint result does not prove that code is correct. It proves only that the linter completed without reporting an applicable violation in the files and rules it checked—or, for some tools, that it fixed reported issues. If a team cannot tell what ran, what it examined, and whether failures reached CI, a passing job can create false confidence.

What does a clean lint run actually mean?

It means the configured checks found no reportable violations within their scope. That scope depends on the command, the files it includes, the rules enabled, and any ignores or suppressions. A clean result is therefore evidence about a particular check, not a general certificate of correctness.

As an Amazon Associate I earn from qualifying purchases.

For example, Ruff’s documentation describes rule selection and ignore settings that determine which violations it reports. Its linter documentation explains how select, extend-select, and ignore affect the active rules. A rule that is not selected, or a finding that is suppressed or ignored, cannot appear as a reported violation in that run.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Why can code with a bug still pass?

The bug is outside the selected rules

Linters apply configured rules; they do not check every conceivable property of a program. A linter may be set up to flag style issues or particular error patterns without being configured to identify the defect in question. Review the effective configuration rather than assuming the tool’s full rule catalog is active.

The relevant file was not checked

The command may target only some directories or file types, while ignore settings may exclude additional paths. If the buggy file is outside that set, a successful run says nothing about it. Confirm the command used in CI and compare its target paths with the files you expect it to cover.

Linting does not execute the program

ESLint describes static analysis as examining code without building or running it, in contrast with dynamic analysis such as tests. That distinction matters: a lint rule can identify certain patterns without observing how the program behaves with actual inputs. A bug that appears only at runtime may not trigger any configured static rule. See the ESLint glossary for its definitions of static and dynamic analysis.

Rank #2
The Lion Does Not Concern Himself Yellow Code Linter Hardcover Journal, Black
  • Witty programming meme graphic pairing a majestic lion portrait with developer linter humor for software engineers and coders.
  • Artistic linocut tech aesthetic suited for hackathons, tech conferences, remote work desks, and everyday programmer casual wear.
  • Hardcover journal with 240 line-ruled pages (120 sheets)
  • Built-in elastic closure and ribbon bookmark
  • Includes an expandable inner storage pocket and a pen holder

Linting is not type checking

A linter and a type checker address overlapping but different problems. Ruff’s FAQ says Ruff is not a type checker and recommends using complementary tools where appropriate. A linter may flag a suspicious pattern that a type checker does not, while a type checker may identify a type inconsistency outside the linter’s remit. Neither tool’s clean result substitutes for the other.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Does a zero exit status prove the linter passed cleanly?

Interpret the status according to the specific tool. Ruff documents exit status 0 when there are no violations or when all present violations were automatically fixed; status 1 indicates violations, and 2 indicates abnormal termination, such as invalid configuration, invalid options, or an internal error. These are Ruff’s documented conventions, not a universal standard for all linters.

This means a CI job that reports success after Ruff exits with 0 may have found no violations, or may have fixed them. If the distinction matters, inspect the command and output rather than treating the status alone as proof that no issues were encountered. Also check that the CI step actually propagates a failing status instead of masking it.

How should teams make a passing lint job trustworthy?

  1. Inspect the CI command. Confirm which executable and options run, which paths or file patterns are targeted, and whether the step runs in the intended job.
  2. Review the effective configuration. Check selected and extended rules, ignores, and inline suppressions. For Ruff, verify how select, extend-select, and ignore combine in the configuration used by CI.
  3. Verify failure handling. Make sure violations and abnormal termination cause the CI job to fail as intended. Do not assume that a green overall pipeline means every check ran successfully.
  4. Add checks for other failure modes. Use type checking where type consistency matters, and tests that exercise relevant behavior and inputs. Each adds a different kind of evidence; none guarantees that every defect has been found.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What can static analysis establish—and what can’t it?

A successful static-analysis run establishes that the configured analyzer completed and did not leave reportable findings under that run’s rules and scope, subject to the tool’s own status behavior. It cannot establish that the program has no bugs. A research paper, “Fixing Vulnerabilities Automatically with Linters,” makes the broader conceptual point that, except for trivial properties, static analysis cannot generally eliminate both false positives and false negatives. That is a limit on what can be guaranteed, not a measured estimate of how many defects a linter misses.

The practical lesson is not to abandon linting. It is to treat its result as one layer of checking, and to make that layer visible: know what ran, what it examined, which rules applied, and what other checks cover the questions linting does not answer.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Quick Recap

Bestseller No. 2
The Lion Does Not Concern Himself Yellow Code Linter Hardcover Journal, Black
The Lion Does Not Concern Himself Yellow Code Linter Hardcover Journal, Black
Hardcover journal with 240 line-ruled pages (120 sheets); Built-in elastic closure and ribbon bookmark
$16.99
Bestseller No. 3

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

CIESLintlintingRuffSoftware DevelopmentStatic analysis

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.