L'analyse du flux de données fonctionne sur un graphique de flux de contrôle. Lorsqu'un langage considéré prend en charge les exceptions, le graphique du flux de contrôle peut exploser.
Quelles sont les techniques standard pour faire face à cette explosion? Pouvons-nous ignorer les bords induits par exception? Les analyses de flux de données calculent de toute façon des sur-approximations, nous nous retrouverions donc avec une solution moins précise mais saine. Est-ce vrai?
Mise à jour : Voici quelques liens utiles que j'ai pu découvrir à la fin:
Réponses:
Ignorer les exceptions n'est pas valable. Exemple:
Lors de l'analyse
f
, vous devez prendre en compte le fait queg
déclenche une exception, sinon vous concluriez à tort quex
c'est toujours 0 au retour def
.Je ne sais pas s'il existe une technique «standard» pour traiter les exceptions. Il y a de la littérature sur le sujet, je n'ai aucune idée de quels articles sont pertinents que je peux trouver par une recherche Google.
Formellement, les exceptions peuvent être transformées en instructions conditionnelles qui se propagent dans la chaîne d'appels, ce qui fait bien sûr exploser le graphique du flux de contrôle. Dans de nombreux cas concrets, le cas d'exception est le cas le moins intéressant, où beaucoup de données sont tuées, donc elles doivent être traitées paresseusement dans une approche directe (pas besoin d'analyser la vivacité sur le chemin d'exception si le gestionnaire tue les données) .
la source