Как стать автором
Обновить

Комментарии 39

Дополнительные возможности рефакторинга в C++: извлечь метод, добавить нехватающий #include, переставить аргументы функции местами

Я так и не нашел как добавить include к объявленному неизвестному типу. Не срабатывает даже на Q классах.
А вот extract method очень ок, мне понравился.
Хм, у меня ок добавилось.
Windows?
Mac OS X.
Вообщем у меня на Linux не появляется сей пункт. Может делаю что не так.
Я тоже заметил появляется через раз. Так же как alt+Return иногда срабатывает. В качестве совета могу подсказать снять выделение/курсор туда-сюда. С «Create implementation» по крайней мере так и работает. В этой штуке системы не увидел. Но для меня эта самая долгожданная, за день успел уже раз пять использовать!
Особенность работы всего это в том, что в QtC модель кода, извлечение семантической информации из исходника и т. п. действия выполняются асинхронно (в некоторых случаях — по таймеру). По этому временные лаги вполне возможны.
Кстати, чтобы все понимали, плагин написан и интегрирован не мной, это форк моего старого проекта, о котором я писал на хабре ранее. Так что все спасибо направлять Дмитрию Савченко, который потратил немало времени на переделку, доработку и интеграцию TODO плагина.
Но ты ведь родоначальник, кроме того Дмитрия на хабре я не нашёл. Если подскажешь его ник — добавлю в топик.
Мне кажется, что его нет на Хабре.
Пригласи :)
Ещё может быть lwh, хотя он и ридонли.
Вопрос (возможно, глупый) по TODO плагину — как заставить его работать? В MacOS X у меня он так и не отобразился, хотя галочку в PlugIns я поставил.
Из минусов — сломали работу с Git по Option+G Option+B и т.д. Нужно им багрепорт написать.
Странно, у меня в макоси завёлся сразу же. Попробуйте перезапустить Creator и проверить галочку.
А почему MinGW убрали?
В оригинальной новости сказано в духе «для этого сделан Qt SDK».
Там в официальной новости есть объяснение, вкратце — мингв есть в QtSDK, а если вы сами собираете себе окружение по кусочкам, качайте MinGW отдельно, саппорт они не прекращают, просто убрали из инсталлятора.
как по мне так правильно сделали. Как правило если осознанно качаешь QtC а не SDK значит в состоянии найти скачать и установить компилятор самостоятельно, зачем увеличивать траффик из-за того что никому не нужно.
Не всем он нужен.
Пардон, господа, я думал убрали из Qt SDK :)
Я как-то им обычно пользуюсь, обновляется добротно, и удобно, как по мне, сразу все в одном пакете! Ну тогда вопрос решен!
На странице Download: Qt Creator IDE version 2.4.1 (я как раз вчера качал Creator). А тут 2.5.0
Да нет же, все ок на странице Download

Отличные новости! Особенно рад поддержке «IntelliSense» для auto.
Ну, по крайней мере пример, описанный в этой таске, работает:
image
В сложных случаях уже нет :)
В сложных случаях автокомплит в QtC в принципе тупит. Автокомплит auto будет работать во всех ситуациях, когда парсер QtC может вычислить тип выражения, а сюда не попадают даже достаточно простые случаи использования шаблонов, когда, например, парсеру надо пройти через несколько typedef'ов, особенно если они зависят от аргументов шаблона. Конкретные примеры кода смогу привести, когда до стационарного компа доберусь.

У этой проблемы два пути решения — докручивать встроенный парсер или окончательно переходить на clang, но на каждом из этих путей свои сложности.
Вот, собственно, пример кода, когда автокомплит в QtC не может ничего предложить:
class SomeClass
{
public:
    SomeClass(int a) : m_a(a) {}

    void Foo() {}
    void Bar(int a) {}
};

int main()
{
    std::vector<SomeClass> vec;
    
    vec.front(). 

Тут после front() ничего не появляется при наборе. Аналогично с итераторами std-шных контейнеров.
На clang'е я смотрел ветку и там автокомплит кушал все, но жутко медленно. Кажется они пока не решили эту проблему и вся разработка на этом встала.
Говорят kdevelop нормально все конструкции жрет и снипеты там лучше работают. В идеале конечно было бы круто объединить их парсеры.
Да, с clang'ом там всё не просто (точнее, именно с его производительностью). Чем сложнее файл и больше в нём инклюдов — тем он дольше парсится. И это аффектит не только code completion, но и построение модели кода для проекта. Плюс ко всему, при сращивании QtC с clang'ом последнего надо «обучать» специфичным именно для Qt фишкам. Если с марта этого года ничего не изменилось, то QtC будет постепенно переводить на clang в течении 2012-2013-ых годов.
Последний коммит в WIP/clang — 22 апреля. И вообще там в бранче мертвые с косами стоят.
Eike Ziller писал по поводу интеграции QtC и clang буквально следующее:

1) First priority short term is to make Qt Creator's current code model handle the new C++11 features gracefully (help needed, see long story!)
2) Middle term (i.e. 2012/13) we want a hybrid solution where clang is used for code completion and semantic highlighting, and the current code model is used for mostly everything else
3) Long term we would prefer using clang for everything code related in Qt Creator, but when both clang and Qt Creator might be ready for that, we don't know


( lists.qt-project.org/pipermail/qt-creator/2012-February/000251.html )

Сейчас работа в рамках интеграции clang и QtC, судя по всему, временно заморожена. В master-ветке активно докручивается препроцессор. Когда работы с clang'ом возобновятся — я не знаю. У нокиевской команды, работающей над QtC, всего три человека (насколько я могу судить), которые работают над C++-парсером в QtC. По этому без помощи community им (для решения этих задач) никак не обойтись.
Да и навигация по коду через смартуказатели не работает.
 smptr->func();

Переход и вообще всякие подсказки для func не работают если smptr это смартуказатель (с переопределенным оператором ->).
Плагин TODO классная штука, раньше не знал о нем. Но даже в бочке меда есть ложка дегтя. Я конечно понимаю, интернационализация, английский язык — стандарт, все дела. Но в 2012 без поддержки русского языка плагин выглядит не очень круто. Сам код в UTF-8, но на выходе получается примерно следующая картина:


PS: Если это сама консоль креатора не поддерживает русский алфавит, тогда беру свои слова обратно.
Насколько я понимаю, там обычный ListView, с чего бы ему что-то не поддерживать? Тоже наткнулся, кстати, на косяк с кириллическими комментариями.
Напишите Bug Report.
Бага в \qt-creator\src\libs\cplusplus\pp-engine.cpp:589 если что:
QByteArray Preprocessor::run(const QString &fileName, const QString &source)
{
    return run(fileName, source.toLatin1());
}

Оно потом возвращается в \qt-creator\src\plugins\cpptools\cppmodelmanager.cpp:626-630 где засовывается в документ, который потом парсит парсер.

Но поскольку потеря инфы происходит не в плагине, а в самом куске QtCreator'а, я патчи слать не возьмусь.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории