[clang-tools-extra] Ensure functions are anchored in the global namespace (PR #99380)

via cfe-commits cfe-commits at lists.llvm.org
Wed Jul 17 12:43:54 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-tools-extra

Author: None (matthew-f)

<details>
<summary>Changes</summary>

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

---

Patch is 23.39 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/99380.diff


1 Files Affected:

- (modified) clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp (+177-177) 


``````````diff
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;"
+                                ...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/99380


More information about the cfe-commits mailing list