Chapter 9. The Clang Static Analyzer
Humans show difficulty in planning the construction of an abstract apparatus for which they cannot easily measure the size of and quantify effort. Not surprisingly, software projects show a remarkable history of failures owing to an unhandled increase in complexity. If building complex software requires an unusual amount of coordination and organization, maintaining it is perhaps an even tougher challenge.
Still, the older the software gets, the harder it becomes to maintain. It typically reflects the effort of different generations of programmers with contrasting views. When a new programmer is in charge of maintaining old software, it is common practice to simply tightly wrap unintelligible old code pieces, isolate the software, and turn it into an untouchable library.
Such complex code bases demand a new category of tools to aid programmers in taming obscure bugs. The purpose of the Clang Static Analyzer is to offer an automated way to analyze...