4 ms·
Static analysis is, of course, very restricted in what it can give you answers to, although I'd still love to have more advanced tools widely available. What I
by slrz 10y ago
Static analysis is, of course, very restricted in what it can give you answers to, although I'd still love to have more advanced tools widely available.
What I really consider a game-changer for concurrent programming are the dynamic checkers integrated into recent versions of GCC and Clang (and the Go compilers, too). Those make it super easy to flag data races and don't have any false positives. Caveats apply, naturally, as they can only flag those races that actually happen during a particular execution of your code.
While Valgrind and similar tools could do that for years, the difference with TSan is speed. It's fast enough that you can use it all the time during development. Same for AddressSanitizer and the undefined behaviour checkers.