Rapport de stage Outils d’analyse statique et
de vérification pour les
applications Java distribuées
Christophe Massol Année 2002-2003 Page 3 sur 40
SOMMAIRE
INTRODUCTION........................................................................................................................................................5
1PRESENTATION DE L’ENTREPRISE........................................................................................................6
2LE PROJET OASIS...........................................................................................................................................8
2.1 LA LIBRAIRIE PROACTIVE................................................................................................................................ 8
2.2 ENVIRONNEMENT D’ANALYSE ET DE VERIFICATION....................................................................................... 9
3OBJECTIFS DU STAGE................................................................................................................................12
3.1 PRESENTATION DU STAGE..............................................................................................................................12
3.2 PLAN DE TRAVAIL PREVISIONNEL..................................................................................................................13
4LES LOGICIELS BANDERA ET SPARK .................................................................................................14
4.1 DESCRIPTION DE BANDERA............................................................................................................................14
4.1.1 Module de transformation Java -> Jimple (JJJC) ............................................................................14
4.1.2 Module d’analyse statique de classes................................................................................................15
4.1.3 Module d’extraction de propriétés (Property Extractor).................................................................15
4.1.4 Module de découpage (Slicing)..........................................................................................................15
4.1.5 Module abstraction .............................................................................................................................16
4.1.6 Module BIR (Bandera Intermediate Representation).......................................................................16
4.1.7 Module de vérification (Model Checking).........................................................................................16
4.2 FONCTIONNEMENT DE BANDERA...................................................................................................................16
4.3 LIMITES DU LOGICIEL BANDERA....................................................................................................................17
4.4 MODULE ABSTRACTION PROPOSE PAR BANDERA.........................................................................................17
4.4.1 Définition de l’abstraction..................................................................................................................17
4.4.2 Module Abstraction dans Bandera.....................................................................................................18
4.4.2.1 Le langage BASL...............................................................................................................................18
4.4.2.2 L’interface utilisateur..........................................................................................................................19
4.4.2.3 Résultats de l’abstraction.....................................................................................................................19
4.4.3 Utilisation du module d’abstraction pour un programme utilisant la librairie ProActive ............19
4.5 SPARK : OUTIL D’ANALYSE STATIQUE DE POINTEURS SUR LANGAGE JIMPLE..............................................19
4.5.1 Utilisation de Spark dans notre analyse............................................................................................21
5TRAVAUX EFFECTUES...............................................................................................................................23
5.1 ADAPTATION DE BANDERA A PROACTIVE....................................................................................................24
5.1.1 Modification du module JJJC.............................................................................................................25
5.1.2 Prise en compte de ProActive.............................................................................................................25
5.2 INTEGRATION DES OUTILS D’ANALYSE DE CLASSE LANDE...........................................................................26
5.3 ANALYSE STATIQUE DES OBJETS ACTIFS.......................................................................................................27
5.3.1 L’analyse des objets actifs..................................................................................................................28
5.3.2 La structure Jimple..............................................................................................................................28
5.3.2.1 Jimple – Nœud Affectation..................................................................................................................29
5.4 ANALYSE STATIQUE DES LIENS DE COMMUNICATION...................................................................................31
5.4.1 Adaptation de Spark pour une analyse d’un code basé sur la librairie ProActive.........................31
5.4.1.1 Intégration de l’appel constructeur.......................................................................................................32
5.4.1.2 Intégration de l’appel à la méthode runActivity.....................................................................................33
5.4.2 Identification d’une communication vers un objet actif ...................................................................33
5.4.3 Limites de l’analyse.............................................................................................................................34
5.4.4 Identification d’une instance d’un objet actif à un point donné.......................................................34
5.5 PLANNING RECAPITULATIF.............................................................................................................................35
5.6 AVANCEMENT.................................................................................................................................................37
5.6.1 Les fonctionnalités implémentées.......................................................................................................37
5.6.2 Les fonctionnalités non terminées......................................................................................................37