2.06.2016

S6: Семантика-Коду на Основі Пошуку

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

Наша робота з пошуку коду призначений, щоб дозволити програмістам скористатися великими сховищами доступного з відкритим вихідним кодом. Традиційні пошукові код системи, такі як CodeSearch Google, Koders або Krugle забезпечує доступ до таких сховищ, але насправді не спростити роботу програмістів за допомогою коду. Вони приймають ключові слова і повертає потенційно сотні кандидатів фрагментів коду. Програміст потім повинен пройти через кожен з цих повертаються файлів. Потім вони повинні бачити, якщо код може мати значення. Якщо так, то вони повинні прочитати його в деталях, щоб визначити, чи є це саме те, що вони хочуть, або принаймні близько до нього. І, нарешті, вони повинні адаптувати код для задоволення їх конкретних вимог щодо іменування, форматування, обробки помилок і т.д.

Ми вважаємо, що найкращим підходом було б мати програміст надати точнішу інформацію щодо того, що вони хочуть, а потім систему роблять чорнову роботу перевірки повертаються фрагментів коду, модифікувати код, щоб зробити те, що хоче програміст, і перетворення коду, щоб вписатися в цільової структури. Наш пошук передній кінець має програмісту визначити семантику, що вони хочуть. Це включає в себе ключові слова як неофіційне опис, підписи, тестових випадків і контрактів (через JML) для функціональних специфікацій, обмежень безпеки (з використанням моделі безпеки Java), і пронизують обмежень (не в повному обсязі). Крім того, користувач може забезпечити контекст в якому код буде відповідати. Передній кінець намагається зробити ці специфікації легко забезпечити.

Система працює з використанням ключових слів, щоб отримати доступ до однієї з наявних пошукових систем (код або локального пошуку коду двигуна для коду, доступного на Брауна), щоб отримати файли кандидатів. Кожен клас або метод в цих файлах (в залежності від того, що користувач шукає) вважається потенційним рішенням. Ці розчини потім трансформували з використанням набору близько 30 перетворень в спробі мапі код в точності те, що вказаний програміст. Перетворення варіюються від простих (наприклад, зміна імені методу, щоб відповідати підпису) до складного (наприклад, пошук рядка в методі, який обчислює значення повертається типу, а потім робить зворотний зріз, поки тільки вільні змінні не є значення типів параметрів). Всі рішення, які можуть бути перетворені, щоб відповідати підпису потім перевіряються за допомогою заданих тестових прикладів, обмеження безпеки і правила Jml. Додаткові перетворення можуть бути застосовані на основі результатів тестів. Рішення, які проходять тестові випадки потім форматується відповідно до вказаного стилю доступу користувачів, відсортованих за розміром, складності або продуктивності на тестових прикладах і представлені назад користувачеві.

Система може бути випробувані (більшу частину часу – іноді сервер вимкнений) на http://conifer.cs.brown.edu/s6.

Документи

Семантика основі Code Search, МКЗ 2009, травень 2009 року.

Вказівка, що шукати, Suite 2009, травень 2009 року.

Зображення

Передня частина:

S6 front end image

S6 передній кінець зображення
Передні результати кінця Відображення:

front end with results

передній кінець з результатами
Схема внутрішніх органів:

internal view

внутрішній вигляд

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

Програмне забезпечення є на ftp://ftp.cs.brown.edu/u/spr/s6.tar.gz~~pobj.

About The Author

admin

Comments are closed.