.: Les
outils QA :.
La société Programming Research a développée un outil de vérification de code. Il ne simule pas le code mais remplace une relecture. L'outil permet de détecter un grand nombre d'erreurs ou de codes pouvant engendrer des problèmes. Il se décline en 3 versions : |
L'outil effectue une analyse module par module.
Il réalise une "précompilation", tout l'environnement
du projet doit donc lui être fourni ( .h, directives de précompilations...).
Une fois les macros étendues, le fichier est "parsé"
comme lors d'une compilation. Puis le résultat est analysé
en fonction de chaque règle. |
Dispose pour chaque langage de plus de
1000 règles standard (Normes ISO, C ANSI, K&R, ...). Permet d’implémenter ses propres règles de vérification. Par exemple permet de vérifier les règles de nommage qui sont propre à l'entreprise. L'ajout de règles s'effectue soit en réalisant une analye complémentaire des fichiers de résultats fournis par les outils, soit en analysant directement les fichiers sources. Un petit utilitaire livré avec les outils permet d'ajouter une erreur au fichier contenant toutes les erreurs détectées sur le module. Navigation simple et efficace (html). Un fichier html est fourni en résultat. Il contient le fichier source analysé, annoté des erreurs détectées. La navigation est êtrement aisée entre la documentation et les fichiers résultats. L'affichage des erreurs peut être filtré pour ne faire apparaître que les plus pertinentes. Possibilité de configurer les outils en fonctions des cibles. Comme par exemple définir un double comme un 32 ou 64 bits, suivant la cible. Fonctionne en ligne de commande. Il est donc facile d'interfacer les outils avec un éditeur de texte type Visual SlickEdit. |
Analyse module par module. Le point noir! Un petit exemple : Une structure comportant 10 champs est définie en globale et inclue dans tous les modules. Si un module n'utilise que 2 champs, il y aura un message d'erreur sur les 8 autres spécifiant qu'ils doivent être retirés car inutiles !! Les messages apparaîssent même si les champs sont utilisés dans d'autres modules. Pas de vérification dynamique. Ce n'est pas le but de l'outil, mais cela implique que pour avoir une vérification exhaustive il faudra le coupler à un outil de vérification dynamique. Encore un petit exemple : int tab[10]; int i=50; tab[i]=0; Ceci passe sans problème sous QAC ... |
C'est ici. |
Les outils sont très efficaces pour l'anlyse statique mais incapable de concrètement identifier une suite d'instructions provoquant une erreur d'exécution. Il faut donc impérativement utiliser en complément un outil de tests dynamique. |