Доброго времени суток!
Долгое время я косвенно являлся участником форума в режиме read-only. Чаще всего на те или иные страницы форума я попадал по поисковым запросам, которые составлял для решения возникающих в ходе программирования проблем. Поэтому прежде всего хотелось бы выразить признательность всем участникам форума, качество материалов которого я бы поставил на равне с системой справки Qt и форумом qt-project.org.
Сегодня я хочу поделиться своим вкладом в сообщество Qt-разработчиков. Это мой первый Open-source проект, который надеюсь будет полезен программистам, использующим IDE QtCreator. Итак, в ходе месяца работы (по вечерам помимо основной работы) был создан
плагин для QtCreator, позволяющий выполнять поиск дублирующегося кода (являющегося злом в программировании), который я представляю на суд общественности.
Возможно не все задумываются над тем, насколько много в коде повторов. Возможно кто-то даже считает комбинацию Ctrl+C, Ctrl-V реализацией принципа повторного использования кода. Более глубокое понимание вопросов, связанных с повторяемым кодом дает статья
Дублирование кода на Википедии. В данной статье все хорошо описано, но нет (на мой взгляд) главного - как с этими повторами бороться. А ответ прост: в многих IDE такие средства уже имеются, либо реализованы в виде плагинов. В многих...кроме QtCreator. Именно данный пробел и восполняет разработанный плагин: он ищет дубликаты (по настраиваемым опциям) и выводит в древовидном списке ссылки на все фрагменты дублирующегося кода (рисунок 1).
Рисунок 1 - Область вывода сообщений, в которой отображается информация о всех найденных фрагментов дублирующегося кода
При двойном клике мышью по записи (QTreeWidgetItem) в редакторе QtCreator открывается соответствующий файл, курсор позиционируется в начале фрагмента повтора и повторяющийся фрагмент подсвечивается (рисунок 2). Данный функционал оказался настолько простым в реализации, насколько он оказался сложен в поиске нужного решения. Дело в том, что текущая документация по разработке плагинов достаточно скудна, поэтому каждый найденный кейс, на мой взгяд, представляет большую ценность для тех, кто пробует свои силы в разработке плагинов.
Рисунок 2 - Выделение фрагмента дублирующегося кода
Плагин позволяет сделать тонкую настройку "чувствительности" к повторам алгоритмов поиска. Более подробную информацию о плагине, его установке, настройке и опциях можно найти по ссылкам, указанным ниже.
Ссылки:1. Подбробное описание плагина (в том числе описание действий, необходимых для самостоятельной сборки как QtCreator, так и плагина из исходников) представлено в одноименной статье
"Плагин поиска дублирующегося кода для QtCreator" на habrahabr.ru.
2. Исходный код в архиве и git-репозитории расположен на странице проекта в
Sourceforge.net. Просьба сообщать о багах "bug reports" и нужном функционале "feature requests" в системе тикетов или в соответствующем разделе форума (можно как на русском, так на английском). Также я обязательно отвечу на все запросы, которые будут опубликованы в данной теме.
3. Помимо русскоязычного форума был создан
анонс плагина на qt-project.org . Кто является участником в том числе и форума qt-project.org - будем знакомы.
P.S. Тема создания плагинов для QtCreator лично меня очень заинтересовала. И в первую очередь тем, что оказалось реально в силах не самого продвинутого программиста создать что-то, что будет полезно многим единомышленникам. Поэтому хотелось бы в первую очередь услышать мнения участников форума о том, какие бы функции (например из тех что имеются в других IDE, но нет в QtCreator) были бы полезны в процессе работы над проектами в среде QtCreator.
С уважением, Андрей.