Skip to content

Мертвый код

ID: dead_code | Степень критичности: Низкая (по умолчанию)

Мертвый код — это экспортируемые функции, классы или переменные, которые не импортируются и не используются больше нигде в проекте.

Почему это «запах»

  • Обуза при поддержке: Разработчики могут тратить время на обновление или рефакторинг кода, который даже не используется.
  • Размер бандла: Увеличивает итоговый размер приложения (хотя многие сборщики выполняют tree-shaking).
  • Путаница: Интерфейс (API) модуля кажется больше и сложнее, чем он есть на самом деле.

Примеры

Плохо

typescript
// utils.ts
export const usedHelper = () => { ... };
export const unusedHelper = () => { ... }; // Отмечается как мертвый код

// main.ts
import { usedHelper } from './utils';

Как исправить

  1. Удалите его: Если код действительно не используется, лучшее решение — удаление.
  2. Отметьте как точку входа: Если это часть публичного API или динамический импорт, добавьте его в entry_points в вашей конфигурации.

Конфигурация

yaml
# Опции правила
rules:
  dead_code:
    exclude:
      - '**/tests/**'
      - '**/temp/**'

# Глобальные опции (корневой уровень)
entry_points:
  - 'src/index.ts'
  - 'src/api/**/*.ts'

Опции

Опции правила (rules.dead_code)

  • exclude: Список glob-паттернов для игнорирования при поиске мертвого кода. Файлы, соответствующие этим паттернам, будут рассматриваться так, как будто они не существуют для анализа входящих зависимостей.

Глобальные опции (корневой уровень)

  • entry_points: Глобальные точки входа, которые никогда не должны помечаться как мертвый код.

ESLint правило

Этот детектор доступен как правило ESLint для получения обратной связи в реальном времени.

javascript
// eslint.config.js
export default [
  {
    rules: {
      '@archlinter/no-dead-code': 'warn',
    },
  },
];

Смотрите Интеграция с ESLint для инструкций по настройке.

Released under the MIT License.