S6: Семантыка аснове пошуку кода

Original: http://cs.brown.edu/~spr/research/s6.html

Наша праца па пошуку кода прызначаны, каб праграмісты скарыстацца буйных сховішчаў даступных адкрытага кода. Традыцыйныя пошукавыя код сістэмы, такія як Google, CodeSearch, Koders або Krugle забяспечвае доступ да такіх сховішчаў, але на самой справе не спрасціць працу праграмістаў пры дапамозе кода. Яны прымаюць ключавыя словы і вяртае патэнцыйна сотні кандыдатаў кавалкаў кода. Праграміст затым павінен прайсці праз кожны з гэтых вяртаюцца файлаў. Затым яны павінны бачыць, калі код можа быць актуальным. Калі гэта так, яны павінны чытаць яго ў дэталях, каб вызначыць, што гэта менавіта тое, што яны хочуць ці, па меншай меры блізка да яго. Нарэшце, яны павінны адаптаваць код для задавальнення іх асаблівых патрэбаў у дачыненні да імёнаў, фарматаванне, апрацоўку памылак і г.д.

Мы лічым, што лепш было б мець праграміст забяспечыць больш дакладную інфармацыю, як тое, што яны хочуць, а затым мець сістэму зрабіць цяжкую працу праверкі вернутыя фрагменты кода, мадыфікаваць код, каб зрабіць тое, што праграміст хоча, і ператвараючы код, каб упісацца ў мэтавай структуры. Наш пошук Пярэдняя частка праграміст вызначыць семантыку, што яны хочуць. Гэта ўключае ў сябе ключавыя словы ў якасці неафіцыйнага апісаннем, подпісы, тэстаў і кантрактаў (праз JML) для функцыянальных спецыфікацый, абмежаванняў бяспекі (з выкарыстаннем мадэлі бяспекі Java), і абмежаванняў Threading (не ў поўным аб’ёме). Акрамя таго, карыстальнік можа забяспечыць умовы, у якія код будзе адпавядаць. Пярэдні канец спрабуе зрабіць гэтыя характарыстыкі лёгка забяспечыць.

Сістэма працуе з выкарыстаннем ключавых слоў, каб атрымаць доступ да адной з даступных пошукавых сістэмах (код або мясцовага пошуку код рухавіка для кода, даступнага на Браўна), каб атрымаць кандыдатаў файлы. Кожны клас або метад у гэтых файлах (у залежнасці ад таго, што карыстальнік шукае) лічыцца магчымым рашэннем. Гэтыя растворы затым трансфармавалі з выкарыстаннем набору каля 30 пераўтварэнняў у спробе карце код у дакладнасці тое, што паказана праграміст. Пераўтварэнні ў дыяпазоне ад простага (напрыклад, змена імя метаду ў адпаведнасці подпіс) да складанага (напрыклад, пошук радкі ў метад, які вылічае значэнне вяртаецца тыпу, а затым робіць зваротную кавалачак, пакуль толькі свабодныя зменныя не зьяўляюцца значэння тыпаў параметраў). Ўсе рашэнні, якія могуць быць ператвораныя, каб адпавядаць подпісы затым правяраюцца з дапамогай дадзенага тэсту выпадкаў, абмежаванні бяспекі і правілы Jml. Дадатковыя пераўтварэнні могуць быць ужытыя на аснове вынікаў тэстаў. Рашэнні, якія праходзяць тэставыя выпадкі затым фарматуецца ў адпаведнасці з паказаным стыль карыстальнікаў, адсартаваных па памеры, складанасці або прадукцыйнасці на тэставых выпадкаў і прадстаўлены назад карыстальніку.

Сістэма можа быць апрабаваны (большую частку часу – часам сервер ўніз) на http://conifer.cs.brown.edu/s6.

Дакументы

Семантыка аснове пошуку кода, МКЗ 2009, маі 2009 года.

Указанне, што шукаць, Suite 2009, травень 2009.

Малюнкi

Пярэдняя частка:

 

S6 front end image

Пярэднія Вынікі канец Адлюстраванне:

front end with results

Схема ўнутраных:

internal view

Праграмнае забеспячэнне

Праграмнае забеспячэнне даступна на ftp://ftp.cs.brown.edu/u/spr/s6.tar.gz

Comments are closed.