Code Mining. Могут ли аналитики читать код?
Здравствуйте, меня зовут Губин Никита. Ведение современного бизнеса невозможно без множества специалистов различных областей. Каждый из них выполняет свою роль, создавая команду, способную достигнуть поставленных целей.
Эффективность команды напрямую зависит от оптимизации взаимодействия между различными ее членами.
В данном посте я хочу рассмотреть взаимодействие аналитиков и DS-специалистов и способе его оптимизации.
Аналитики используют методы анализа для исследования потребностей деятельности организаций с целью определения проблем и их решений.
DS-специалисты решают задачи бизнеса как техническую. Обрабатывают массивы данных, находят в них новые связи и закономерности.
Результатом их взаимодействия может стать ситуация, в которой DS-специалист листает код для аналитика, который хорошо понимает область и знает, что они ищут.
Подобный сценарий демонстрирует дыру в трудозатратах, решить которую я предлагаю с помощью “Code Mining”.
Code Mining – это метод анализа репозитория программного обеспечения, позволяющий извлечь полезную информацию и артефакты из кода. Он включает в себя:
- Анализ кода проекта;
- Сбор данных и метрик;
- Улучшение процесса разработки программного обеспечения.
Так же может применяться для:
- Выявление закономерностей и тенденций в изменениях кода;
- Оценка качества кода;
- Обнаружение потенциальных ошибок и уязвимостей;
- Создание отчетов и визуализаций.
Аналитики и код
Почему же аналитикам трудно самостоятельно анализировать исходный код?
Выделим несколько причин:
- Незнакомые средства, в виде расширенного поиска по составам репозиториев;
- Непривычное разрозненное расположение информации, которая распределена по умозрительным и непонятным для аналитика признакам;
- Возможное несоответствие документации с исходным кодом.
Решение
В качестве решения было разработано приложение, которое парсит все файлы проекта с кодом в один excel файл, поделенный на логические блоки:
Рисунок 1 Пример работы
Преимущество данного решения:
- Привычный инструмент. Excel – один из основных инструментов аналитика;
- Код проекта, состоящий из нескольких файлов, собирается в одном месте;
- За счет структуры файла, у аналитика появляются широкие возможности по фильтрации, анализу и поиску необходимой информации.
Реализация
Код написан на Python и предназначен для разбора кода так же на Python.
В посте будут разобраны ключевые моменты. Полный код доступен по ссылке на Github:
Изначально, необходимо собрать файлы (.py), которые в дальнейшем будем обрабатывать:
Предусмотрено 2 варианта сбора:
- Только из указанной папки;
- Из указанной папки и всех подпапок (кроме скрытых).
Задаем DataFrame со структурой будущего excel файла:
Построчно обрабатываем файлы:
Python обладает четкой структурой, поэтому, каждая строка проверяется на условия:
Но если каждую строку просто записывать в DataFrame, то в итоговом результате получим “кашу”.
Элементы часто занимают более одной строки, поэтому в коде предусмотрены флаги, для записи однотипных данных в одну запись. Например, когда подряд объявляются несколько переменных:
Отобранные данные записываются в DataFrame:
Полученный результат записываем в Excel или в csv:
Для удобства работы добавим пользовательский интерфейс:
Рисунок 2 Интерфейс
Путь до обрабатываемых папок выбираем через проводник:
А после выполнения программы предлагаем открыть результат:
Рисунок 3 Сообщение после обработки
Давайте рассмотрим применение программы на примере:
Рисунок 4 Пример разбираемого кода
Результатом разбора данного фрагмента будет excel файл:
Рисунок 5 Результат разбора
На рисунке 5 можно увидеть, какие переменные используются при работе и как они преобразовываются. А за счет фильтров можно отобрать только необходимую в данный момент информацию:
Рисунок 6 Фильтр по переменной Age
Вывод
Данная программа позволила привлечь к проверке исходного кода специалистов, ранее не сталкивающихся с подобными задачами. Полученная обратная связь была позитивной и, сейчас, система проходит активную стадию тестирования.
Очевидно, что это не конечный продукт и на основе обратной связи будут дорабатываться и внедряться различные методы визуализации и обработки данных. Например, на основе графов.
Но уже сейчас, можно дать ответ на вопрос из темы поста. Да, аналитики могут читать код. И основа, заложенная в тему данного поста, является тому подтверждением.
Спасибо за внимание.