Skip to content

Linter reference (50 languages)

OpenFiles doesn’t lint anything itself. It opens files so the extensions below can do their job. Run Doctor checks which of these your workspace needs.

Scope column:

  • Open: diagnostics only for open files by default.
  • Workspace: analyzes the whole project.
  • Verified means we found the default in the extension’s own settings or docs (see Evidence).
  • The rest is what we expect from how the tool works.
# Language Extension Open VSX Scope
1 TypeScript built-in + ESLint Open (verified)
2 JavaScript built-in + ESLint, Biome, Oxc Open (verified)
3 Python Pylance, Ruff, Mypy Pylance ❌ → basedpyright Open (verified)
4 Java Language Support for Java Workspace
5 C# C# / C# Dev Kit ❌ → muhammad-sammy.csharp Open (verified)
6 C / C++ C/C++, clangd cpptools ❌, clangd ✅ Open
7 HTML built-in + HTMLHint Open
8 CSS / SCSS / Less built-in + Stylelint Open
9 SQL SQLFluff, MSSQL Open
10 Bash / Shell ShellCheck, Bash IDE Open
11 PowerShell PowerShell Open
12 PHP Intelephense, PHPStan, PHP Tools Open (verified, Intelephense)
13 Go Go Workspace (verified)
14 Rust rust-analyzer Workspace, on save in the editor (verified)
15 Kotlin Kotlin LSP, fwcd.kotlin ?
16 Lua Lua Workspace after a delay
17 Ruby Ruby LSP Open (verified)
18 Dart / Flutter Dart Workspace (verified)
19 Swift Swift Open
20 JSON / JSONC built-in (schemas) built-in Open
21 YAML YAML Open
22 Markdown markdownlint Open
23 Dockerfile Docker DX, hadolint Open
24 Terraform / HCL HashiCorp Terraform Open / module
25 R R Open
26 Julia Julia ?
27 Scala Metals Workspace (compile)
28 Haskell Haskell Open
29 Elixir ElixirLS, Lexical elixir-lsp.elixir-ls Workspace (mix compile)
30 Erlang Erlang LS ?
31 Clojure Calva Workspace on startup
32 F# Ionide Open
33 OCaml OCaml Platform Open
34 Zig Zig Open
35 Perl Perl Navigator Open
36 Fortran Modern Fortran Open
37 MATLAB MATLAB Open
38 Objective-C clangd Open
39 Delphi / Object Pascal DelphiLSP ?
40 Ada Ada & SPARK ?
41 COBOL COBOL Language Support Open
42 Solidity Hardhat Solidity, Solidity Open
43 Vue Vue - Official Open
44 Svelte Svelte for VS Code Open
45 Astro Astro Open
46 GraphQL GraphQL Open
47 TOML Even Better TOML Open
48 XML XML Open
49 Prisma Prisma Open
50 Protobuf Buf Open

More languages with good extensions: LaTeX (LaTeX Workshop), Gleam, Nim, Elm, Crystal, V, Mojo, Groovy, Nix, Ansible, CMake, GitHub Actions, Tailwind CSS.

Languages were chosen from the Stack Overflow 2025 survey, GitHub Octoverse 2025 and the TIOBE index, plus common config formats. Extension IDs were checked against both registries in September 2026.

Open files only by default:

  • TypeScript: typescript.tsserver.experimental.enableProjectDiagnostics is false, described as “Enables project wide error reporting”. package.json
  • ESLint: eslint.run is onType, and eslint.lintTask.enable (“a task for linting the whole workspace”) is false. package.json
  • Pylance / Pyright: python.analysis.diagnosticMode is openFilesOnly. “If this option is set to ‘openFilesOnly’, pyright analyzes only open files.” Pyright settings
  • C#: dotnet.backgroundAnalysis.analyzerDiagnosticsScope and compilerDiagnosticsScope are openFiles. package.json
  • PHP Intelephense: intelephense.diagnostics.run is onType, with no workspace mode (#1467). package.json
  • Ruby LSP: pull diagnostics per document; the server registers workspace_diagnostics: false. server.rb

Whole workspace by default:

  • Dart: onlyAnalyzeProjectsWithOpenFiles defaults to false. LSP spec
  • gopls: workspace diagnostics are recomputed after about 1 s idle. diagnostics.md
  • rust-analyzer: checkOnSave and check.workspace are true, but the check only runs on save in the editor. package.json
  • Java: java.autobuild.enabled is true. package.json

Found something out of date? Open an issue, since defaults change.