https://github.com/matthew-f created https://github.com/llvm/llvm-project/pull/99380
The regular expressions match functions that aren't anchored in the global namespace. For example `::remove` matches any object with a `removeXyz` method. This change is to remove these false positives >From d5aa95877b2c33189be77ecd2914565f77a76ba8 Mon Sep 17 00:00:00 2001 From: matthew-f <551862+matthe...@users.noreply.github.com> Date: Tue, 16 Jul 2024 20:50:45 +0200 Subject: [PATCH 1/4] Ensure functions are in the global namespace --- .../bugprone/UnusedReturnValueCheck.cpp | 124 +++++++++--------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp index 73373147e96fc..c5252966ebe6f 100644 --- a/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp @@ -76,69 +76,69 @@ UnusedReturnValueCheck::UnusedReturnValueCheck(llvm::StringRef Name, "::std::upper_bound$;" "::std::vector::at$;" // C standard library - "::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$;" + "^::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$;" // POSIX - "::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"))), + "^::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"))), CheckedReturnTypes(utils::options::parseStringList( Options.get("CheckedReturnTypes", "::std::error_code$;" "::std::error_condition$;" >From c4fd20f61f518f6c9c35704a2edbcfbeb102bdc6 Mon Sep 17 00:00:00 2001 From: matthew-f <551862+matthe...@users.noreply.github.com> Date: Tue, 16 Jul 2024 20:54:43 +0200 Subject: [PATCH 2/4] Ensure functions are in the global namespace --- .../clang-tidy/bugprone/UnusedReturnValueCheck.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp index c5252966ebe6f..8601aefa60c6c 100644 --- a/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp @@ -107,7 +107,7 @@ UnusedReturnValueCheck::UnusedReturnValueCheck(llvm::StringRef Name, // POSIX "^::access$;" "^::bind$;" - "^^::connect$;" + "^::connect$;" "^::difftime$;" "^::dlsym$;" "^::fnmatch$;" >From a70dab488be4ede79f39e21fcea5579cf3f07dff Mon Sep 17 00:00:00 2001 From: matthew-f <551862+matthe...@users.noreply.github.com> Date: Tue, 16 Jul 2024 21:04:42 +0200 Subject: [PATCH 3/4] Ensure functions are anchored in the global namespace --- .../bugprone/UnusedReturnValueCheck.cpp | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp index 8601aefa60c6c..955a9b94dfaf6 100644 --- a/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp @@ -48,33 +48,33 @@ UnusedReturnValueCheck::UnusedReturnValueCheck(llvm::StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), CheckedFunctions(utils::options::parseStringList( - Options.get("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$;" + Options.get("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$;" // C standard library "^::bsearch$;" "^::ferror$;" >From 0700840a2e4aae3d00ac49d1652274bbf0bc8412 Mon Sep 17 00:00:00 2001 From: matthew-f <551862+matthe...@users.noreply.github.com> Date: Wed, 17 Jul 2024 21:34:10 +0200 Subject: [PATCH 4/4] Ensure functions are anchored in the global namespace The regular expressions match functions that aren't anchored in the global namespace. For example "::remove" matches and object with a "removeXyz" method. This change is to remove these false positives --- .../clang-tidy/cert/CERTTidyModule.cpp | 354 +++++++++--------- 1 file changed, 177 insertions(+), 177 deletions(-) diff --git a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp index ffb62b409b29b..8b5be9cd95f76 100644 --- a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp @@ -49,183 +49,183 @@ namespace { // with NULL argument and in this case the check is not applicable: // `mblen, mbrlen, mbrtowc, mbtowc, wctomb, wctomb_s`. // FIXME: The check can be improved to handle such cases. -const llvm::StringRef CertErr33CCheckedFunctions = "::aligned_alloc;" - "::asctime_s;" - "::at_quick_exit;" - "::atexit;" - "::bsearch;" - "::bsearch_s;" - "::btowc;" - "::c16rtomb;" - "::c32rtomb;" - "::calloc;" - "::clock;" - "::cnd_broadcast;" - "::cnd_init;" - "::cnd_signal;" - "::cnd_timedwait;" - "::cnd_wait;" - "::ctime_s;" - "::fclose;" - "::fflush;" - "::fgetc;" - "::fgetpos;" - "::fgets;" - "::fgetwc;" - "::fopen;" - "::fopen_s;" - "::fprintf;" - "::fprintf_s;" - "::fputc;" - "::fputs;" - "::fputwc;" - "::fputws;" - "::fread;" - "::freopen;" - "::freopen_s;" - "::fscanf;" - "::fscanf_s;" - "::fseek;" - "::fsetpos;" - "::ftell;" - "::fwprintf;" - "::fwprintf_s;" - "::fwrite;" - "::fwscanf;" - "::fwscanf_s;" - "::getc;" - "::getchar;" - "::getenv;" - "::getenv_s;" - "::gets_s;" - "::getwc;" - "::getwchar;" - "::gmtime;" - "::gmtime_s;" - "::localtime;" - "::localtime_s;" - "::malloc;" - "::mbrtoc16;" - "::mbrtoc32;" - "::mbsrtowcs;" - "::mbsrtowcs_s;" - "::mbstowcs;" - "::mbstowcs_s;" - "::memchr;" - "::mktime;" - "::mtx_init;" - "::mtx_lock;" - "::mtx_timedlock;" - "::mtx_trylock;" - "::mtx_unlock;" - "::printf_s;" - "::putc;" - "::putwc;" - "::raise;" - "::realloc;" - "::remove;" - "::rename;" - "::scanf;" - "::scanf_s;" - "::setlocale;" - "::setvbuf;" - "::signal;" - "::snprintf;" - "::snprintf_s;" - "::sprintf;" - "::sprintf_s;" - "::sscanf;" - "::sscanf_s;" - "::strchr;" - "::strerror_s;" - "::strftime;" - "::strpbrk;" - "::strrchr;" - "::strstr;" - "::strtod;" - "::strtof;" - "::strtoimax;" - "::strtok;" - "::strtok_s;" - "::strtol;" - "::strtold;" - "::strtoll;" - "::strtoul;" - "::strtoull;" - "::strtoumax;" - "::strxfrm;" - "::swprintf;" - "::swprintf_s;" - "::swscanf;" - "::swscanf_s;" - "::thrd_create;" - "::thrd_detach;" - "::thrd_join;" - "::thrd_sleep;" - "::time;" - "::timespec_get;" - "::tmpfile;" - "::tmpfile_s;" - "::tmpnam;" - "::tmpnam_s;" - "::tss_create;" - "::tss_get;" - "::tss_set;" - "::ungetc;" - "::ungetwc;" - "::vfprintf;" - "::vfprintf_s;" - "::vfscanf;" - "::vfscanf_s;" - "::vfwprintf;" - "::vfwprintf_s;" - "::vfwscanf;" - "::vfwscanf_s;" - "::vprintf_s;" - "::vscanf;" - "::vscanf_s;" - "::vsnprintf;" - "::vsnprintf_s;" - "::vsprintf;" - "::vsprintf_s;" - "::vsscanf;" - "::vsscanf_s;" - "::vswprintf;" - "::vswprintf_s;" - "::vswscanf;" - "::vswscanf_s;" - "::vwprintf_s;" - "::vwscanf;" - "::vwscanf_s;" - "::wcrtomb;" - "::wcschr;" - "::wcsftime;" - "::wcspbrk;" - "::wcsrchr;" - "::wcsrtombs;" - "::wcsrtombs_s;" - "::wcsstr;" - "::wcstod;" - "::wcstof;" - "::wcstoimax;" - "::wcstok;" - "::wcstok_s;" - "::wcstol;" - "::wcstold;" - "::wcstoll;" - "::wcstombs;" - "::wcstombs_s;" - "::wcstoul;" - "::wcstoull;" - "::wcstoumax;" - "::wcsxfrm;" - "::wctob;" - "::wctrans;" - "::wctype;" - "::wmemchr;" - "::wprintf_s;" - "::wscanf;" - "::wscanf_s;"; +const llvm::StringRef CertErr33CCheckedFunctions = "^::aligned_alloc;" + "^::asctime_s;" + "^::at_quick_exit;" + "^::atexit;" + "^::bsearch;" + "^::bsearch_s;" + "^::btowc;" + "^::c16rtomb;" + "^::c32rtomb;" + "^::calloc;" + "^::clock;" + "^::cnd_broadcast;" + "^::cnd_init;" + "^::cnd_signal;" + "^::cnd_timedwait;" + "^::cnd_wait;" + "^::ctime_s;" + "^::fclose;" + "^::fflush;" + "^::fgetc;" + "^::fgetpos;" + "^::fgets;" + "^::fgetwc;" + "^::fopen;" + "^::fopen_s;" + "^::fprintf;" + "^::fprintf_s;" + "^::fputc;" + "^::fputs;" + "^::fputwc;" + "^::fputws;" + "^::fread;" + "^::freopen;" + "^::freopen_s;" + "^::fscanf;" + "^::fscanf_s;" + "^::fseek;" + "^::fsetpos;" + "^::ftell;" + "^::fwprintf;" + "^::fwprintf_s;" + "^::fwrite;" + "^::fwscanf;" + "^::fwscanf_s;" + "^::getc;" + "^::getchar;" + "^::getenv;" + "^::getenv_s;" + "^::gets_s;" + "^::getwc;" + "^::getwchar;" + "^::gmtime;" + "^::gmtime_s;" + "^::localtime;" + "^::localtime_s;" + "^::malloc;" + "^::mbrtoc16;" + "^::mbrtoc32;" + "^::mbsrtowcs;" + "^::mbsrtowcs_s;" + "^::mbstowcs;" + "^::mbstowcs_s;" + "^::memchr;" + "^::mktime;" + "^::mtx_init;" + "^::mtx_lock;" + "^::mtx_timedlock;" + "^::mtx_trylock;" + "^::mtx_unlock;" + "^::printf_s;" + "^::putc;" + "^::putwc;" + "^::raise;" + "^::realloc;" + "^::remove;" + "^::rename;" + "^::scanf;" + "^::scanf_s;" + "^::setlocale;" + "^::setvbuf;" + "^::signal;" + "^::snprintf;" + "^::snprintf_s;" + "^::sprintf;" + "^::sprintf_s;" + "^::sscanf;" + "^::sscanf_s;" + "^::strchr;" + "^::strerror_s;" + "^::strftime;" + "^::strpbrk;" + "^::strrchr;" + "^::strstr;" + "^::strtod;" + "^::strtof;" + "^::strtoimax;" + "^::strtok;" + "^::strtok_s;" + "^::strtol;" + "^::strtold;" + "^::strtoll;" + "^::strtoul;" + "^::strtoull;" + "^::strtoumax;" + "^::strxfrm;" + "^::swprintf;" + "^::swprintf_s;" + "^::swscanf;" + "^::swscanf_s;" + "^::thrd_create;" + "^::thrd_detach;" + "^::thrd_join;" + "^::thrd_sleep;" + "^::time;" + "^::timespec_get;" + "^::tmpfile;" + "^::tmpfile_s;" + "^::tmpnam;" + "^::tmpnam_s;" + "^::tss_create;" + "^::tss_get;" + "^::tss_set;" + "^::ungetc;" + "^::ungetwc;" + "^::vfprintf;" + "^::vfprintf_s;" + "^::vfscanf;" + "^::vfscanf_s;" + "^::vfwprintf;" + "^::vfwprintf_s;" + "^::vfwscanf;" + "^::vfwscanf_s;" + "^::vprintf_s;" + "^::vscanf;" + "^::vscanf_s;" + "^::vsnprintf;" + "^::vsnprintf_s;" + "^::vsprintf;" + "^::vsprintf_s;" + "^::vsscanf;" + "^::vsscanf_s;" + "^::vswprintf;" + "^::vswprintf_s;" + "^::vswscanf;" + "^::vswscanf_s;" + "^::vwprintf_s;" + "^::vwscanf;" + "^::vwscanf_s;" + "^::wcrtomb;" + "^::wcschr;" + "^::wcsftime;" + "^::wcspbrk;" + "^::wcsrchr;" + "^::wcsrtombs;" + "^::wcsrtombs_s;" + "^::wcsstr;" + "^::wcstod;" + "^::wcstof;" + "^::wcstoimax;" + "^::wcstok;" + "^::wcstok_s;" + "^::wcstol;" + "^::wcstold;" + "^::wcstoll;" + "^::wcstombs;" + "^::wcstombs_s;" + "^::wcstoul;" + "^::wcstoull;" + "^::wcstoumax;" + "^::wcsxfrm;" + "^::wctob;" + "^::wctrans;" + "^::wctype;" + "^::wmemchr;" + "^::wprintf_s;" + "^::wscanf;" + "^::wscanf_s;"; } // namespace _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits