Мертвый код
ID: dead_code | Степень критичности: Низкая (по умолчанию)
Мертвый код — это экспортируемые функции, классы или переменные, которые не импортируются и не используются больше нигде в проекте.
Почему это «запах»
- Обуза при поддержке: Разработчики могут тратить время на обновление или рефакторинг кода, который даже не используется.
- Размер бандла: Увеличивает итоговый размер приложения (хотя многие сборщики выполняют tree-shaking).
- Путаница: Интерфейс (API) модуля кажется больше и сложнее, чем он есть на самом деле.
Примеры
Плохо
typescript
// utils.ts
export const usedHelper = () => { ... };
export const unusedHelper = () => { ... }; // Отмечается как мертвый код
// main.ts
import { usedHelper } from './utils';Как исправить
- Удалите его: Если код действительно не используется, лучшее решение — удаление.
- Отметьте как точку входа: Если это часть публичного 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 для инструкций по настройке.