HumanifyJS - Как AI помогает разобрать запутанный JavaScript
Представьте: вы получаете минифицированный JavaScript файл с непонятными именами переменных вроде a, b, c. Знакомая ситуация? HumanifyJS решает эту проблему с помощью искусственного интеллекта, превращая нечитаемый код в понятный и поддерживаемый.
Что это за инструмент?
HumanifyJS — это утилита для:
- Декомпиляции минифицированного JavaScript
- Восстановления осмысленных имен переменных и функций
- Форматирования кода
Причем делает это не просто механически, а с помощью больших языковых моделей (ChatGPT, Gemini или локальных LLM), которые понимают контекст кода.
Как это работает?
- Анализ AST: Сначала код разбирается на абстрактное синтаксическое дерево (AST) с помощью Babel
- AI-подсказки: LLM анализирует код и предлагает осмысленные имена для переменных
- Трансформация: Babel применяет изменения, сохраняя функциональность кода 1:1
Пример трансформации
До:
function a(e,t){var n=[];var r=e.length;var i=0;for(;i<r;i+=t){if(i+t<r){n.push(e.substring(i,i+t))}else{n.push(e.substring(i,r))}}return n}
После:
function splitString(inputString, chunkSize) {
var chunks = [];
var stringLength = inputString.length;
var startIndex = 0;
for (; startIndex < stringLength; startIndex += chunkSize) {
if (startIndex + chunkSize < stringLength) {
chunks.push(inputString.substring(startIndex, startIndex + chunkSize));
} else {
chunks.push(inputString.substring(startIndex, stringLength));
}
}
return chunks;
}
Кому это нужно?
- Разработчикам, работающим с legacy-кодом
- Аналитикам безопасности, исследующим минифицированные скрипты
- Фронтендерам, отлаживающим сторонние библиотеки
- Любому, кто устал разбирать непонятный минифицированный код
Как использовать?
Установка
npm install -g humanifyjs
Три режима работы:
- OpenAI/Gemini — самый точный, но требует API-ключей
- Локальный — бесплатный, но менее точный и требует мощного железа
- Гибридный — можно комбинировать подходы
Пример запуска с ChatGPT:
export OPENAI_API_KEY="ваш_ключ"
humanify openai ваш_файл.js
Плюсы и минусы
✅ Преимущества:
- Поддержка нескольких LLM (ChatGPT, Gemini, локальные модели)
- Работает с большими файлами
- Поддержка Apple M-чипов для ускорения обработки
⚠️ Ограничения:
- OpenAI/Gemini режимы требуют API-ключей и могут быть платными
- Локальный режим требует мощного железа
- Не идеальная точность (но лучше, чем ничего!)
HumanifyJS — это тот инструмент, который хочется иметь под рукой каждому разработчику. Он особенно полезен при:
- Анализе стороннего кода
- Работе с унаследованными проектами
- Исследовании минифицированных библиотек
Попробуйте — и вы удивитесь, сколько времени сможете сэкономить на разборе непонятного кода.
