FlexeLint/PC-lint предупреждает о том, что возвращаемое значение std::string::append не рассматривается

FlexeLint/PC-lint предупреждает о том, что возвращаемое значение std:: string:: append не учитывается в следующем сокращенном примере кода:

#include <iostream>
#include <string>

int main() {

std::string s("Hell");
s.append(1,'o');

std::cout << s << std::endl;
return 0;

Вызов FlexeLint дает следующее предупреждение:

Warning 534: Ignoring return value of function  'std::basic_string<char>::append(unsigned long, char)'

Хотя это сообщение истинно, в этом случае не имеет смысла возвращать возвращаемое значение, потому что std:: string:: append просто возвращает * this.

Кроме того, любые итераторы, указатели и ссылки, связанные с этим объектом, могут быть признаны недействительными. Но это не так, никакие итераторы, указатели и ссылки не используются.

Вопрос

Я пропустил что-то важное или это просто ложный позитив FlexeLint?

1 ответ

PC-Lint достаточно гибок, и в большинстве случаев его можно настроить в соответствии с вашими потребностями. Есть несколько способов отключить это предупреждение:

  • Использование глобальной опции -e534 (охватывает все функции)
  • Использование глобальной опции -esym(534,std::basic_string<char>::append(unsigned long, char))
  • Добавление комментария //lint !e534 на одной линии
Другие вопросы по тегам