Detection of Uncaught Exceptions in Functional Programs by Abstract Interpretation (Extended Version) - Inria - Institut national de recherche en sciences et technologies du numérique
Rapport (Rapport De Recherche) Année : 2024

Detection of Uncaught Exceptions in Functional Programs by Abstract Interpretation (Extended Version)

Détection par interprétation abstraite d'exceptions non rattrapées dans des programmes fonctionnels (Version étendue)

Résumé

Exception handling is a key feature in modern programming languages. Exceptions can be used to deal with errors, or as a means to control the flow of execution of a program. Since they might unexpectedly terminate a program, unhandled exceptions are a serious safety concern. We propose a static analysis to detect uncaught exceptions in functional programs, that is defined as an abstract interpreter. It computes a description of the values potentially returned by a program using a novel abstract domain, that can express inductively defined sets of values. Simultaneously, the analysis infers the possibly raised exceptions, by computing in the abstract exception monad. This abstract interpreter has been implemented as an effective static analyser for a large subset of OCaml programs, that supports mutable data types, the OCaml module system, and dynamically extensible data types such as the exception type. The analyser has been evaluated on several hundreds of OCaml programs.
Les exceptions permettent de gérer les erreurs dans un programme, et sont un moyen de modifier leur flot de contrôle. Puisque les exceptions peuvent arrêter un programme de manière abrupte, les exceptions non rattrapées constituent un problème de sûreté important. Nous décrivons une analyse statique qui détecte les exceptions non rattrapées dans des programmes fonctionnels. Cette analyse est définie comme un interpréteur abstrait. Elle calcule une description des valeurs potentiellement produites par un programme à l'aide d'un nouveau domaine abstrait, qui peut représenter des ensembles de valeurs définis inductivement. Cette analyse infère simultanément les exceptions qui peuvent être lancées, en calculant dans la monade d'exception abstraite. Nous avons implémenté cet interpréteur abstrait, qui effectue une analyse statique pour un sous-ensemble important des programmes OCaml. Sont en particulier supportés les types de données algébriques mutables, le système de modules d'OCaml, et les types de données extensibles dynamiquement tels, dont le type des exceptions est un exemple. Nous avons évalué cet analyseur sur plusieurs centaines de programmes OCaml.
Fichier principal
Vignette du fichier
RR-9536.pdf (1.09 Mo) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)
Licence

Dates et versions

hal-04410771 , version 1 (29-01-2024)

Licence

Identifiants

  • HAL Id : hal-04410771 , version 1

Citer

Pierre Lermusiaux, Benoît Montagu. Detection of Uncaught Exceptions in Functional Programs by Abstract Interpretation (Extended Version). RR-9536, Inria. 2024, pp.38. ⟨hal-04410771⟩
162 Consultations
78 Téléchargements

Partager

More