Описание

В процессе разработки всегда приходится решать множество вспомогательных задач, не связанных напрямую с написание кода. При этом большинство из них являются рутинными и требуют от разработчика больше внимательности и терпеливости, нежели знаний и сообразительности. Для их решения ленивые программисты (вроде меня) обкладываются со всех сторон различными вспомогательными утилитами под каждую проблему.

Для некоторых из таких задач я написал отдельные плагины для Qt Creator’а. Но, как говорилось выше, я программист ленивый и делать по полноценному плагину на каждый инструмент мне не хочется. Поэтому некоторые наработки я решил скинуть в один плагин с многозначительным названием “утилиты”. Отдельно следует выделить слово “наработки”: хотя некоторые задачи плагин и решает вполне успешно, это в основном наброски или прототипы. Доводить их до приличного состояния мне либо некогда, либо уже не интересно. Поэтому часть функций может работать не совсем так, как ожидается. Замечания и рекомендации лучше всего высказывать через pull-request’ы вместе с исправлениями :).

Скачать

Скомпилированный плагин

Исходники

Версия плагина должна совпадать (по крайней мере первые две цифры) с версией Qt Creator’а. Дальше опишу из каких частей состоит плагин.

Инструменты Clang

В рамках инфраструктуры LLVM поставляется ряд полезных инструментов для статического анализа кода. Они проверяют код как на наличие ошибок, так и на стиль и “качество” кода. К ним относятся Tidy, Check, Modularize и т.д. (http://clang.llvm.org/extra/index.html).

Плагин позволяет автоматически запускать, разбирать их вывод и отображать результаты в панели проблем (аналогично плагину для cppcheck). Для работы этих инструментов требуется файл compilation-database.json, который содержит команды компилятору, необходимые для сборки файла. Его можно получить либо включив специальный флаг _CMAKE_EXPORT_COMPILECOMMANDS для cmake проектов, либо воспользовавшись специальной утилитой Bear.

Инструменты Clang

Инструменты Clang

Анализатор OCLint

Аналогично инструментам clang (и использованием той же платформы) создан еще один статический анализатор - OClint. Собственно, работа плагина с ним такая же, как и с инструментами clang.

Многооконная панель вывода приложений

В некоторых случая бывает полезно одновременно видеть вывод нескольких программ, запущенных в Qt Creator’е. Например, при отладке клиент-серверных приложений или для контроля работы долгоживущей программы. Для этого я сделал дубль стандартной панели вывода, но с поддержкой нескольких окон. Реализация довольно грубая, поэтому для постоянной работы лучше использовать стандартную панель.

Многооконная панель вывода приложений

Многооконная панель вывода приложений

Организация include’ов

Тут была попытка автоматической оптимизации include‘ов для текущего файла. Работает не всегда, но в качестве первого приближения использовать можно.

Просмотр кода

Разработчики тратят большую часть времени на чтение кода, чем на его написание. При этом чем более наглядно представлена информация, тем быстрее и проще она воспринимается.

Для упрощения анализа существующего кода в плагине предусмотрена возможность генерации диаграмм UML для заданного класса. Генерация выполняется по внутренней модели кода Qt Creator’а, а для построения диаграмм используется отличная Java программа PlantUML.

UML

UML

Непрерывная интеграция

Данная часть плагина позволяется отображать состояние процесса непрерывной интеграции. На текущий момент поддерживается только Drone.io. Состояние отображается в отдельной панели.

Непрерывная интеграция

Непрерывная интеграция