Placement
Lexical tools are very general, but are often imprecise because they have no knowledge of the underlying programming language
Syntactic tools have some knowledge of the language, are harder to implement, but can give more precise answers
Semantic tools have deeper knowledge of the language, but generally don’t scale, don’t work on real languages and are hard to implement