Категории

Анализатор Сложности Кода

Оценивает цикломатическую и когнитивную сложность, вложенность и дубли

Выполняет эвристический анализ качества кода для JavaScript, TypeScript, Python, Java и Go.

Примеры результатов

2 Примеры

Проанализировать ветвистую JavaScript-функцию

Оценивает цикломатическую и когнитивную сложность вложенной функции расчета с жесткими порогами.

{
  "summary": {
    "language": "javascript",
    "functionCount": 1,
    "averageCyclomaticComplexity": 5,
    "averageCognitiveComplexity": 4,
    "hotspotCount": 0,
    "longFunctionCount": 0,
    "deepNestingCount": 1,
    "duplicateClusters": 0
  },
  "functions": [
    {
      "name": "score",
      "cyclomaticComplexity": 5,
      "deepNesting": true
    }
  ]
}
Показать параметры ввода
{ "sourceCode": "function score(order) {\n if (!order) return 0;\n let total = 0;\n for (const item of order.items) {\n if (item.discount) {\n total += item.price * 0.8;\n } else if (item.vip) {\n total += item.price * 0.9;\n } else {\n total += item.price;\n }\n }\n return total;\n}", "language": "javascript", "longFunctionThreshold": 8, "nestingThreshold": 2, "duplicateWindow": 4 }

Найти дублирующуюся логику нормализации в Python

Показывает повторяющиеся helper-функции и подтверждает дубли по похожим блокам кода.

{
  "summary": {
    "language": "python",
    "functionCount": 2,
    "duplicateClusters": 1
  },
  "duplicates": [
    {
      "occurrences": 2,
      "lines": [
        1,
        6
      ]
    }
  ]
}
Показать параметры ввода
{ "sourceCode": "def normalize_user(row):\n email = row[\"email\"].strip().lower()\n if not email:\n return None\n return {\"email\": email, \"team\": row.get(\"team\", \"general\")}\n\ndef normalize_admin(row):\n email = row[\"email\"].strip().lower()\n if not email:\n return None\n return {\"email\": email, \"team\": row.get(\"team\", \"general\")}", "language": "python", "longFunctionThreshold": 20, "nestingThreshold": 3, "duplicateWindow": 3 }

Ключевые факты

Категория
Development
Типы входных данных
textarea, select, number
Тип результата
json
Покрытие примерами
4
API доступен
Yes

Обзор

Code Complexity Analyzer оценивает цикломатическую и когнитивную сложность, глубину вложенности, длинные функции и повторяющуюся логику.

Когда использовать

  • Когда нужен быстрый сигнал о качестве кода перед ревью или рефакторингом.
  • Когда техническому лидеру нужно найти самые рискованные функции.
  • Когда нужно сравнить поддерживаемость кода на JavaScript, TypeScript, Python, Java и Go.
  • Когда дублирование и глубокая вложенность уже мешают разработке.

Как это работает

  • Вы вставляете код и выбираете язык либо используете автоопределение.
  • Инструмент выделяет функции и логические блоки с помощью эвристик.
  • Затем он оценивает ветвления, вложенность и когнитивную нагрузку.
  • В результате вы получаете hotspots, дубли и предложения по улучшению.

Сценарии использования

Приоритизация рефакторинга перед релизом.
Анализ legacy кода на предмет узких мест поддержки.
Обучение команды влиянию ветвлений и вложенности на читаемость.
Добавление легкого статического анализа в инженерный процесс.

Примеры

1. Определить приоритеты рефакторинга в legacy модуле

Технический лидер
Контекст
Backend модуль разрастался много лет и накопил сложные условия и вложенность.
Проблема
Команда хочет понять, какие функции стоит рефакторить в первую очередь.
Как использовать
Вставьте код модуля, используйте автоопределение и изучите список hotspots и дублей.
Пример конфигурации
Язык: Auto Detect. Порог длинной функции: 50. Порог вложенности: 4.
Результат
Команда получает ранжированный список самых сложных функций и точки для начала очистки.

Проверить на примерах

development

Связанные хабы

FAQ

Это полноценный AST анализатор?

Нет. Это быстрый эвристический анализатор, который дает полезные сигналы без тяжелой инфраструктуры.

Какие языки поддерживаются?

Поддерживаются JavaScript, TypeScript, Python, Java и Go, есть автоопределение.

Можно ли найти дубли кода?

Да. Инструмент ищет повторяющиеся нормализованные окна строк.

Есть ли советы по улучшению?

Да. Для проблемных функций предлагаются идеи по уменьшению ветвлений, извлечению helper-функций и упрощению потока.

Документация API

Конечная точка запроса

POST /ru/api/tools/code-complexity-analyzer

Параметры запроса

Имя параметра Тип Обязательно Описание
sourceCode textarea Да -
language select Нет -
longFunctionThreshold number Нет -
nestingThreshold number Нет -
duplicateWindow number Нет -

Формат ответа

{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}
Данные JSON: Данные JSON

Документация MCP

Добавьте этот инструмент к конфигурации сервера MCP:

{
  "mcpServers": {
    "elysiatools-code-complexity-analyzer": {
      "name": "code-complexity-analyzer",
      "description": "Оценивает цикломатическую и когнитивную сложность, вложенность и дубли",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=code-complexity-analyzer",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

Вы можете объединять несколько инструментов, например: `https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`, максимум 20 инструментов.

Если вы столкнулись с проблемами, пожалуйста, свяжитесь с нами по адресу [email protected]