Описание
В процессе разработки всегда приходится решать множество вспомогательных задач, не связанных напрямую с написание кода. При этом большинство из них являются рутинными и требуют от разработчика больше внимательности и терпеливости, нежели знаний и сообразительности. Для их решения ленивые программисты (вроде меня) обкладываются со всех сторон различными вспомогательными утилитами под каждую проблему.
Для некоторых из таких задач я написал отдельные плагины для Qt Creator’а. Но, как говорилось выше, я программист ленивый и делать по полноценному плагину на каждый инструмент мне не хочется. Поэтому некоторые наработки я решил скинуть в один плагин с многозначительным названием “утилиты”. Отдельно следует выделить слово “наработки”: хотя некоторые задачи плагин и решает вполне успешно, это в основном наброски или прототипы. Доводить их до приличного состояния мне либо некогда, либо уже не интересно. Поэтому часть функций может работать не совсем так, как ожидается. Замечания и рекомендации лучше всего высказывать через pull-request’ы вместе с исправлениями :).
Скачать
Версия плагина должна совпадать (по крайней мере первые две цифры) с версией Qt Creator’а. Дальше опишу из каких частей состоит плагин.
Инструменты Clang
В рамках инфраструктуры LLVM поставляется ряд полезных инструментов для статического анализа кода. Они проверяют код как на наличие ошибок, так и на стиль и “качество” кода. К ним относятся Tidy, Check, Modularize и т.д. (http://clang.llvm.org/extra/index.html).
Плагин позволяет автоматически запускать, разбирать их вывод и отображать результаты в панели проблем (аналогично плагину для cppcheck). Для работы этих инструментов требуется файл compilation-database.json, который содержит команды компилятору, необходимые для сборки файла. Его можно получить либо включив специальный флаг CMAKE_EXPORT_COMPILE_COMMANDS для cmake проектов, либо воспользовавшись специальной утилитой Bear.
Анализатор OCLint
Аналогично инструментам clang (и использованием той же платформы) создан еще один статический анализатор - OClint. Собственно, работа плагина с ним такая же, как и с инструментами clang.
Многооконная панель вывода приложений
В некоторых случая бывает полезно одновременно видеть вывод нескольких программ, запущенных в Qt Creator’е. Например, при отладке клиент-серверных приложений или для контроля работы долгоживущей программы. Для этого я сделал дубль стандартной панели вывода, но с поддержкой нескольких окон. Реализация довольно грубая, поэтому для постоянной работы лучше использовать стандартную панель.
Организация include’ов
Тут была попытка автоматической оптимизации include‘ов для текущего файла. Работает не всегда, но в качестве первого приближения использовать можно.
Просмотр кода
Разработчики тратят большую часть времени на чтение кода, чем на его написание. При этом чем более наглядно представлена информация, тем быстрее и проще она воспринимается.
Для упрощения анализа существующего кода в плагине предусмотрена возможность генерации диаграмм UML для заданного класса. Генерация выполняется по внутренней модели кода Qt Creator’а, а для построения диаграмм используется отличная Java программа PlantUML.
Непрерывная интеграция
Данная часть плагина позволяется отображать состояние процесса непрерывной интеграции. На текущий момент поддерживается только Drone.io. Состояние отображается в отдельной панели.