Static Analysis
In the Chapter 5, Coding Practices, there's a section on Code Reviews. Knowing that reviewers will find and fixate upon the simplest problems they can find, wouldn't it be great to remove all the trivial problems so that they're forced to look for something more substantial?
This is what static analysis does. It finds problems in code that can be automatically discovered without running the product, but that are either off-topic for compiler warnings or take too long to discover for the compiler to be an appropriate tool to search for them.
What are off-topic problems? Typically, those that require knowledge of the semantics of the functions or methods you're using – knowledge that's beyond the scope of the compiler. For example, consider a C++ destroyObject<T>(T t) function that deletes its parameter. Calling that function twice with the same argument would be an error – but the compiler doesn't know that if it's just...