(Предположительно) ложная ошибка в Android Studio, но компилятор и приложение работают нормально - PullRequest
0 голосов
/ 28 апреля 2020

Я пытался ответить на большинство вопросов о ложных срабатываниях: удалить папку .idea / (даже ~ / .gradle), выйти из проекта, перезагрузить, аннулировать кэш и перезагрузить и т. Д. c. Я также запустил refre sh c ++ связанных библиотек на всякий случай.

Теперь просто фон: весь мой проект в порядке в отношении средства проверки IDE. Все файлы показывают правильные предупреждения, et c. За исключением этой единственной строки в моей стороне c ++. (Я покажу весь метод для контекста). Я могу нормально создавать и запускать свой проект, и когда я даже вызываю эту часть приложения в виде logi c, он ведет себя как ожидалось, без проблем.

// Header (relevant member variable)
class MyClass {
private:
    std::vector<std::vector<int>> mArrayOfFooBars
}

// MyClass.cpp
void MyClass::updateModel(int index, const std::vector<int>& fooBars) {
    this->mArrayOfFooBars[index].assign(fooBars.begin(), fooBars.end());
    doMoreCalculations();
}

В Android Studio foobars.begin() и fooBars.end() отображаются со следующими ошибками:

Несоответствие типов параметров: типы 'const int' и 'std :: vector> :: const_iterator' несовместимы

Несоответствие типов параметров: типы «unsigned int» и «const int» и «std :: vector> :: const_iterator» несовместимы

Это наводит меня на мысль, что, возможно, ошибка с linter, или, возможно, у меня неправильные настройки компилятора, и это на самом деле должно быть ошибкой компилятора. В любом случае, я постараюсь предоставить столько настроек, сколько мне кажется релевантным, надеюсь, кто-нибудь может дать несколько полезных советов.

  • Gradle Plugin Ver: 3.6.3 (недавно)
  • Версия Gradle: 5.6.4
  • SDK ver: 29
  • Build Tools Ver: 29.0.3
  • NDK (рядом) - Не установлено (Не совсем уверен, что это так)
  • CMake: 3.10.2 и 3.6.4111459 установлены (возможно, вам нужен только один из них?)
  • SDK Platform-Tools (доступно обновление для 30.0.0)
  • SDK Tools: 26.1.1

Я проверил настройки линтера (проверки) и не нашел проверок уровня ошибок для этого:

enter image description here

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

1 Ответ

0 голосов
/ 04 мая 2020

Ошибки в IDE, которые не отображаются как часть сборки, не являются чем-то необычным в Android Studio. Сборка и IDE не используют один и тот же набор инструментов. Старые версии Studio используют синтаксический анализатор Cion C ++, который часто был неправильным, потому что синтаксический анализ C ++ чрезвычайно сложен. Новые версии начинают использовать clangd, но это не обязательно та же версия Clang, которую использует сборка.

Когда вы видите проблемы, подобные этим, скорее всего, будет лучше в более новой версии AS, но это часто стоит регистрировать ошибку, чтобы убедиться, что она на чьем-то радаре.

...