S6: Semantica pe bază de căutare Codul
Munca noastra privind căutarea de cod este conceput pentru a permite programatorilor să profite de depozite mari de disponibil open-source cod. Motoarele de căutare tradiționale, cum ar fi codul codesearch Google, Koders, sau Krugle oferi acces la arhive astfel, dar nu simplifica într-adevăr locuri de muncă programatori în utilizarea codului. Ei iau cuvintele cheie și returnează potențial sute de bucăți de cod candidate. Programator, apoi trebuie să treacă prin fiecare dintre aceste fișiere returnate. Ei, atunci trebuie să vedem dacă codul ar putea fi relevante. În cazul în care este, ei trebuie să-l citesc în detaliu pentru a determina dacă aceasta este exact ceea ce vor ei sau cel puțin aproape de ea. În cele din urmă, ele trebuie să se adapteze codul pentru a îndeplini cerințele lor specifice în ceea ce privește denumirea, formatarea eroare de manipulare,, etc
Suntem de părere că o mai bună abordare ar fi să aibă programator furnizeze informații mai precise cu privire la ceea ce doresc si apoi au sistemul facă lucrarea groh de verificare a fragmentelor de cod returnate, de modificare cod pentru a face ceea ce dorește programator, și de transformarea codul pentru a se potrivi în cadrul țintă. Sfârșitul nostru de căutare din fata are programatorul definește semantica a ceea ce ei doresc. Aceasta include cuvinte cheie ca o descriere informală, o semnătură, cazuri de testare și contracte (prin intermediul JML) pentru specificațiile funcționale, constrângerile de securitate (folosind modelul de securitate Java), și constrângerile de filetare (nu sunt pe deplin puse în aplicare). În plus, utilizatorul poate oferi un context în care codul se va potrivi. Front-end încearcă să facă aceste specificații ușor să le furnizeze.
Sistemul funcționează prin utilizarea cuvintelor cheie pentru a accesa unul dintre motoarele de căutare disponibile cod (sau un motor de căutare locală codul de cod disponibil la Brown), pentru a obține fișiere candidate. Fiecare clasă sau metoda în aceste fișiere (în funcție de ceea ce caută utilizatorul) este considerată o soluție potențială. Aceste soluții sunt apoi transformate utilizând un set de aproximativ 30 de transformari în încercarea de a mapa codul în exact ceea ce programator specificat. Gama de transformări de la simplu (de exemplu, schimbarea numelui metodei pentru a se potrivi semnătura) la complex (de exemplu, găsirea unei linii în metoda care calculeaza o valoare de tipul întors și apoi face o felie înapoi până când singurele variabile libere sunt valori ale tipurilor de parametru). Toate soluțiile care pot fi transformate pentru a se potrivi semnătura sunt apoi testate cu ajutorul cazurilor de testare, date de securitate, constrângeri și reguli JML. Transformari suplimentare pot fi aplicate pe baza rezultatelor de cazuri de testare. Soluțiile care trec de cazuri de testare sunt apoi formatat conform stilului utilizatorilor specificate, sortate în funcție de mărime, complexitate, sau performanța pe cazuri de testare, și a prezentat înapoi la utilizator.
Sistemul poate fi încercat (cea mai mare parte a timpului - uneori serverul este în jos) la http://conifer.cs.brown.edu/s6.
Documentele
Semantica de căutare pe Cod, ICSE 2009, mai 2009.
Specificarea Ce Pentru a căuta, Suite 2009, mai 2009.
Imagini
Front end:
Front-end să dea rezultate:
Diagrama de interne:
Software-ul
Software-ul este disponibil la ftp://ftp.cs.brown.edu/u/spr/s6.tar.gz.
Inițial, la http://cs.brown.edu/~spr/research/s6.html
La pagina principală
|
Sciencespaces
© 2024 Created with the assistance of @ReuN Support Team.
All rights protected.
|
|