Term
Static Analyzer / Linter
Tools that check source code against formal rules without executing it — based on a syntax tree (AST) and control-flow graph. They work deterministically and exhaustively, unlike probabilistic LLMs.
Static Analyzer / Linter — explained in detail
A static analyzer inspects source code without running it. The tool first parses the code into a complete formal model — typically an abstract syntax tree (AST) and a control-flow graph — and then applies a fixed set of rules to it. A linter is the lightweight flavour of this: it flags style violations, suspicious patterns and simple classes of bugs.
The defining trait is that this analysis is deterministic and exhaustive. Deterministic means the same input is guaranteed to produce the same output — the same code twice yields exactly the same findings twice. Exhaustive means the tool checks every location a rule applies to, not just a sample. Both follow directly from computing against clearly defined rules over a complete model of the code.
Example / Practical use
Typical examples are ESLint (JavaScript/TypeScript), Ruff and Pylint (Python), clippy (Rust) or SonarQube (cross-language). A linter will catch things like an unused variable, a forgotten await, an unreachable line of code or a security-rule violation — always at every affected spot, always reproducibly in the CI run.
It gets interesting alongside AI-assisted code review: an LLM works probabilistically and selectively — it reads code like a human, grasps intent and logic errors, but may miss different things from run to run. A static analyzer works deterministically and completely — it reliably finds every rule violation, yet has no understanding of whether the code is supposed to do the right thing. That is why the two approaches complement rather than replace each other: the linter secures the rule-based baseline, while the LLM adds contextual judgement.
Distinction from related terms
Unlike dynamic analysis (tests, profilers, sanitizers), static analysis never executes the code — it needs no runtime environment and no test data. A compiler also checks code statically, but its goal is translation; a static analyzer goes beyond mere compilability and assesses quality, style and error-proneness. It differs from LLM code review through determinism and completeness — the trade-off being that it only finds what an explicitly formulated rule covers.
Entdecke mehr
Git Branch
A branch is an independent line of development in a Git repository — a moving pointer to a commit, allowing parallel work without conflicts with the main code.
LexikonGit Basics for Non-Developers
What version control is, what problem Git solves, and the mental model behind it: repository, commit, branch, merge, and remote, explained plainly.
GlossarGitHub
GitHub is the largest hosting platform for Git repositories — with pull requests, code review, issues and CI/CD via GitHub Actions as the standard toolkit for software development.