Дублирование кода (Code Clone)
ID: code_clone | Степень критичности: Средняя (по умолчанию)
Этот детектор находит повторяющиеся блоки кода в вашем проекте. Он использует AST-токенизацию для поиска точных совпадений, игнорируя различия в форматировании и комментариях.
Почему это «запах»
- Избыточность поддержки: Исправление ошибки или внесение изменений в одном месте требует обновления всех дубликатов.
- Нарушение DRY: Дублирование — явный признак отсутствия абстракции или повторного использования.
- Несогласованная эволюция: Со временем дубликаты могут начать различаться, что ведет к трудноуловимым ошибкам и сложному рефакторингу.
Как исправить
- Extract Method: Вынесите общую логику в отдельную функцию и вызывайте её из нескольких мест.
- Generic Components: Для UI-кода создайте переиспользуемый компонент с пропсами.
- Utility Modules: Перенесите общую вспомогательную логику в общий утилитарный файл.
Конфигурация
yaml
rules:
code_clone:
enabled: true
severity: medium
min_tokens: 50
min_lines: 6Параметры
min_tokens: Минимальное количество нормализованных токенов для детекции дубликата (по умолчанию: 50).min_lines: Минимальное количество строк, которое должен занимать дубликат (по умолчанию: 6).
ESLint правило
Этот детектор доступен как правило ESLint для получения обратной связи в реальном времени.
javascript
// eslint.config.js
export default [
{
rules: {
'@archlinter/no-code-clone': 'warn',
},
},
];Смотрите Интеграция с ESLint для инструкций по настройке.