hanchenye-llvm-project/clang-tools-extra/test
Vasily Kulikov cac5be495e
[clang-tidy] implement concurrency-mt-unsafe
Checks for some thread-unsafe functions against a black list
of known-to-be-unsafe functions. Usually they access static variables
without synchronization (e.g. gmtime(3)) or utilize signals
in a racy way (e.g. sleep(3)).

The patch adds a check instead of auto-fix as thread-safe alternatives
usually have API with an additional argument
(e.g. gmtime(3) v.s. gmtime_r(3)) or have a different semantics
(e.g. exit(3) v.s. __exit(3)), so it is a rather tricky
or non-expected fix.

An option specifies which functions in libc should be considered
thread-safe, possible values are `posix`, `glibc`,
or `any` (the most strict check). It defaults to 'any' as it is
unknown what target libc type is - clang-tidy may be run
on linux but check sources compiled for other *NIX.

The check is used in Yandex Taxi backend and has caught
many unpleasant bugs. A similar patch for coroutine-unsafe API
is coming next.

Reviewed By: lebedev.ri

Differential Revision: https://reviews.llvm.org/D90944
2020-11-30 12:27:17 +03:00
..
Unit
clang-apply-replacements
clang-change-namespace
clang-doc
clang-include-fixer
clang-move
clang-query
clang-reorder-fields
clang-tidy [clang-tidy] implement concurrency-mt-unsafe 2020-11-30 12:27:17 +03:00
modularize
pp-trace
.clang-format
CMakeLists.txt [CMake][CTE] Add "check-clang-extra-..." targets to test only a particular Clang extra tool 2020-09-25 13:32:56 +02:00
lit.cfg.py Add an explicit toggle for the static analyzer in clang-tidy 2020-09-10 10:48:17 -04:00
lit.site.cfg.py.in Add an explicit toggle for the static analyzer in clang-tidy 2020-09-10 10:48:17 -04:00