S6: semantica basati ricerca sulla di codici

 S6: semantica basati ricerca sulla  di codici

Il nostro lavoro sulla ricerca del codice è progettato per consentire ai programmatori di sfruttare i grandi riferimenti del codice open source disponibile. I tradizionali motori di ricerca come Codeearch, Koders o Krugle di Google forniscono l'accesso a tali ripositori ma non semplificano realmente il lavoro dei programmatori nell'uso del codice. Prendono le parole chiave e restituiscono potenzialmente centinaia di pezzi di codice candidati. Il programmatore deve quindi esaminare ciascuno di questi file restituiti. Devono quindi vedere se il codice potrebbe essere rilevante. Se lo è, devono leggerlo in dettaglio per determinare se è esattamente ciò che vogliono o almeno vicino ad esso. Infine, devono adattare il codice per soddisfare le loro particolari esigenze in materia di denominazione, formattazione, gestione degli errori, ecc.

 

Riteniamo che un approccio migliore sarebbe di avere il programmatore che fornisce informazioni più precise su ciò che vogliono e poi fare in modo che il sistema esegua il lavoro di controllo dei frammenti di codice restituiti, di modificare il codice per fare ciò che vuole il programmatore e di trasformare il codice per adattarlo al framework di destinazione. Il nostro "front end" di ricerca ha il programmatore di definire la semantica di ciò che vogliono. Ciò include le parole chiave come descrizione informale, firma, casi di test e contratti (tramite JML) per le specifiche funzionali, i vincoli di sicurezza (utilizzando il modello di sicurezza Java) e i vincoli di threading (non completamente implementati). Inoltre, l'utente può fornire un contesto in cui il codice si adatta. Il front-end tenta di rendere queste specifiche facili da fornire.

 

Il sistema funziona utilizzando le parole chiave per accedere a uno dei motori di ricerca del codice disponibili (o un motore di ricerca del codice locale per il codice disponibile su Brown), per ottenere i file candidati. Ogni classe o metodo in questi file (a seconda di ciò che l'utente sta cercando) è considerato una potenziale soluzione. Queste soluzioni vengono quindi trasformate utilizzando un set di circa 30 trasformazioni nel tentativo di mappare il codice esattamente nel modo specificato dal programmatore. Le trasformazioni vanno dal semplice (ad esempio cambiando il nome del metodo per far corrispondere la firma) al complesso (ad esempio, trovando una linea nel metodo che calcola un valore del tipo restituito e poi facendo una slice all'indietro finché le uniche variabili libere non sono valori dei tipi di parametri). Tutte le soluzioni che possono essere trasformate in modo che corrispondano alla firma vengono quindi testate utilizzando i casi di test specificati, i vincoli di sicurezza e le regole JML. Ulteriori trasformazioni possono essere applicate in base ai risultati dei test case. Le soluzioni che superano i casi di test vengono quindi formattate in base allo stile specificato dall'utente, ordinate per dimensione, complessità o prestazioni nei casi di test e presentate all'utente.

 

Il sistema può essere provato (la maggior parte delle volte - a volte il server è inattivo) su http://conifer.cs.brown.edu/s6.

Nel lavoro del seguito S6 originale, abbiamo esteso il sistema per trovare le interfacce utente fornite con uno schizzo dell'interfaccia utente e per trovare i codici di test dati che devono essere testati.

Documenti:

Ricerca del codice basata sulla semantica, ICSE 2009, maggio 2009.

Specifica di cosa cercare, SUITE 2009, maggio 2009.

Alla ricerca dell'interfaccia utente, ASE 2014.

Creazione di casi di test utilizzando la ricerca codice, non pubblicata.

Hunter: Next-Generator Code Reuse For Java di Yuepeng Want, Yu Feng, Ruben Martins, Arati Kaushik, Isil DIllig e Steven Reiss, FSE 2016.

Alla ricerca dell'interfaccia utente di Steven Reiss, Yun Miao e Qi Xin, Automated Software Engineering Journal, 2017.

 

Immagini

Front End:

 

S6 front end image

 

Front-end che mostra i risultati:

front end with results

 

Schema degli interni:

internal view

 

Software Il software è disponibile su ftp://ftp.cs.brown.edu/u/spr/s6.tar.gz.

Welcome To EMFURN!

Let's start off on the right foot. Sign up below and get $20 off your first order!