Prévention du déréférencement de références nulles dans un langage à objets
Abstract
Le déréférencement de références nulles est une erreur de programmation courante dans les langages à objets. Pour la prévenir, certaines approches garantissent statiquement son absence à l'aide de systèmes de types ou d'annotations mais réduisent l'expressivité du langage. D'autres approches analysent plutôt le code source pour identifier les erreurs potentielles, mais peuvent trouver des faux-positifs et ne garantissent pas l'absence d'erreurs à l'exécution. Dans cet article, nous proposons une approche offrant la garantie statique d'absence d'erreur de déréférencement dans une grande portion du code. L'approche consiste en un système de types statiques simple, des vérifications dynamiques et un opérateur de test dynamique. En plus de préserver l'expressivité du langage, notre approche limite la zone de danger à la construction des instances et permet la détection précoce des erreurs à l'exécution. Nos mesures expérimentales démontrent une grande étendue des garanties statiques et l'efficacité de la détection précoce des erreurs.