L'analyse statique et les compilateurs fournissent tous deux des avertissements utilisés pour améliorer la qualité du code et servent de première méthode d'identification des problèmes avant l'exécution et le débogage. Un compilateur utilise une analyse statique pendant la compilation pour générer des avertissements, mais la qualité et la portée des diagnostics sont limitées et peuvent varier.