Тема: Отображение изменяемости метода на основе исторической информации в IntelliJ IDEA
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
1. Обзор 6
1.1. Ближайший аналог 6
1.2. IntelliJ Platform 7
1.3. RefactoringMiner 11
1.4. SQLite 12
2. Реализация 13
2.1. Предлагаемый алгоритм 13
2.2. Архитектура 15
2.3. База данных 17
2.4. Визуализация 18
2.4.1. Неизменяемые метки с информацией 19
2.4.2. Список наиболее часто изменяемых методов проекта 19
Заключение 21
Список литературы 22
📖 Введение
Ряд исследований показывает связь между частотой нахождения ошибок в фрагментах кода и тем, как часто данные фрагменты из-меняются ([13], [3], [6]). Метод или функция может часто изменяться из-за различных технических (часть параметров могут быть вынесены в файл конфигурации), архитектурных или внешних (слишком частые изменения бизнес-логики) проблем проекта. Так, в статье [5] говорится о том, что если в фрагменте кода была найдена ошибка, то с высокой вероятностью в этом же фрагменте могут быть и другие ошибки. Также успешное исправление ошибки может произойти не с первой попытки: например, результаты статьи [7] показывают, что в 25% случаев исправление ошибки было неправильным и требовало повторного исправления.
Таким образом, можно сделать вывод о том, что часто изменяемые фрагменты кода заслуживают повышенного внимания со стороны разработчиков. Если привлечь внимание разработчика к такому фрагменту кода, то он сможет более пристально его изучить и исправить потенциальные проблемы в нём. Применение такой практики на регулярной основе позволит улучшить качество как отдельно взятых частей проекта (благодаря исправлению локальных ошибок), так и всего проекта в целом (изменение архитектуры проекта при необходимости). Чтобы такое стало возможно, необходимо, чтобы инструмент, позволяющий осуществить это, был интегрирован в среду разработки, которую используют разработчики. Иначе вероятность его использования сильно понижается, поскольку, как показывает исследование [11], разработчики не склонны к использованию других инструментов (документация, трекеры задач), кроме среды разработки.
Постановка задачи
Исходя из проблем, сформулированных во введении, было принято решение реализовать инструмент для привлечения внимания разработчиков к потенциально проблемным фрагментам кода. Таким образом, целью работы является разработка расширения для среды разработки IntelliJ IDEA, позволяющего визуализировать историю изменений кода. Для достижения цели были поставлены следующие задачи:
• реализовать плагин, интегрирующийся с IntelliJ Platform SDK для анализа изменений в системе контроля версий и отображения полученных данных в редакторе кода;
• интегрировать решение с инструментом для отслеживания рефакторингов;
• оптимизировать решение для работы с большими репозиториями;
• опубликовать плагин в репозитории плагинов JetBrains, собрать и проанализировать статистику его использования.
✅ Заключение
• реализован плагин для сбора и визуализации статистики о частоте изменений методов в системе контроля версий;
— https://github.com/ml-in-programming/topias;
— https://github.com/ml-in-programming/topias/releases/tag/v1.0-beta;
• решение интегрировано с RefactoringMiner для отслеживания рефакторингов;
• собранная статистика отображается в виде текстовых меток и графиков частоты изменений;
• сделан доклад на конференции SEIM-2019.



