Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: Bepec от Июнь 25, 2016, 15:59



Название: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 25, 2016, 15:59
Столкнулся с гениальной вещью. Стоит поставить препроцессорное условие, так сразу же в этом блоке перестаёт работать рефакторинг, автоподстановка, подсветка скобок и прочее.

Код:
#ifndef QT_DEBUG
{
// вот тут нихрена не работает, пока код не станет выполняться.
}
#endif

Это такая фича, или тупая бага?
PS остальные ide игнорируют это, превосходно подсвечивают скобочки и дают возможность автоподстановки функций.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: kai666_73 от Июнь 25, 2016, 16:21
А QT_DEBUG определена?
А вообще-то фича, всмысле так и было задумано... Хотя меня неработающий автокомплит в таких блоках дико раздражает ((


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 25, 2016, 16:29
Это автодефайн в дебажной сборке. Но бляхамуха, ладно ещё автокомплит не работает, так даже скобочки не подсвечиваются. Что за хрень блин :)

А ещё иногда при редактировании pro файла, креатор ахреневает и все кнопки сборки становятся неактивными. Помогает только пересохранение pro файла. Это тоже фича? :)


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: kai666_73 от Июнь 25, 2016, 16:39
Креатор при сохранении pro-файла выполняет обновление дерева проекта, процедура не моментальная (особенно на больших проектах), и на это время сборка/пересборка недоступны (что логично). Но по завершению обновления сборка/пересборка снова становятся доступны. У меня ни разу не возникало необходимости пересохранять файл проекта  :-\


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 25, 2016, 16:56
Нет я понимаю эту процедуру, но именно намертво ) И пишет невозможно разобрать файл проекта, без ссылки на какую либо ошибку :D А при пересохранении этого же файла (обновление даты файла), нормально его хавает) Вот такой гад :D


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: kai666_73 от Июнь 25, 2016, 17:25
Це странно...

Версия креатора какая?
pro-файл правится (в такие моменты) в креаторе?
автосохранение в настройках включено?
кодировка файла utf-8 без BOM?
не открыт ли файл еще в каком-нибудь редакторе с включенной функцией автосохранения (да еще и неверной умолчательной кодировкой)?

У меня такое случалось только если сохранить файл проекта, например, в notepad(++) в кодировке utf-8 с BOM.
В этом случае приходилось пересохранять в креаторе, что исправляло кодировку понятную встроенному парсеру pro-файлов.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 25, 2016, 17:35
Всё стандартно в креаторе. Причём шальная эта вещь - бывает раз 5 на дню, а бывает неделю нормально :)

PS меня если честно бесят эти маленькие окошечки и пауза при переключении режима сборки. Неужто нельзя 1 раз прочитать, сразу все конфигурации и переключаться моментально :) Ан нет.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: kai666_73 от Июнь 25, 2016, 17:41
По поводу проблемы с правкой ничего сказать не могу - все что, по-моему, может быть причиной я уже высказал...

А что касается пауз при переключении конфигурации, в защиту креатора могу сказать что хранить все модели кода на каждую конфигурацию весьма и весьма накладно по памяти.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: sergek от Июнь 25, 2016, 18:54
А ещё иногда при редактировании pro файла, креатор ахреневает и все кнопки сборки становятся неактивными. Помогает только пересохранение pro файла. Это тоже фича? :)
Тоже замечал. Помогает закрыть и заново открыть проект. Такая фигня длится уже давно, с полгода-год, и сегодня было. Встречается нечасто, поэтому отловить и не пытался.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 25, 2016, 19:55
Та что там хранить то, ёмоё. Проектик в 200 строк он секунды 2 переключает. Пока продуплит, пока все эти три окошечка милипизерных пройдут. По сути ж ничего не меняется совершенно.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: kambala от Июнь 25, 2016, 20:06
в Xcode есть точно такая же «фича».

по поводу бага после редактирования .pro — тоже видел его в недавней версии, в свежей пропал.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: kai666_73 от Июнь 25, 2016, 21:44
Та что там хранить то, ёмоё. Проектик в 200 строк он секунды 2 переключает. Пока продуплит, пока все эти три окошечка милипизерных пройдут. По сути ж ничего не меняется совершенно.

Ну чтож вы все в кучу мешаете? Редактирование файла проекта это одно (и не спорю что есть некий баг, хотя лично с ним не сталкивался), а смена конфигурации (debug на release) это совсем другое...

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


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 25, 2016, 22:14
Я извиняюсь. Я необразован и не понимаю, откуда модель кода в сотни мб появляется? :) Мб объясните?


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: kai666_73 от Июнь 25, 2016, 22:35
Я извиняюсь. Я необразован и не понимаю, откуда модель кода в сотни мб появляется? :) Мб объясните?
Не в сотню, а под сотню. Креатор парсит все по зависимостям и библиотечные хидера и собственные исходники проекта, в случае Qt проекта набирается солидно.
Вот щас запустил креатор - без открытых проектов он отъел 70 Mb; создал новый Qt-Gui проект - отъедено 135 Mb.
Цифры примерные, но для выводов достаточные... Если открыть исходники креатора в креаторе, отожрано будет порядка 600 Мб.
Как-то так...


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 26, 2016, 01:03
Я понимаю модель кода. Но чем отличается модель кода дебага от модели кода релиза?
На мой взгляд ничем, кроме вставок дефайнов, модель кода не отличается. И исходники те же, и классы те же и всё то же.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: kai666_73 от Июнь 26, 2016, 10:49
Это на ваш взгляд ничем.

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


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: kambala от Июнь 26, 2016, 16:39
дефайны, как и дерево проекта, могут отключать одни части и включать другие


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 26, 2016, 17:36
Я не спорю что могут быть случаи когда дефайнами полностью проект перекрывается, но это исключение из правил, а не вариант по умолчанию.

Да, включаются куски кода, да выключаются куски кода. Но неужели так сложно построить модель для release и debug один раз и не е**ть мозги при каждом переключении кнопочки?

Вот этого я не понимаю. Ведь в разы проще построить один раз и потом вести, чем строить каждый раз при нажатии кнопочки.

PS ни в одной ide я не видел задержки при переключении релиза/дебага. Там это просто флажок для режима сборки.

Так всё таки это тоже фича, или баг такой?


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Old от Июнь 26, 2016, 18:05
Но неужели так сложно построить модель для release и debug один раз и не е**ть мозги при каждом переключении кнопочки?
Это не сложно, это скорее не нужно. Не могу придумать ни одной причины быстро переключать типы сборки.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 26, 2016, 19:00
Вы, линуксоиды, в этом плане прошли профессиональную деформацию.

У вас "медленно работает", "не работает", "неудобно работает", "плохо работает" - это нормально и не нуждается в исправлении. Вы тупо смирились и радуетесь этому.
Типо "нас не волнуют мелкие проблемы", "ну и что, что посреди дороги лежит капкан - пусть лежит, он мне не мешает", "Обувь неудобная? ничего страшного, через месяц нога примет форму обуви" :)
Этакий особый подвид понтов обыкновенных.

Вы вот не видите проблемы в тормозах при переключении сборки. А я вот хочу нажать кнопочку "собрать релиз" и забыть. А не переключать режим сборки, ждать тормознутых 2 секунды с парой мелькающих окошек, а потом тыкать сборку.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Old от Июнь 26, 2016, 19:38
Вы вот не видите проблемы в тормозах при переключении сборки. А я вот хочу нажать кнопочку "собрать релиз" и забыть. А не переключать режим сборки, ждать тормознутых 2 секунды с парой мелькающих окошек, а потом тыкать сборку.
Не вижу. У меня 100% времени собирается debug. Релиз я собираю, в лучшем случае, раз в месяц, руками (не из IDE), на машине, где эта программа будет работать.
Я не вижу проблемы, потому что я не переключаю тип сборки в креаторе, а не потому что я линуксоид. :)


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 26, 2016, 19:40
Ну, тут как я и сказал - капкан перед дверью лежит, ну и пусть лежит. Всёравно раз в месяц хожу :D


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Old от Июнь 26, 2016, 19:48
Ну, тут как я и сказал - капкан перед дверью лежит, ну и пусть лежит. Всёравно раз в месяц хожу :D
Соберитесь! Еще раз! Я не собираю релизы из креатора, вообще. У меня на целевых машинах его нет вообще.
Вот не трачу я 2 секунды на переключение... :)


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 26, 2016, 20:12
 ???


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: kai666_73 от Июнь 26, 2016, 20:15
Вы, линуксоиды, в этом плане прошли профессиональную деформацию.
А все ждал когдаж Верес свой разгневанный взор на Linux обратит :)
Кстати, qtcreator это отнюдь не Linux/Unix way...


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Old от Июнь 26, 2016, 20:34
???
Не адекватность опять берет верх над Вересом... :)

А где я писал, что ее не надо решать?
Я написал, что по своему опыту, не вижу для чего вообще постоянно переключать тип сборки?
Я так не делаю, поэтому, никогда не сталкивался с задержками из-за этого. Если вас эта проблема беспокоит, есть исходники креатора - исправляйте, посылайте патчи.



Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 26, 2016, 21:15
Цитировать
Это не сложно, это скорее не нужно.
По правилам русского языка и предыдущих сообщений следует вывод, что данная проблема не нуждается в решении - "не нужно". Более того вы не признаёте это проблемой, следовательно и решать её не надо.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Old от Июнь 26, 2016, 21:18
Цитировать
Это не сложно, это скорее не нужно.
По правилам русского языка и предыдущих сообщений следует вывод, что данная проблема не нуждается в решении - "не нужно". Более того вы не признаёте это проблемой, следовательно и решать её не надо.
Для меня это не проблема, я не пользуюсь этой возможностью креатера вообще. Для меня не нужно ничего решать.
Если вы видите в этом проблему - решайте. Хотя вы так и не смогли сформулировать, для чего же вам нужна возможность быстрого переключения типов сборки. Что вы пару секунд потерпеть не можете?

Пока это напоминает претензию в автосервис: я постоянно включаю и выключаю зажигание своей машины. Почему она у меня так медленно ездит? :)


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 26, 2016, 22:25
Если б в машине при поворачивании ключа закрывались двери, выскакивало 3 мааааленьких окошечка с непонятными прогрессбарами, блокировался руль, педали и двери, потом тройку секунд думало...
Думаю, что эту машину сдавали бы обратно в салон. Ибо не понятно что оно делает, зачем закрывает двери, блокирует руль, педали. И даже если что-то случится ты никак повлиять не можешь.

PS то же создание модели кода отдельным потоком - чем не решение... Ан нет.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Racheengel от Июнь 27, 2016, 00:02
я наоборот все стараюсь собирать в релизе на максимуме. Дебаг включаю, тока когда без отладчика никуда. Просто мне время дороже :)


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Old от Июнь 27, 2016, 06:47
Если б в машине при поворачивании ключа закрывались двери, выскакивало 3 мааааленьких окошечка с непонятными прогрессбарами, блокировался руль, педали и двери, потом тройку секунд думало...
Думаю, что эту машину сдавали бы обратно в салон. Ибо не понятно что оно делает, зачем закрывает двери, блокирует руль, педали. И даже если что-то случится ты никак повлиять не можешь.

PS то же создание модели кода отдельным потоком - чем не решение... Ан нет.
Понятно.
Смысла мгновенного переключения типа сборки вы тоже не видите, просто нашли к чему придраться. :)

Есть исходники креатора, сделайте в отдельном потоке. Но доступное для вас решение, просто не тыкать непрерывно мышкой во все места.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Old от Июнь 27, 2016, 07:19
я наоборот все стараюсь собирать в релизе на максимуме. Дебаг включаю, тока когда без отладчика никуда. Просто мне время дороже :)

Т.е. асертами вы не пользуетесь? Или вы их и в релизе оставляете?
У меня релиз и дебаг могут очень сильно отличаться: от дополнительного логирования и до отображения подробной телеметрии на экране, которых не будет в релизе.
Просто мне время дороже. :)


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: kamre от Июнь 27, 2016, 09:07
я наоборот все стараюсь собирать в релизе на максимуме. Дебаг включаю, тока когда без отладчика никуда. Просто мне время дороже :)
Аналогично делаю, debug - только для залезания в код с отладчиком.

Т.е. асертами вы не пользуетесь? Или вы их и в релизе оставляете?
У нас обычно как минимум три типа сборки: Debug для отладки с отладчиком, Release для прогона тестов (все asserts и подробное логирование остается), External (для сборки распространяемых бинарников, asserts отключены, логирование минимально необходимое только). При таком подходе Debug/Release отличаются фактически только ключами оптимизации для компилятора, чтобы Debug-сборку можно было под отладчиком в IDE запускать.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Bepec от Июнь 27, 2016, 12:45
Вы всё время повторяете - время дороже :)
Но не можете понять что при переключении режимов теряется как раз этот дорогой ресурс. Ну и дополнительно просто бесит :D


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Old от Июнь 27, 2016, 12:49
Вы всё время повторяете - время дороже :)
Но не можете понять что при переключении режимов теряется как раз этот дорогой ресурс. Ну и дополнительно просто бесит :D
Просто все, кроме переключения типов сборки, еще и код пишут. По сравнению с этим временем, время переключения ничтожно мало и может быть проигнорировано.
Попробуйте заняться делом, вместо простого тыканья мышкой во все кнопочки.


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: Racheengel от Июнь 27, 2016, 13:44
С креатором я другую проблему вижу, более важную - отладчик дико тормознутый.
Да и чтобы запустить релиз из-под креатора, он всегда прогоняет заново все make файлы, хотя это имхо идиотизм - если приложение уже собрано, зачем на это время тратить ???


Название: Re: Qt creator, рефакторинг, автоподстановка.
Отправлено: kai666_73 от Июнь 27, 2016, 14:21
С креатором я другую проблему вижу, более важную - отладчик дико тормознутый.
Да и чтобы запустить релиз из-под креатора, он всегда прогоняет заново все make файлы, хотя это имхо идиотизм - если приложение уже собрано, зачем на это время тратить ???

Отладчик под венду - да, что мингвшный gdb, что cdb, а вот под Linux вполне себе...
По поводу запуска - есть запуск без деплоя, ака Alt+Shift+R