Как исправить пропущенный семантический анализ и подсветку шаблонных классов в QtCreator - PullRequest
0 голосов
/ 07 ноября 2019

При работе с шаблонными классами в QtCreator IDE не обнаруживает (или просто не выделяет) очевидные семантические ошибки, которые делают разработку намного более удобной. Завершение кода (предложения) также не работает. Другие функции IDE, такие как «следовать за курсором под курсором», похоже, работают для объявленных символов.

Это происходит только при использовании ключевого слова this.

Я проверял это на более старыхверсия qtcreator (4.5.2) и последняя бета-версия (4.10.83). Включение или отключение плагина ClangCodeModel не имеет значения (я ожидаю, что простые ошибки, подобные этой, будут обнаружены и без ClangCodeModel).

Согласно документации QtCreator (https://doc.qt.io/qtcreator/creator-clang-codemodel.html), это либо модель кода clang,или встроенная модель кода, которая отвечает за семантическое выделение. Поскольку я пробовал оба, и оба имеют одну и ту же проблему, я подозреваю, что мои проблемы вызваны чем-то независимым от этого выбора (возможно, общая зависимая служба?)

// Static analysis check:
template< class T >
class Test
{
    private:
        T templated;
        std::vector< int > intList;

        void methodTest()
        {
            // Failure to detect non existing member blabla.
            this->blabla.bla();        
            // intList has nothing to do with the template, the non-existing method call should be detected but isn't.
            this->intList.bla();
            // Correctly shown as a non-existing method call when not using this.
            intList.bla();
            // The actual type of templated is not known until it is generated during compilation, this is expected.
            this->templated.bla();
        }
};

Моя установка правильно идентифицирует и выделяет ошибки такого же типа вне шаблонного класса.

Кто-нибудь знает, как решить эту проблему?

...