Static analysis is a static testing technique that analyzes source code without executing it. It can find faults like unreachable code, undeclared variables, and array bound violations. Some key advantages are that it can find faults difficult to see otherwise and provides an objective assessment of code quality. However, it also has limitations like not being able to distinguish fail-safe code from actual faults. Reviews are also useful for finding faults early and help achieve consensus, while inspections are more formal reviews.