Analyse statique de programmes manipulant des tableaux - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2013

Analyse statique de programmes manipulant des tableaux

Valentin Perrelle
  • Fonction : Auteur
  • PersonId : 954871

Résumé

Static analysis is key area in compilation, optimization and software validation. The complex data structures (arrays, dynamic lists, graphs, ...) are ubiquitous in programs, and can be challenging, because they can be large or of unbounded size and accesses are computed. (through indexing or indirections) Whereas the verification of the validity of the array accesses was one of the initial motivations of abstract interpretation, the discovery of properties about array contents was only adressed recently. Most of the analyses of array contents are based on a partitioning of the arrays. Then, they try to discover properties about each fragment of this partition. The choice of this partition is a difficult problem and each method have its flaw. Moreover, classical representations of array partitions induce an exponential complexity for these analyzes. In this thesis, we generalize the concept of array partitioning into the concept of "fragmentation" which allow overlapping fragments, handling potentially empty fragments and selecting specialized relations. On the other hand, we propose an abstraction of these fragmentations in terms of graphs called "slices diagrams" as well as the operations to manipulate them and ensuring a polynomial complexity. Finally, we propose a new criterion to compute a semantic fragmentation inspired by the existing ones which attempt to correct their flaws. These methods have been implemented in a static analyzer. Experimentations shows that the analyzer can efficiently and precisly prove some challenging exemples in the field of static analysis of programs manipulating arrays.
L'analyse statique de programmes est un domaine crucial en compilation, en optimisation, et en validation de logiciels. Les structures de données complexes (tableaux, listes, graphes,...), omniprésentes dans les programmes, posent des problèmes difficiles, du fait qu'elles représentent des ensembles de données de taille importante ou inconnue, et que l'adressage des données dans ces ensembles est calculé (indexation, indirection). Si la vérification de la validité des accès aux tableaux a été l'une des motivations initiales de l'interprétation abstraite, la recherche de propriétés concernant le contenu des tableaux est quant à lui un sujet récent. La plupart des travaux sur le sujet reposent sur un partitionnement des tableaux. On est ainsi amenés à considérer un certain nombre de fragments de tableau desquels on cherche à trouver des propriétés. Le choix de cette partition est un problème difficile et chacune des méthodes proposées peut être mise en défaut. Par ailleurs, les représentations classiques des partitions de tableau donnent à ces analyses une complexité exponentielle. Nous proposons d'une part de généraliser le concept de partitionnement de tableau à celui de "fragmentation" permettant à la fois le chevauchement des fragments, la manipulation de fragments potentiellement vides et la sélection de relations spécialisées. D'autre part, nous proposons une abstraction de ces fragmentations en terme de graphes appelés "Diagrammes de tranches" ainsi que les opérations pour les manipuler et assurant une complexité polynomiale à l'analyse. Enfin, nous proposons un nouveau critère de fragmentation sémantique inspiré de ceux de la littérature et tentant d'en corriger les défauts. Ces méthodes ont été implémentées dans un analyseur statique. L'expérimentation démontre qu'elles peuvent analyser avec efficacité et précision un certain nombre d'exemples constituant des défis de l'analyse statique de programmes manipulant des tableaux.
Fichier principal
Vignette du fichier
ThA_se_Valentin_Perrelle_-_Analyse_statique_de_programmes_manipulant_des_tableaux.pdf (1.44 Mo) Télécharger le fichier
Loading...

Dates et versions

tel-00973892 , version 1 (04-04-2014)
tel-00973892 , version 2 (27-06-2017)

Identifiants

  • HAL Id : tel-00973892 , version 1

Citer

Valentin Perrelle. Analyse statique de programmes manipulant des tableaux. Autre [cs.OH]. Université de Grenoble, 2013. Français. ⟨NNT : ⟩. ⟨tel-00973892v1⟩
495 Consultations
319 Téléchargements

Partager

Gmail Facebook X LinkedIn More