Анализ сложности кода
Анализируйте сложность исходного кода, чтобы обнаружить обфускацию и оценить качество кода. Измеряйте цикломатическую сложность, глубину вложенности, длину функций, качество идентификаторов и энтропию Шеннона. Получайте оценку читаемости (A–F) с индикаторами обфускации, помеченными по серьёзности. 100 % приватно — вся обработка происходит в вашем браузере.
Code Complexity Analyzer
Paste source code above or choose a quick example to analyze its complexity
100% Private: All code complexity analysis happens entirely in your browser. Your source code is never sent to any server. No data leaves your device.
Анализ сложности кода
[ ]
Вставьте исходный код выше или выберите быстрый пример, чтобы проанализировать его сложность
100 % приватно: весь анализ сложности кода выполняется полностью в вашем браузере. Ваш исходный код никогда не отправляется на сервер. Никакие данные не покидают устройство.
- Скопировано!: Отчёт анализа скопирован в буфер обмена.
- Не удалось скопировать: Не удалось скопировать в буфер обмена.
Зачем использовать наш анализ сложности кода?
- Оценка цикломатической сложности: Рассчитывайте цикломатическую сложность, подсчитывая точки принятия решений в коде — if/else, циклы for/while, ветви switch, блоки catch, тернарные операторы и логические операторы. Более высокие значения указывают на код, который сложнее тестировать и сопровождать и который может быть намеренно обфусцирован.
- Анализ глубины вложенности: Анализируйте максимальную и среднюю глубину вложенности по всей кодовой базе. Глубоко вложенные структуры (5+ уровней) — характерный признак обфусцированного или машинно-сгенерированного кода. Наш анализатор учитывает и вложенность по скобкам, и вложенность по отступам для всех языков.
- Обнаружение признаков обфускации: Автоматически выявляет тревожные сигналы: короткие идентификаторы (в среднем < 5 символов), hex-подобные имена переменных (формат _0x), аномально длинные функции (100+ строк), крайне высокую энтропию, скупые комментарии и чрезмерную вложенность. Каждый флаг сопровождается оценкой серьёзности и понятным объяснением.
- 100 % приватная обработка в браузере: Весь анализ сложности кода выполняется локально в вашем браузере на чистом JavaScript. Ваш исходный код никогда не покидает устройство — без загрузок на сервер, логирования данных и проблем с приватностью. 100 % бесплатно и без регистрации.
Типичные случаи использования анализа сложности кода
- Проверка кода на безопасность: Отмечайте потенциально вредоносный или обфусцированный код в pull request'ах и присланных фрагментах. Всплески сложности, подозрительно короткие идентификаторы и аномальные шаблоны энтропии помогают проверяющим выявить код, требующий более внимательного изучения перед развёртыванием.
- Аудит качества кода: Оценивайте состояние кодовой базы, измеряя цикломатическую сложность, глубину вложенности и длину функций в проекте. Находите функции, превышающие пороги сопровождаемости, и расставляйте приоритеты рефакторинга на основе количественных данных о сложности.
- Анализ вредоносного кода и полезных нагрузок: Проверяйте подозрительные скрипты на признаки обфускации до запуска в песочнице. Крайне высокая энтропия, минифицированные однострочные функции, hex-подобные имена переменных и почти полное отсутствие комментариев — частые признаки вредоносных нагрузок.
- Обучение программированию: Помогайте студентам понять концепции сложности кода, визуализируя цикломатическую сложность, глубину вложенности и метрики качества идентификаторов. Сравнивайте хорошо структурированный код с обфусцированными примерами рядом друг с другом и с количественным анализом.
- Проверка сторонних библиотек: Оценивайте open-source пакеты и встроенные зависимости на обфускацию перед интеграцией в проект. Автоматический анализ сложности помогает выявить подозрительный код, который ручная проверка может пропустить в больших кодовых базах.
- Приоритизация рефакторинга: Определите самые сложные функции в кодовой базе, чтобы расставить приоритеты рефакторинга. Функции с цикломатической сложностью выше 15, глубиной вложенности выше 5 или длиной более 50 строк — главные кандидаты на упрощение и улучшение тестирования.
Что такое анализ сложности кода?
Анализ сложности кода — это процесс измерения того, насколько сложен фрагмент исходного кода, с помощью количественных метрик. Он выходит за рамки простого подсчёта строк и оценивает структурные характеристики: число независимых путей в коде (цикломатическую сложность), глубину вложенности блоков, длину функций и осмысленность имён идентификаторов. В контексте обнаружения обфускации анализ сложности — мощный инструмент, поскольку обфусцированный код обычно демонстрирует экстремальные значения сразу по нескольким метрикам: очень короткие идентификаторы, глубоко вложенный поток управления и аномально высокую цикломатическую сложность, из-за которых код трудно понять. Наш анализатор сравнивает эти метрики с установленными порогами и автоматически отмечает подозрительные шаблоны.
Как работает наш анализ сложности кода
- Разбор: Вставьте исходный код и выберите подходящий язык. Анализатор разбирает код, чтобы определить функции, структуры потока управления, идентификаторы, комментарии и токены — реальная компиляция не требуется.
- Измерение: Движок вычисляет шесть ключевых метрик: цикломатическую сложность (подсчёт точек принятия решений), глубину вложенности (максимальную и среднюю), длину функций (макс., мин., среднюю), анализ длины идентификаторов (средняя и крайние значения), соотношение комментариев к коду и энтропию Шеннона распределения символов.
- Пометка и оценка: Каждая метрика сравнивается с порогами обфускации, чтобы сформировать точечные флаги с оценками серьёзности. Общая оценка читаемости (0-100) и буквенная оценка (A-F) кратко отражают прозрачность кода.
Разбор ключевых метрик сложности
- Цикломатическая сложность: Считает число линейно независимых путей в коде. Каждый if, else, for, while, case, catch, && и || добавляет путь. Значения ниже 10 считаются здоровыми; выше 15 — подозрительно; выше 30 — явно указывает на обфускацию.
- Глубина вложенности: Измеряет, на сколько уровней вложены блоки кода. 3-4 уровня — норма для сложной логики. 5-7 — подозрительно. Свыше 8 уровней — почти наверняка обфусцированный или машинно-сгенерированный код.
- Длина идентификаторов: Обфусцированный код использует очень короткие идентификаторы (a, b, _0x). Средняя длина менее 5 символов без длинных идентификаторов — сильный признак обфускации. Хорошо написанный код в среднем имеет 6–12 символов на идентификатор.
- Энтропия токенов: Энтропия Шеннона измеряет случайность распределения символов. У естественного кода энтропия около 4,0-4,8 бит/символ. Обфусцированный или закодированный код часто превышает 5,0 бит/символ из-за hex-строк и рандомизированных токенов.
Приватность, безопасность и доступность
100 % приватно: весь анализ кода, вычисление метрик и генерация флагов выполняются полностью в вашем браузере на чистом JavaScript. Ваш исходный код никогда не покидает устройство — без загрузок на сервер, логирования данных и аналитического отслеживания.
Полностью бесплатно: наш анализатор сложности кода был и остаётся бесплатным. Без регистрации, ограничений на использование и ограничений по размеру файла. Пользуйтесь без ограничений для любого проекта — коммерческого, личного или учебного.
Часто задаваемые вопросы
Анализ сложности кода — это процесс измерения исходного кода с помощью количественных метрик: цикломатической сложности, глубины вложенности, длины функций и качества идентификаторов. Эти метрики помогают оценить сопровождаемость, выявить потенциальные ошибки и обнаружить признаки обфускации.
Цикломатическая сложность считает число линейно независимых путей в коде. Каждый if/else, for, while, case, catch, тернарный оператор и логические AND/OR добавляют путь. Значения ниже 10 считаются здоровыми, выше 15 — подозрительными, выше 30 — явно указывают на обфускацию.
Глубина вложенности 3-4 — норма, 5-7 — подозрительно, а свыше 8 — почти наверняка обфусцированный или машинно-сгенерированный код. Чрезмерно глубокая вложенность — характерный признак автоматических инструментов обфускации.
Обфусцированный код использует очень короткие бессмысленные идентификаторы (a, b, _0x). Средняя длина идентификатора менее 5 символов без осмысленных имён — сильный признак обфускации. Хорошо написанный код в среднем имеет 6–12 символов на идентификатор.
Энтропия Шеннона измеряет случайность символов. У типичного кода 4,0-4,8 бит/символ. Обфусцированный или закодированный код часто превышает 5,0 бит/символ из-за hex-строк и рандомизированных токенов, что делает энтропию мощным индикатором обфускации.
Ни один инструмент не обнаруживает всю обфускацию. Наш анализатор сосредоточен на структурных индикаторах — сложности, вложенности, именовании и энтропии. Он эффективен против минификации, переименования переменных и выравнивания потока управления, но для рантайм- или криптографической обфускации может потребоваться динамический анализ.
Безусловно. Весь разбор, вычисление метрик, генерация флагов и оценка выполняются полностью в вашем браузере. Ваш исходный код никогда не покидает устройство. Никакие данные не загружаются на сервер — обработка на 100 % приватна и локальна.
Анализатор поддерживает JavaScript/TypeScript, Python, Java, C#, C, C++, Go и Rust через четыре языковых режима. Каждый режим настраивает разбор под синтаксис языка: например, двоеточия в Python или блоки в фигурных скобках.
Да, на 100 % бесплатный без скрытых затрат. Без регистрации, ограничений на использование, ограничений по размеру файла и рекламы. Пользуйтесь без ограничений для любого проекта — коммерческого, личного или учебного.