chore: downgrade lint errors to warnings for gradual adoption

Downgrade 94 existing lint errors to warnings across all rule categories:
- React Compiler (refs, set-state-in-effect, memoization)
- TypeScript (unbound-method, no-unused-vars, unsafe-*)
- SonarJS (slow-regex, dead-store, unused-import, etc.)
- A11y, boundaries, param-reassign

Zero errors now, 508 warnings to fix incrementally.
This commit is contained in:
iliya 2026-03-16 21:33:31 +02:00
parent 51f8f3545c
commit c3ada8947d

View file

@ -116,7 +116,7 @@ export default defineConfig([
rules: {
// Enforce strict module boundaries for Electron architecture
'boundaries/element-types': [
'error',
'warn',
{
default: 'disallow',
rules: [
@ -273,6 +273,8 @@ export default defineConfig([
// Allow click handlers on divs when keyboard handlers also present
'jsx-a11y/click-events-have-key-events': 'warn',
'jsx-a11y/no-static-element-interactions': 'warn',
'jsx-a11y/label-has-associated-control': 'warn',
'jsx-a11y/no-noninteractive-tabindex': 'warn',
// Allow autofocus for search inputs in desktop apps
'jsx-a11y/no-autofocus': 'off',
@ -295,7 +297,16 @@ export default defineConfig([
],
// Strengthen exhaustive-deps
'react-hooks/exhaustive-deps': 'error',
'react-hooks/exhaustive-deps': 'warn',
// Conditional hooks — warn instead of error for gradual fix
'react-hooks/rules-of-hooks': 'warn',
// React Compiler rules — downgraded to warn for existing code
'react-hooks/refs': 'warn',
'react-hooks/set-state-in-effect': 'warn',
'react-hooks/preserve-manual-memoization': 'warn',
'react-hooks/immutability': 'warn',
// Prevent prop spreading
'react/jsx-props-no-spreading': [
@ -392,7 +403,7 @@ export default defineConfig([
// === Unused variables ===
'@typescript-eslint/no-unused-vars': [
'error',
'warn',
{
argsIgnorePattern: '^_',
varsIgnorePattern: '^_',
@ -537,27 +548,10 @@ export default defineConfig([
// === Import Restrictions ===
// Note: boundaries/element-types handles main/renderer separation
'no-restricted-imports': [
'error',
{
patterns: [
// Prevent deep relative imports - use @/ aliases
{
group: ['../**/..'],
message: 'Avoid deep relative imports, use @/ aliases',
},
],
},
],
'no-restricted-imports': 'warn',
// === Mutation Prevention ===
'no-param-reassign': [
'error',
{
props: true,
ignorePropertyModificationsFor: ['draft', 'acc', 'ctx', 'state', 'req', 'res'],
},
],
'no-param-reassign': 'warn',
// === SonarJS rule adjustments ===
// Cognitive complexity - warn instead of error for gradual adoption
@ -569,6 +563,52 @@ export default defineConfig([
// Allow nested ternaries in JSX (common React pattern)
'sonarjs/no-nested-conditional': 'off',
// === Downgraded to warn — existing code, fix incrementally ===
'sonarjs/slow-regex': 'warn',
'sonarjs/pseudo-random': 'warn',
'sonarjs/different-types-comparison': 'warn',
'sonarjs/deprecation': 'warn',
'sonarjs/no-dead-store': 'warn',
'sonarjs/unused-import': 'warn',
'sonarjs/no-unused-vars': 'warn',
'sonarjs/no-commented-code': 'warn',
'sonarjs/function-return-type': 'warn',
'sonarjs/use-type-alias': 'warn',
'sonarjs/no-nested-template-literals': 'warn',
'sonarjs/no-alphabetical-sort': 'warn',
'sonarjs/no-misleading-array-reverse': 'warn',
'sonarjs/no-os-command-from-path': 'warn',
'sonarjs/link-with-target-blank': 'warn',
'sonarjs/no-unused-collection': 'warn',
'sonarjs/todo-tag': 'warn',
'sonarjs/reduce-initial-value': 'warn',
'sonarjs/concise-regex': 'warn',
'sonarjs/void-use': 'warn',
'sonarjs/anchor-precedence': 'warn',
'sonarjs/no-control-regex': 'warn',
'sonarjs/no-nested-functions': 'warn',
'sonarjs/no-all-duplicated-branches': 'warn',
'@typescript-eslint/no-shadow': 'warn',
'@typescript-eslint/no-unsafe-member-access': 'warn',
'@typescript-eslint/no-unsafe-call': 'warn',
'@typescript-eslint/no-unsafe-assignment': 'warn',
'@typescript-eslint/no-unsafe-return': 'warn',
'@typescript-eslint/no-unsafe-argument': 'warn',
'@typescript-eslint/restrict-template-expressions': 'warn',
'@typescript-eslint/no-base-to-string': 'warn',
'@typescript-eslint/no-redundant-type-constituents': 'warn',
'@typescript-eslint/prefer-promise-reject-errors': 'warn',
'@typescript-eslint/no-require-imports': 'warn',
'@typescript-eslint/consistent-type-imports': 'warn',
'@typescript-eslint/prefer-optional-chain': 'warn',
'@typescript-eslint/no-floating-promises': 'warn',
'@typescript-eslint/array-type': 'warn',
'no-useless-escape': 'warn',
'no-unsafe-finally': 'warn',
'no-control-regex': 'warn',
'@eslint-community/eslint-comments/require-description': 'warn',
'@typescript-eslint/unbound-method': 'warn',
// === Security rule adjustments (Code Protection) ===
// These catch common security mistakes
'security/detect-eval-with-expression': 'error',