For a pluggable linter for catching bugs in JavaScript, the first results are eslint/eslint (ESLint is the leading pluggable JavaScript linter, offering a vast plugin ecosystem, custom rule creation, AST-based static analysis, auto-fix, and deep IDE integration—exactly what you need for extensible bug detection and code quality enforcement), sindresorhus/xo and standard/standard (Standard is a JavaScript linter that enforces a built-in style guide and provides auto-fix, but it is not extensible via plugins or custom rules, which is the core requirement for a pluggable linter). feross/standard and dense-analysis/ale round out the shortlist. Compare the match explanations and check the project documentation against your requirements.
Extensible static analysis tools that identify common programming errors and enforce code quality in JavaScript.
This project is a static analysis engine designed to identify patterns, enforce coding standards, and automate code quality improvements in software projects. By parsing source code into structured abstract syntax trees, it enables deep programmatic inspection and the automated remediation of identified programming issues. The engine functions as a pluggable linting framework, allowing developers to extend its core capabilities through a modular architecture. Users can inject custom rules, parsers, and processors to support non-standard file formats or domain-specific logic. This extensibilit
ESLint is the leading pluggable JavaScript linter, offering a vast plugin ecosystem, custom rule creation, AST-based static analysis, auto-fix, and deep IDE integration—exactly what you need for extensible bug detection and code quality enforcement.
xo is a zero-config linting tool and ESLint wrapper that provides opinionated default rules for JavaScript and TypeScript. It functions as a static analysis tool to enforce code style and readability standards immediately upon installation without requiring manual configuration. The tool distinguishes itself by providing a zero-config development workflow that eliminates the need for complex configuration files. It supports incremental codebase cleanup by allowing users to ignore known violations through a suppressions file, facilitating the gradual adoption of strict rules in existing projec
xo is a zero-config linting tool built on ESLint that performs AST-based static analysis and supports modern JavaScript and TypeScript, but its opinionated defaults and wrapper design may limit custom rule creation and configuration flexibility compared to a fully pluggable linter.
Standard is a suite of static analysis tools for JavaScript, comprising a linter, formatter, and a predefined style guide. It functions as a static code analyzer that scans source code for style violations and potential errors without executing the program. The project provides an automatic code fixer that rewrites source code to resolve formatting issues and enforce syntax consistency. It implements a standardized set of rules for JavaScript formatting and syntax to ensure a uniform appearance across different projects. The system covers a wide range of static analysis capabilities, includi
Standard is a JavaScript linter that enforces a built-in style guide and provides auto-fix, but it is not extensible via plugins or custom rules, which is the core requirement for a pluggable linter.
Standard is a zero-configuration static analyzer, linter, and formatter for JavaScript. It functions as a style guide that enforces consistent coding rules and identifies programming errors without requiring manual configuration files. The tool distinguishes itself by providing an automatic code fixer that scans source files to correct style violations and ensure a uniform codebase. It implements a predefined rule set to eliminate the need for project-specific configuration. The project covers a broad range of static analysis capabilities, including support for experimental language syntax a
Standard is a zero-configuration JavaScript linter and formatter with a fixed rule set and built-in auto-fix, making it good for enforcing consistency but not the extensible, plugin-based static analysis tool this search asks for—it lacks plugin support and custom rule creation.
Ale is an asynchronous code analysis tool and integrated development environment plugin designed for lightweight text editors. It functions as a language server protocol client, enabling real-time code intelligence and diagnostic feedback by running analysis tasks in the background to ensure the editor interface remains responsive during intensive operations. The plugin utilizes an event-driven architecture to monitor text buffers and trigger linting or formatting routines automatically. It distinguishes itself through a modular extensibility framework that supports a wide range of language-s
ALE is a Vim/Neovim plugin that orchestrates external linters and language servers for real-time feedback, but it is not a standalone pluggable JavaScript linter itself—it delegates analysis to tools like ESLint rather than providing its own static analysis engine with a plugin system.
SwiftLint is a static analysis tool and code formatter designed to enforce consistent coding styles and identify semantic issues within Swift source code. It functions as a command-line utility that evaluates code against established conventions to ensure uniform structure and architectural standards across a project. The tool distinguishes itself through a custom linting engine that leverages compiler-integrated syntax analysis to perform deep inspections of code structure. Beyond simple pattern matching, it supports automated source code transformation to correct formatting violations and r
This is a static analysis linter for Swift, not JavaScript, so it cannot detect bugs in JavaScript code or use JavaScript plugins, which is the core requirement of your search.
eslint-plugin-unicorn is an ESLint plugin that provides a large set of opinionated lint rules for JavaScript and TypeScript projects. Its primary purpose is to enforce code quality, prevent common errors and anti-patterns, and promote a consistent coding style across a codebase. The plugin distinguishes itself by offering an opinionated preset configuration that imposes a specific coding style rather than leaving all choices to the user. Its rules are specifically designed to catch logical mistakes and code smells that go beyond standard ESLint rules. As an added capability, the plugin also e
This is an ESLint plugin that adds opinionated lint rules, not the extensible linter itself — for a pluggable JavaScript linter, look at ESLint or similar tools that support plugins and custom rule creation.
Ruff is a high-performance static analysis and code formatting tool designed for Python. Built in Rust, it functions as a comprehensive engine that scans source code to detect programming errors, security vulnerabilities, and deviations from established coding standards. By parsing source code into a structured tree representation, it provides both automated linting and style enforcement across entire projects. The tool distinguishes itself through its speed and deep integration into the development lifecycle. It utilizes parallelized file processing to maximize throughput on large codebases
Ruff is a high-performance static analysis and formatting tool for Python, not JavaScript, so it does not match the search for a JavaScript-specific linter despite being a pluggable linting tool.
Stylelint is a static code analysis tool and linter for CSS and style-like languages. It identifies errors, enforces coding conventions, and operates as a PostCSS plugin to validate stylesheets during build pipelines. The project distinguishes itself through support for non-standard syntaxes, including preprocessor parsing for SCSS and Less, and the ability to extract and lint embedded styles from JavaScript, HTML, and template literals. It features an automated fixing system that programmatically corrects repairable styling violations to ensure consistency. The system provides a plugin arch
Stylelint is a fully-featured pluggable linter with AST-based analysis, custom rules, and auto-fix, but it is built for CSS and style languages, not JavaScript — the wrong domain for this search.
coc.nvim is a Node.js extension host and Language Server Protocol client that transforms Vim and Neovim into a full integrated development environment. It provides a framework for executing JavaScript and TypeScript plugins within a separate process to enable advanced IDE features without blocking the editor's main thread. The project is distinguished by its ability to host extensions and language servers through a centralized JSON configuration. It supports the installation and lifecycle management of third-party extensions from registries or local files, allowing users to customize language
coc.nvim is an LSP client and extension host for Vim/Neovim, not a dedicated static analysis tool—it can integrate JavaScript linters through language servers, but does not provide its own plugin-driven linting engine or rule creation.
Lapce is a high-performance text editor built with Rust that utilizes hardware acceleration for fast rendering and responsiveness. It functions as a modal text editor with Vim-style keybindings to minimize hand movement, an LSP client for language intelligence, and a remote development environment for editing files and executing code on distant servers. The editor features an extensible architecture based on the WebAssembly System Interface, allowing it to execute plugins compiled to WASI for cross-language functionality. It further distinguishes itself by implementing the Debug Adapter Proto
Lapce is a high-performance text editor with plugin extensibility via WASI and LSP-based language intelligence, but it is an editor, not a dedicated JavaScript linter with AST-based static analysis and custom rule creation as its core purpose.
This project is a static analysis engine and type checker designed for PHP codebases. It evaluates source code structure and type annotations to identify potential bugs, type mismatches, and logic errors without executing the application. By parsing code into an abstract syntax tree and applying a rule-based validation framework, it enforces code quality and safety standards across a project. What distinguishes this tool is its sophisticated type inference engine, which models dynamic language features, magic methods, and conditional types to maintain accuracy even in unconventional code. It
This is a static analysis engine for PHP, not JavaScript; while it matches the idea of pluggable static analysis, it is built for a completely different language ecosystem, so it does not fit a search for JavaScript linting tools.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| eslint/eslint | 27.3K | JavaScript | MIT | |
| sindresorhus/xo | 8K | TypeScript | MIT | |
| standard/standard |
| 29.4K |
| JavaScript |
| MIT |
| feross/standard | 29.4K | JavaScript | MIT |
| dense-analysis/ale | 14K | Vim Script | bsd-2-clause |
| realm/swiftlint | 19.5K | Swift | mit |
| sindresorhus/eslint-plugin-unicorn | 4.9K | JavaScript | mit |
| astral-sh/ruff | 48.2K | Rust | MIT |
| stylelint/stylelint | 11.5K | JavaScript | MIT |
| neoclide/coc.nvim | 25.2K | TypeScript | NOASSERTION |