ESLint configured
Why it matters
Without ESLint or Biome, code quality issues — unused variables, implicit any, unsafe type assertions, missing await, console.log in production — are caught only by the developer's own review discipline rather than automatically on every commit. ISO 25010:2011 §6.5.4 classifies absent static analysis as a maintainability defect. The practical effect: every code review must manually check for issues that a linter would flag in milliseconds, and issues that slip through become permanent residents of the codebase.
Severity rationale
Low because absent linting does not cause immediate failures but means an entire category of preventable defects — unused variables, unsafe patterns, style violations — is caught only by manual review, if at all.
Remediation
Set up ESLint with TypeScript support and wire it into CI. A minimal configuration:
npm install -D eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin
// eslint.config.mjs
import tseslint from '@typescript-eslint/eslint-plugin'
import tsparser from '@typescript-eslint/parser'
export default [
{
files: ['**/*.ts', '**/*.tsx'],
languageOptions: { parser: tsparser },
plugins: { '@typescript-eslint': tseslint },
rules: {
...tseslint.configs.recommended.rules,
'@typescript-eslint/no-explicit-any': 'error',
'@typescript-eslint/no-unused-vars': 'error',
'no-console': ['error', { allow: ['error', 'warn'] }],
},
},
]
Add to package.json:
{ "scripts": { "lint": "eslint src/ --max-warnings=0" } }
Detection
-
ID:
eslint-configured -
Severity:
low -
What to look for: Check for ESLint configuration files:
eslint.config.js,eslint.config.mjs,.eslintrc.js,.eslintrc.cjs,.eslintrc.json,.eslintrc.yaml. Alternatively, check for Biome (biome.json) which serves as a combined linter and formatter. Verify that the configuration extends appropriate rulesets:eslint:recommendedfor base JavaScript,@typescript-eslint/recommendedor@typescript-eslint/strictfor TypeScript. Check whether alintscript is inpackage.json. Look for ESLint indevDependencies. A missing ESLint configuration means code quality issues (unused variables, implicit any, unsafe patterns) are caught only by the developer's judgment rather than automatically on every commit. -
Pass criteria: Enumerate all relevant code locations. ESLint or Biome is configured, extends a TypeScript-aware ruleset, and is run via a
lintscript. Thelintscript runs in CI with at least 1 verified location. -
Fail criteria: No ESLint or Biome configuration found. A partial implementation does not count as pass.
-
Skip (N/A) when: Never — linting applies to all JavaScript/TypeScript projects.
-
Cross-reference: Compare with
code-quality-essentials.organization.naming-conventions— ESLint enforces naming rules programmatically while naming-conventions evaluates adherence manually. -
Detail on fail:
"No ESLint configuration found; code quality issues are not automatically caught during development or CI" -
Remediation: Set up ESLint with TypeScript support:
npm install -D eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin// eslint.config.mjs import tseslint from '@typescript-eslint/eslint-plugin' import tsparser from '@typescript-eslint/parser' export default [ { files: ['**/*.ts', '**/*.tsx'], languageOptions: { parser: tsparser }, plugins: { '@typescript-eslint': tseslint }, rules: { ...tseslint.configs.recommended.rules, '@typescript-eslint/no-explicit-any': 'error', '@typescript-eslint/no-unused-vars': 'error', 'no-console': ['error', { allow: ['error', 'warn'] }], }, }, ]Add to
package.json:{ "scripts": { "lint": "eslint src/ --max-warnings=0" } }
External references
- iso-25010:2011 · maintainability.modifiability — Maintainability — Modifiability
Taxons
History
- 2026-04-18·v1.0.0·Initial import from code-quality-essentials·automated