Doesn't my compiler already do syntax checking?
While compilers usually perform adequate syntax checks, a good lint tool provides problem identification features that typical compilers don't offer, like precision tracking, value tracking, initialization checking, strong type checking, and macro analysis. A good lint tool will also provide FYI messages to give you tips on best practices. The lint tool should be able to also look across a set of modules to find inconsistencies and redundancies. These are things a compiler can't do, and that can be difficult and risky to perform manually for today's complex and mission critical applications.
Basic linting capabilities have started appearing in compilers, but these features still tend to pail in comparison to today's dedicated static analyzers.