– C’est quoi l’analyse statique ?

L’analyse statique permet d’obtenir des informations sur le comportement de votre code lors de son exécution sans l’exécuter. Contrairement à l’analyse dynamique (comme le débogage) qui demande l’exécution du programme.

– Ok, mais à quoi ça sert concrètement ?

  1. À gagner du temps, en supprimant les cycles de sauvegarde/exécution à cause d’erreurs syntaxiques (oublie d’un « ; », variable ou fonction non déclarée, erreur de frappe,…). Corriger ces erreurs lors du débogage, vous demandera d’éditer, sauvegarder, (re)compiler ou (re)exécuter votre programme pour chacune d’entre elles.
  2. À gagner en performance, en identifiant les librairies/variables/fonctions non utilisées ou « mal » déclarées. Indispensable quand on est autodidacte ou qu’on a suivi une formation rapide pour programmer.
  3. À gagner en lisibilité, en invitant à suivre les règles stylistiques recommandées/acceptées par un groupe de programmeurs qui se sont intéressés à cette problématique. C’est notamment très utile pour apprendre un nouveau langage de programmation.

– Ça m’intéresse, comment ça fonctionne ?

Tout dépend de vos habitudes de programmation : vous préférez écrire votre code dans un éditeur de texte ou dans un environnement de développement (IDE en anglais) ?

La plupart des IDE (comme Eclipse) ont des outils d’analyse statique déjà intégrés ou des plugins à installer en fonction de votre langage de programmation (par exemple: PyDev pour écrire du python avec Eclipse). Ces outils vont directement souligner/identifier les erreurs (comme un correcteur d’orthographe).

Pour ceux qui préfèrent utiliser un simple éditeur de texte (comme votre humble serviteur), il existe de petits programmes (couramment appelés linter) qu’on peut attacher/ajouter à l’éditeur de son choix (emacs, vim, sublime text, …). Ici aussi, vos erreurs seront soulignées et pourront être identifiées d’un simple coup d’oeil à votre code. Elles deviennent donc très faciles à corriger.

Les erreurs sont en rouge et les avertissements en jaune

Les erreurs sont en rouge (Undifined name ‘Tot’) et les avertissements en jaune (imported but unused).

Si votre éditeur de texte ne possède pas de « linter », il est possible d’installer ces programmes individuellement et de faire apparaître la liste des erreurs et des avertissements en les exécutant à l’aide d’une console. C’est moins pratique mais toujours plus efficace que le « débogage classique ».

flake8

Si vous ne savez pas quelles solutions choisir, je vous recommande d’essayer Sublime Text avec le package sublimeLinter. C’est un éditeur très simple à utiliser et très efficace avec un gestionnaire de packages qui facilitera l’installation des linter. Pour vos premiers pas avec Sublime Text, vous pouvez trouver de l’aide : ici.