L'analyse statique désigne l'ensemble des techniques qui permettent de déduire automatiquement des propriétés des programmes. L'analyse statique a surtout été étudiée dans le passé dans le contexte de la production de code optimisé (analyse de flots de données, durée de vie des variables, nécessité, ...) et la plupart des compilateurs actuels intègrent des analyses sophistiquées. Nous nous sommes focalisés récemment sur une autre application de l'analyse statique qui concerne la preuve de propriétés de correction de programmes. Cette démarche permet de proposer des outils d'aide à la mise au point et à la certification de programmes qui sont définis formellement et peuvent apporter une aide appréciable au programmeur. Nous avons considéré dans cet esprit des analyses de programmes fonctionnels (propriétés uniformes sur des structures de données récursives) et impératifs (propriétés de sécurité, manipulation correcte de pointeurs). Nous étudions aussi l'analyse de programmes dans une perspective générale : d'une part, nous avons proposé une technique pour la construction d'analyseurs efficaces reposant sur la notion de types paresseux ; d'autre part, nous explorons une méthode générique de définition d'analyseurs à partir d'une sémantique naturelle du langage de programmation.