Kind of like making C or C++ safe is a near-unsolvable problem for most values of "safe" and there's an ever-growing set of static and dynamic analysis tools detecting things like uninitialized memory access, out of bounds access, data races, integer overflow, etc. etc. etc. And each of these tools gives you a different mix of false positives, false negatives, build time overhead (including getting the program to build with the tool at all) and runtime overhead (including getting the program to run), not to mention availability on a given platform and pricing. And different people have a different preference with respect to what this mix should be for their tool of choice. But the problem is unsolvable which is why it's worth to be "trying everything."