Ο εντοπισμός λαθών σε προγράμματα κατά τη διαδικασία της αναπτυξης καθώς και οι έλεγχοι σε ήδη υπάρχοντα κώδικα συνιστούν σημαντικό μέρος του χρόνου που απαιτείται για την αναπτυξη και την συντήρηση εφαρμογών. Συνεπώς η ανάπτυξη εργαλείων που βοηθούν τον προγραμματιστή στον εντοπισμό λαθών είναι σημαντική για τον περιορισμό του απαιτούμενου χρόνου και την αύξηση της αποτελεσματικότητας των ελέγχων. Αυτή η εργασία γίνεται στο πλαίσιο του Dialyzer, ενός εργαλείου που χρησιμοποιεί στατική ανάλυση για να προσδιορίσει λάθη σε προγράμματα στη γλώσσα Erlang. Η ανίχνευση λαθών βασίζεται στην εξαγωγή
τύπων με χρήση τύπων επιτυχίας (success typings), η οποία όμως δεν υποστηρίζει πολυμορφικούς τύπους στα ορίσματα και στους τύπους επιστροφής των συναρτήσεων. Σε αυτή την εργασία επεκτείνονται οι δυνατότητες του Dialyzer με την εισαγωγή πολυμορφικών τύπων με στόχο την ανίχνευση, με μεγαλύτερη ακρίβεια, λαθών σε προγράμματα όπου χρησιμοποιούνται πολυμορφικές δομές δεδομένων.
Error correction in programs during the development phase as well as in existing code
tends to consume a significant fraction of programmers’ time. Tools that address this
problem by automating error detection result in less time consumed during development
and testing as well as reduced number of bugs. This thesis is done in the context of the
Dialyzer, a static analysis tool that detects programmer errors in Erlang programs such as
definite type errors, unreachable code due to unsatisfiable conditions, concurrency errors,
etc. To detect type errors, Dialyzer is using type inference of success typings, which albeit
is currently restricted to inferring monomorphic types of arguments and return results of
functions. This thesis presents the extention of this analysis to add parametricity to these
types and thereby be able to possibly catch more errors in programs where polymorphic
types such as sets, trees, etc. are used.