Rimozione automatica di falsi allarmi mediante compilazione

Data inizio
13 febbraio 2017
Durata (mesi) 
24
Dipartimenti
Informatica
Responsabili (o referenti locali)
Giacobazzi Roberto

L’analisi automatica di programmi deve essere corretta, efficiente e precisa. L’interpretazione astratta e un metodo ampiamente riconosciuto e usato per specificare algoritmi di analisi di programmi come approssimazione della semantica del linguaggio di programmazione che sono corretti per costruzione. Il principale compromesso lo si ha tra l ’efficienza , raggiungibile semplificando i domini astratti e utilizzando operatori di widening, e la precisione che necessita di domini astratti piu complessi. Tipicamente per evitare i falsi positivi si modifica il dominio astratto, in questo progetto invece proponiamo di modificare il codice rispetto ad un certo dominio astratto. Studieremo le proprieta fondamentali di famiglie di programmi per cui una certa analisi e precisa (i.e., non ci sono falsi allarmi). Svilupperemo poi un prototipo di compilatore con lo scopo di trasformare un programma P in un programma Q semanticamente equivalente e che minimizza il numero di falsi allarmi per un certo dominio astratto A. Questo si ottiene sfruttando tecniche di machine learning su grandi quantita di codice, dove programmi, incluso P, sono messi in relazione rispetto al loro grado di similarita. In questo modo e possibile identificare in modo automatico frammenti di codice equivalenti a quelli utilizzati da P e che, quando analizzati da A, producono un numero minore di falsi allarmi. Si dovranno poi sviluppare algoritmi di sintesi di codice per trasformare P in Q in modo da tale che Q abbia una struttura che assomigli a quella dei frammenti di codice che migliorano l’analisi A. Il risultato sara un prototipo di compilatore che dato un programma P e un’astrazione A rimuove automaticamente la maggior parte dei falsi allarmi prodotti analizzano P sul dominio A.

Partecipanti al progetto

Roberto Giacobazzi
Professore ordinario

Attività

Strutture