Hatred's Log Place

DON'T PANIC!

Jan 29, 2016 - 4 minute read - programming c++ projects

Обновление Qt Creator

Пока LOG, Habrahabr и другие гудят по поводу смены лицензионной политики в части Qt (переход на LPGL3) и QtC (переход с LGPL2.1 на GPL3 /именно GPL/ с исключением для плагинов), у меня дошли руки обновить PPA: https://launchpad.net/~adrozdoff/+archive/ubuntu/qtcreator-git

Ну и несколько интересных (для меня) изменений, которые стали доступны в этом билде. Добро пожаловать под кат.

PPA

И хорошая новость и неприятность для меня и, возможно, для части пользователей: требования к Clang и LLVM поднялись до отметки 3.6.2. С Ubuntu 14.04 максимально доступная версия 3.6.0. Повышение версии связанно с нестабильностью работы Clang и падениям (в основном на Mac OS X). Пришлось делать бекпорт Clang 3.7 из Xenial, а ввиду большого объёма ложить его в отдельный репозиторий. Так что обновления вы не получите, пока не добавите:

sudo apt-add-repository ppa:adrozdoff/llvm-backport
sudo apt-get update

Кроме того, отработаны действия по поддержке PPA для нескольких дистрибуций, в виду грядущего 16.04 LTS. На Precise я строить, пожалуй, не буду (как минимум туда LLVM тоже бекпортировать нужно), но с выходом 16.04, я не планирую отказываться от отстройки для Trusty. Как минимум до тех пор, пока это не станет отнимать много времени. Кстати, на Xenial уже есть LLVM 3.7, а имена пакетов я сохранил на столько, что на этой версии добавлять репозиторий с LLVM не придётся. Ровно как и репозиторий с Qt5, но это требует отладки.

Clang Static Analyser

В ряду анализаторов прибыло. Теперь доступен интерфейс к статическому анализатору clang-check. Настройки просты: исполняемый файл и количество потоков обработки. У меня максимальное число оных блокируется на 4.

Вызывается анализатор просто:

К сожалению, на моих проектах ошибок не показал, а на рабочем - есть, поэтому продемонстрировать не могу :) Просто на словах: ошибки были не фатальными, но возможными.

На некоторых файлах падает с шикарным отладочным трейсом.

Clang Code Model

Присутствует уже давно, но сейчас стартует автоматически, если плагин загружен. Соответственно, теперь, что бы выключить нужно выключать плагин. Помимо, собственно модели, предоставляет анализатор кода в реальном времени, по аналогии как делается в MSVS, или IDEA или Clion. Предупреждения назойливы как мухи и нет удобной настройки категорий. Хотя, практически все предупреждения, так или иначе, валидны.

Неприятен тот момент, что не разбирается контекст анализа: C или C++, в результате много ругани на “old style cast”, которые ногами уползают в заголовочники С-библиотек. Та же проблема, если редактируется чисто C-файл.

Отзывчивость редактора, вцелом, стала меньше, но работать можно. Больших проектов не открывал, поэтому не могу сказать - как он их переварит. Время от времени продолжает падать. Причём падает при уничтожении объекта QThread в момент, когда сам поток ещё работает. Грешу на старую Qt5, собранную из Git. Пересобрал - наблюдаю. В репозитории собрано с версией Qt 5.5.1.

Хорошая новость, что парсер стал работать стабильнее, пока не наблюдаю старой проблемы со слётами подсветки. Она, кстати, при открытии файла тоже включается с заметным лагом. Значительно лучше работает автодополнение и навигация по коду.

CMake Project Manager / CMake Project Manager 2

В основной ветке идёт работал по рефакторингу и унификации кода. Я только синхронизируюсь, но ниже отпишу пару фич, которые не были ещё анонсированы, хотя появились с месяц назад.

Итак, из заметного: использование в качестве билд-команды, не make, а cmake --build . --target all. Сделано, что бы упростить код и не делать ветвлений между make/ninja или ещё чем-либо. Обратная сторона медали: парсер вывода не работает:

Обходное решение, это удалить билд-команду по-умолчанию и добавить свою Custom, с указанием make (или ninja и т.п.), тогда парсер чинится (а на первой вкладке появляется сводка по ошибкам):

Из менее заметного: теперь фильтруются наборы (Kits) и не выводятся те, для который не задан профиль CMake. Логичное действие. Далее: в диалоге запуска CMake теперь логируется то, с какими опциями он запускается. Для прозрачности и отладки. Удобно.

Ну и мои анонсы. Точнее анонс. Один: теперь автоматически используется компилятор, которые задан в Kit, которые выбран для данной конфигурации. Соотстветсвенно немного изменён диалог: убрана настройка для переопределения тулчейна, которая была запланирована генерировать тулчейн файл из настроект Kit. Настройка не была реализована, надобности в ней не возникало, но желание использовать компилятор тулчейна (не зря же вы его выбираете!) было. Собственно и вылилось в реализацию. Костыльную. Но, вроде, работает.

Ну и напомню, что теперь вместе с плагином распространяется и мастер новых проектов. Он один для C/C++ и NonQt/Qt4/Qt5 проектов - просто выбирайте нужные опции, нужный минимальный шаблон будет применён. Если я про это уже где-то писал, то пусть будет напоминанием :)