bugprone-unused-return-value

警告未使用的函数返回值。可以配置要检查的函数。

忽略具有赋值语义的运算符重载。

选项

CheckedFunctions

要检查的函数的以分号分隔的列表。此参数支持正则表达式。如果名称和范围匹配(带任何参数),则检查函数。默认情况下,将检查以下函数:^::std::async$, ^::std::launder$, ^::std::remove$, ^::std::remove_if$, ^::std::unique$, ^::std::unique_ptr::release$, ^::std::basic_string::empty$, ^::std::vector::empty$, ^::std::back_inserter$, ^::std::distance$, ^::std::find$, ^::std::find_if$, ^::std::inserter$, ^::std::lower_bound$, ^::std::make_pair$, ^::std::map::count$, ^::std::map::find$, ^::std::map::lower_bound$, ^::std::multimap::equal_range$, ^::std::multimap::upper_bound$, ^::std::set::count$, ^::std::set::find$, ^::std::setfill$, ^::std::setprecision$, ^::std::setw$, ^::std::upper_bound$, ^::std::vector::at$, ^::bsearch$, ^::ferror$, ^::feof$, ^::isalnum$, ^::isalpha$, ^::isblank$, ^::iscntrl$, ^::isdigit$, ^::isgraph$, ^::islower$, ^::isprint$, ^::ispunct$, ^::isspace$, ^::isupper$, ^::iswalnum$, ^::iswprint$, ^::iswspace$, ^::isxdigit$, ^::memchr$, ^::memcmp$, ^::strcmp$, ^::strcoll$, ^::strncmp$, ^::strpbrk$, ^::strrchr$, ^::strspn$, ^::strstr$, ^::wcscmp$, ^::access$, ^::bind$, ^::connect$, ^::difftime$, ^::dlsym$, ^::fnmatch$, ^::getaddrinfo$, ^::getopt$, ^::htonl$, ^::htons$, ^::iconv_open$, ^::inet_addr$, isascii$, isatty$, ^::mmap$, ^::newlocale$, ^::openat$, ^::pathconf$, ^::pthread_equal$, ^::pthread_getspecific$, ^::pthread_mutex_trylock$, ^::readdir$, ^::readlink$, ^::recvmsg$, ^::regexec$, ^::scandir$, ^::semget$, ^::setjmp$, ^::shm_open$, ^::shmget$, ^::sigismember$, ^::strcasecmp$, ^::strsignal$, ^::ttyname$

  • std::async()。不使用返回值会使调用变为同步。

  • std::launder()。不使用返回值通常意味着程序员误解了函数接口。只有返回的指针被“清洗”,而不是参数。

  • std::remove()std::remove_if()std::unique()。返回的迭代器指示要保留的元素和要删除的元素之间的边界。不使用返回值意味着关于要删除哪些元素的信息将丢失。

  • std::unique_ptr::release()。如果不使用返回值,如果同一个指针没有存储在其他地方,则会导致资源泄漏。通常,忽略 release() 返回值表示程序员将该函数与 reset() 混淆。

  • std::basic_string::empty()std::vector::empty()。不使用返回值通常表示程序员将该函数与 clear() 混淆。

CheckedReturnTypes

要检查的函数返回类型的以分号分隔的列表。默认情况下,将检查以下函数返回类型:^::std::error_code$^::std::error_condition$^::std::errc$^::std::expected$^::boost::system::error_code$

AllowCastToVoid

控制是否允许将返回值强制转换为 void。默认值:false.

cert-err33-c 是此检查的别名,它检查一组固定且大型的标准库函数。