Le coût de la détection statique d'erreurs est très inférieur à celui de la détection dynamique, aussi appelée "mise au point" ou debugging de programme.
Il n'est malheureusement pas possible de détecter statiquement toutes les erreurs possibles mais les analyses de programmes interprocédurales développées dans le cadre de la parallèlisation automatique permettent d'envisager la détection statique d'erreurs ignorées par les outils actuels. Il s'agit des calculs interprocéduraux d'effets, de préconditions et de régions de tableaux, de use-defs et graphe de dépendance, et de détection de zones de code mort (syntaxiquement, ou du fait du contrôle, ou du fait des use-def chains).
L'objectif de ce stage est d'implémenter l'exploitation de ces analyses interprocédurales et de signaler au programmeur un maximum (1) d'erreurs "sures", par exemple un élément de tableau non initialisé mais utilisé, et (2) d'erreurs "possibles", par exemple un élément de tableau calculé mais non utilisé ou l'accès à un élément de tableau hors des dimensions déclarées. Il faudrait aussi détecter des erreurs qui ne sont pas mises en évidence par des tests usuels, comme, par exemple, l'absence de test sur un paramètre lu qui doit absolument être positif pour que l'exécution ait un sens.
Si le temps le permet, ce sujet s'étend naturellement à l'instrumentation de programme de manière à tester que les erreurs potentielles ne se manifestent pas, tout en évitant de tester inutilement les erreurs dont on peut prouver statiquement qu'elles n'existent pas.
Contact: François Irigoin - 01 64 69 48 48 - irigoin@cri.ensmp.fr
Voir aussi
la description du projet PIPS.