При разработке программного обеспечения большое внимание уделяется качеству кода. Важно, чтобы программный код не только решал поставленную задачу, но и был понятен другим разработчикам [5]. Со временем кодовая база растет, каждый раз вникать в логику классов и методов затруднительно, поэтому стоит ответственно подходить к именованию всех идентификаторов, особенно при разработке API (Application Program Interface) библиотек.
В последние годы активно развиваются и внедряются во многие сферы методы машинного обучения. Анализ программного кода является интересной областью для исследований [15], поскольку содержит в себе огромное количество данных и множество различных задач. Например, обнаружение ошибок [7], поиск плагиата [8], предсказание имен идентификаторов [13].
Исследователи разрабатывают алгоритмы предсказания имени идентификатора, основываясь на контексте вокруг него. Эта задача интересна и актуальна, поскольку имена идентификаторов влияют на читаемость кода. Было замечено, что низкое качество имен приводит к дефектам в работе программ [9].
Для повышения качества кода разработчики используют инструменты для анализа кода в интегрированных средах разработки. Некоторые из них работают как автоматические инспекции: в фоновом режиме анализируют код и предоставляют подсказки о том, что можно улучшить. Например, поиск дублирующихся фрагментов кода, поиск опечаток, упрощение синтаксических конструкций. С помощью автоматических инспекций можно значительно упростить работу программистов, частично переложив заботу о поиске недостатков на среду разработки.
На данный момент для среды разработки IntelliJ IDEA нет плагинов, решающих задачу автоматической рекомендации имен методов. В данной работе предлагается решение в виде автоматической инспекции, которая рекомендует имена для методов.
Постановка задачи
Целью работы является разработка плагина для IntelliJ IDEA, который автоматически рекомендует имена для методов. Для достижения этой цели были поставлены следующие задачи:
• провести обзор предметной области;
• выбрать алгоритм рекомендации имен методов;
• разработать архитектуру и реализовать плагин;
• выполнить апробацию.
В ходе работы были достигнуты следующие результаты.
• Проведен обзор предметной области. Рассмотрены алгоритмы рекомендации имен методов, описаны метрики для оценки их качества и проведено сравнение описанных алгоритмов.
• Выбран алгоритм рекомендации имен методов, демонстрирующий высокое качество предсказаний.
• Разработана архитектура и выполнена реализация плагина к IntelliJ IDEA. Плагин в фоновом режиме анализуерт код и предлагает рекомендации имен для методов.
• Проведена апробация плагина. Плагин протестирован пользователями, которые в основном дали положительную оценку. Проведен анализ собранной статистики использования и было замечено, что на методах короче тридцати символов плагин генерирует наиболее релевантные рекомендации.
Таким образом, в результате данной работы был создан плагин для среды разработки IntelliJ IDEA, который рекомендует имена для методов. Код проекта доступен по ссылке.