CodeVetter
← All unpacks
CodeVetter · Repo Unpack evidence

eslint/eslint

Scanned commit bc51eee6e3 dated 2026-10-02 — last upstream commit. Generated by codevetter 1.15.0 on 2026-10-02.

github.com/eslint/eslint ↗ · 2259 files · 15.8 MB

ESLint Website | Configure ESLint | Rules | Contribute to ESLint | Report Bugs | Code of Conduct | X | Discord | Mastodon | Bluesky ESLint is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code.

Deep analysis by cli:codex via the codex CLI on 2026-10-02 (403s) — every claim below links to its cited source files. Source inspection; upstream code and tests were not executed.

Overview

ESLint is a configurable source-code analyzer for developers, editors, and build pipelines, exposed through a Node.js CLI and programmatic APIs. It parses JavaScript into an AST, runs selected rules, reports diagnostics, and can produce or write automatic fixes. This checkout uses flat configuration, supports custom languages, parsers, processors, rules, and formatters, and includes optional worker-thread execution and persistent lint-result caching. This brief reflects bounded source inspection at commit bc51eee6e3e816622b2dd1bc08acb9cfb2d3a6a7; tests and CI were inspected, not executed.

System map

The npm package provides both an executable and reusable analysis classes. CLI orchestration, asynchronous file/configuration work, synchronous verification, and JavaScript language support have distinct owners. Persistence consists of local cache and suppression files rather than an application database. Browser packaging and documentation builds are separate from the Node.js runtime.

Feature catalog

The primary interfaces lint paths or supplied text and return diagnostics with configurable severity. Users can apply fixes, choose report formats, inspect effective configuration, and manage suppression allowances. Optional caching and concurrency change execution strategy. Separate convenience flags delegate setup, MCP serving, and interactive configuration inspection to external packages.

Data flow

CLI arguments become constructor options and appended configuration overrides. File discovery resolves physical paths, while text linting uses a filename for configuration matching. Parsing produces language-owned source representations that rules turn into diagnostics and fix ranges. Results then pass through persistence, suppression, formatting, and exit-status decisions.

Behavior traces

The traced flows include startup, physical-file linting, stdin analysis, automatic fixing, cache reuse, and suppression persistence. Their execution order separates analysis from source writes. Configuration selection occurs before verification, and CLI suppressions occur after optional fix writes. These are source-derived walkthroughs, not observed executions.

Testing signals

Tests and CI were inspected, not executed; no passing result or measured coverage is established here. The inspected suite uses Mocha-style tests, RuleTester, Chai or Node assertions, Sinon, and Proxyquire. CI defines Node, operating-system, browser, type, documentation, and ecosystem checks. Inspection is bounded, and identified limits apply to the specific tests or workflows cited.

Risk map

These observations identify execution and persistence boundaries requiring care; they are not confirmed vulnerabilities. Configuration and extension modules execute within the host process, and convenience commands can invoke external package tooling. Filesystem destinations are resolved from caller-controlled paths rather than constrained to a repository root. Fixing, caching, suppressions, and concurrency have conditions that can materially change results or side effects.

Extension points

Extension is centered on flat configuration and explicit plugin objects. Rules, languages, processors, and parsers connect at different stages of verification. Formatters extend the output boundary, while configuration helpers and feature flags provide additional integration surfaces. Built-in rules are registered lazily and follow the same metadata/create contract used by rule tests.

Contributor handoff

Begin with the actual implementation and nearby tests, then use architecture documentation to preserve ownership boundaries. Tests and CI were inspected, not executed; this brief provides no passing checks or exhaustive coverage assessment. Rule changes couple source, tests, documentation, and generated metadata. Pay particular attention to virtual filenames, executable configuration, cache side effects, suppression counters, and worker option transport.

Languages

LanguageFilesShare of source
JavaScript145696%
Markdown422docs/config
JSON92docs/config
YAML54docs/config
HTML38docs/config
Sass352%
TypeScript221%
Shell10%

Start reading here

Probable source entrypoint: lib/ — inferred from the directory tree and manifest, not the upstream docs.

Source roots

lib/ (395 files) packages/ (23 files)

Repository structure

Top-level pathFiles
tests/1138
docs/604
lib/395
tools/24
packages/23
.github/22
messages/18
templates/5

Docs found: AGENTS.mdCONTRIBUTING.mdREADME.mddocs/README.mddocs/src/about/index.mddocs/src/contribute/ai-policy.mddocs/src/contribute/architecture/index.mddocs/src/contribute/code-conventions.mddocs/src/contribute/code-of-conduct.mddocs/src/contribute/core-rules.md

Package

package.json — eslint v10.11.0, 80 declared dependencies.

@arethetypeswrong/cli@babel/core@babel/preset-env@cypress/webpack-preprocessor@eslint-community/eslint-utils@eslint-community/regexpp@eslint/config-array@eslint/config-helpers@eslint/core@eslint/eslintrc@eslint/json@eslint/plugin-kit

CI & config entrypoints

Structural health signals

Average score 7/10 across 96 analyzed source files; 15 hotspots surfaced.

These are deterministic review leads — size, churn, and structural signals — not proof of a bug in this project.

Recent history