Comme la revue, L’analyse statique est une technique de test statique.
L’analyse statique est un moyen de trouver les défauts d’un code logiciel avant de l’exécuter.
On dit que l’analyse statique trouve des défauts plutôt que des défaillances parce que les défaillances nécessitent l’exécution du logiciel.
Comme tous les défauts ne produisent pas forcément des défaillances lors de l’exécution, l’analyse statique permet de détecter des défauts difficiles à trouver par les tests dynamiques.
L’analyse statique est généralement réalisée par de développeurs qui utilisent des outils d’analyse statique du code source.
Ces tests sont donc généralement automatisés.
Un outil d’analyse statique permet de parcourir le code source écrit avec un langage de programmation, une page HTML destinée à être lue par un navigateur ou des fichiers de données structurés grâce au langage de balisage XML.
Les outils d’analyse statique peuvent ainsi détecter dans le code source :
- Qu’une variable est mal référencée
- Que les interactions entre des modules ou des composants sont mal définis
- Que des variables sont déclarées mais jamais utilisées dans le code.
- Que des variables sont mal définies dans le code, comme une variable de type entier qu’on manipule comme un tableau.
- Qu’un code ne soit jamais accessible parce qu’il est contenu dans une fonction qui n’est jamais appelée.
- Que des erreurs logiques ont conduit à des boucles infinies, et coince l’exécution du logiciel jusqu’au plantage.
- La complexité dans un code source n’est pas souhaitée, elle augmente le risque de faire des erreurs et donc d’introduire des défauts.
- Les outils d’analyse statiques peuvent être paramétrées pour vérifier le respect des standards de programmation, comme la séparation des couches métier, de vue et de données, le respect des règles de nommage, la déclaration de variables, l’utilisation des commentaires…etc
- L’analyse statique vérifie aussi des règles de sécurités comme les contrôles qui sont faits sur les saisies des champs des formulaires.
- L’outil d’analyse statique aide les développeur grâce à l’auto-complétion lors du codage pour éviter les erreurs de syntaxe et le respect de l’architecture du logiciel.
Cela permet de :
- Détecter des défauts avant l’exécution du code et l’exécution des tests dynamiques.
- Grâce à l’analyse statique l’équipe est informée au plus tôt sur les faiblesses du code ou de sa conception, ce qui peut orienter les tests dynamiques et améliorer leur efficacité.
- Grâce à l’analyse statiques des défauts comme « le code mort » sont détectés alors que c’est impossible de les trouver par des tests dynamiques
- Les dépendances entre les composants du modèle logiciel peuvent introduire des régressions et des comportement indésirables quand ils ne sont pas clairement identifiés. L’analyse statique donne une meilleure visibilité sur les liens et les dépendances entre les différents composants du code.
- Quand le logiciel est bien conçu, la complexité du code est contrôlée et les dépendances entre les différents composants sont maîtrisés, la maintenance du code devient plus facile, et introduire un développement supplémentaire pour faire évoluer le logiciel devient moins risqué pour sa qualité (régressions).
- Les outils d’analyse statiques sont un bon moyen d’accompagner les développeurs pour s’assurer de la bonne qualité des développements.
Les outils d’analyse statique sont aujourd’hui inclus dans les compilateurs comme Eclipse et NetBeans. Le développeur bénéficie alors ces services d’analyse pendant qu’il écrit son code.
L’analyse statique peut aussi être déclenchée par des évènement comme le lancement des tests unitaires, les tests d’intégration ou quand plusieurs développeurs travaillent sur le même logiciel un serveur de gestion de configuration assure la cohérence du code et peut déclencher aussi les traitements de l’analyse statique pendant la mise à jour du code.
Les outils d’analyse statiques sont configurables, le développeur peut choisir les standards de programmations et les règles que le code doit respecter. Sur la base de cette configuration, l’analyse statique génère des messages d’erreurs bloquants qui suscite une correction ou des avertissements qui ne nécessitent pas forcément de correction.
Le choix de la configuration de l’outil d’analyse statique doit être identique pour tous les développeurs qui interviennent sur une même application logicielle.