Аудит и рефакторинг чужого кода
Аудит и рефакторинг чужого кода — услуга для компаний, которые столкнулись с типичной проблемой: программный продукт работает, но его невозможно развивать. Исходный код есть, но он написан без соблюдения стандартов, не содержит комментариев, а документация отсутствует. Или хуже — автор проекта пропал, а любое изменение приводит к неожиданным ошибкам. Мы проводим независимый аудит вашего существующего кода, оцениваем его качество, производительность и безопасность, после чего выполняем рефакторинг — приводим код в состояние, пригодное для дальнейшего сопровождения и развития.
Работаем с проектами на большом наборе языков и технологий: от небольших скриптов до крупных корпоративных систем. Принимаем в работу код без исходников (только скомпилированные файлы), восстанавливаем логику работы через reverse engineering. Все изменения согласовываем с вами, а после завершения передаем полную документацию и права на исходный код. В рамках услуги выполняем следующие работы:
- Аудит качества кода: анализ архитектуры, поиск скрытых дефектов и нарушений архитектуры (code smells), дублирований, неиспользуемых фрагментов, нарушений принципов SOLID.
- Анализ производительности: поиск узких мест (slow queries, неоптимальные алгоритмы, утечки памяти), нагрузочное тестирование.
- Анализ безопасности: поиск уязвимостей (SQL injection, XSS, CSRF), проверка зависимостей на известные CVE.
- Рефакторинг: переписывание «плохих» участков без изменения внешнего поведения, приведение к единому стилю, внедрение паттернов проектирования.
- Восстановление документации: описание архитектуры, API, схемы БД, инструкции по развертыванию и поддержке.
- Миграция с устаревших технологий: перевод с .NET Framework на .NET Core/Modern, с PHP 5 на PHP 8+, с jQuery на современный стек.
Что входит в аудит и рефакторинг
Аудит архитектуры и кода
Анализ производительности
Проверка безопасности
Рефакторинг и оптимизация
Восстановление документации
Миграция с устаревших версий
Примеры работ
Банковский сервис: аудит безопасности legacy-кода
Отрасль: финансы
Задача: Клиент приобрел готовый сервис для онлайн-верификации клиентов. Разработчик передал код (PHP, 25 000 строк), но документации не было. Перед запуском требовалось убедиться в безопасности системы.
Решение: Провели полный аудит кода: проверили обработку пользовательского ввода, авторизацию, работу с сессиями, API-ключи. Нашли 3 SQL-инъекции, 2 XSS-уязвимости, небезопасное хранение паролей (MD5 без соли). Устранили уязвимости, переписали критичные участки.
Результат: Система прошла внутренний пентест, запущена в эксплуатацию. Клиент получил документацию по безопасности и регламент обновления зависимостей.
Логистическая платформа: рефакторинг «невозможного» для доработок кода
Отрасль: логистика
Задача: Существующая платформа (C#, .NET Framework 4.5) тормозила при загрузке маршрутов на 500+ машин. Любая доработка занимала недели из-за «спагетти-кода». Прежний разработчик уволился, документация отсутствовала.
Решение: Провели аудит: выделили 5 основных «узких» мест (циклы внутри циклов, 300+ вызовов SQL на один маршрут). Выполнили рефакторинг: внедрили кэширование справочников, переписали загрузку маршрутов на асинхронные вызовы, заменили DataTable на DTO.
Результат: Время построения маршрута сократилось с 45 до 8 секунд. Стоимость последующих доработок снизилась на 60%. Код переведен на .NET 8 с полной документацией.
Технологический стек (с чем работаем)
- Бэкенд: C# (.NET Framework, .NET Core/Modern), Java (Spring, Hibernate), Python (Django, Flask, FastAPI), PHP (5.x, 7.x, 8.x), Node.js (Express, Nest).
- Фронтенд: JavaScript (ES5/ES6+), TypeScript, React, Angular, Vue.js, jQuery (включая легаси).
- Мобильные приложения: Swift (iOS), Kotlin/Java (Android), Flutter, React Native, Xamarin (включая легаси версии).
- Базы данных: MS SQL Server, PostgreSQL, MySQL, Oracle, MongoDB, Redis (аудит запросов, миграции).
- Инструменты аудита: SonarQube, Checkmarx, OWASP Dependency Check, JMeter (нагрузочное тестирование), dotMemory (утечки памяти).
- Дополнительно: reverse engineering (дизассемблирование .NET/Java-сборок), восстановление логики из скомпилированных файлов, написание документации (Mermaid, PlantUML, Swagger/OpenAPI).
Ответы на вопросы
Ответ: Работаем в таком сценарии. Проводим reverse engineering (дизассемблирование, декомпиляцию) для .NET, Java, мобильных приложений. Восстанавливаем логику работы, после чего можно выполнять доработки или рефакторинг. Если код не подлежит декомпиляции (например, C++ с обфускацией) — предлагаем два варианта: разрабатывать надстройки через API/хуки или переписывать модули с нуля под вашу логику.
Ответ: От 1 дня (экспресс-аудит до 5 000 строк) до 3 недель (полный аудит с нагрузочным тестированием и безопасностью для 100 000+ строк). Типовой аудит проекта на 50–70 тыс. строк — 5–7 рабочих дней. Отчет предоставляем с конкретными ошибками, рекомендациями и сроками их исправления.
Ответ: Это два этапа. Сначала проводим аудит и выдаем отчет. Вы принимаете решение: исправлять всё, только критическое или ничего. Затем подписываем договор на рефакторинг (или разовый fix критических уязвимостей). В одном договоре аудит и рефакторинг не объединяем — вы должны видеть «диагноз» до назначения «лечения».
Ответ: Полный пакет: исходный код в актуальном состоянии (Git-репозиторий), документацию (архитектура, API, схема БД, инструкция по развертыванию), отчет о проделанных изменениях (что было «as is» — что стало), а также рекомендации по дальнейшему развитию. Все права на код — ваши.
Ответ: Такое бывает. Мы честно скажем об этом в отчете по аудиту. И предложим 2–3 сценария: «минимальный рефакторинг + костыль» (быстро и дешево, но не надолго), «частичная замена модулей» (оптимально по стоимости/качеству) или «полная перезапись с сохранением логики» (дороже, но получите современный продукт). Решаете вы, исходя из бюджета и планов развития системы.