S6: Hledání sémantického kódu

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

Naše práce na hledání kódu je navržena tak, aby umožnila programátorům využít výhod velkých úložišť dostupných otevřených zdrojových kódů. Tradiční vyhledávače kódů, jako je Googleearchearch, Koders nebo Krugle, poskytují přístup k takovým úložištím, ale ve skutečnosti nezjednodušují práci programátorů při používání kódu. Berou klíčová slova a vrací potenciálně stovky kandidátních kusů kódu. Programátor pak musí projít každý z těchto vrácených souborů. Poté musí zjistit, zda je tento kód relevantní. Pokud ano, musí si ji podrobně přečíst, aby zjistili, zda je to přesně to, co chtějí, nebo alespoň blízko ní. Nakonec musí upravit kód tak, aby splňoval jejich konkrétní požadavky týkající se pojmenování, formátování, zpracování chyb atd.

Domníváme se, že lepší přístup by spočíval v tom, že by programátor poskytoval přesnější informace o tom, co chtějí, a pak by systém nechal vykonat práci s kontrolou vrácených fragmentů kódu, úpravou kódu tak, aby programoval, co chce programátor, a transformace kódu, aby se vešly do cílového rámce. Naše vyhledávací rozhraní má programátora definovat sémantiku toho, co chtějí. To zahrnuje klíčová slova jako neformální popis, podpis, testovací případy a smlouvy (prostřednictvím JML), týkající se funkčních specifikací, bezpečnostních omezení (pomocí bezpečnostního modelu Java) a závitových omezení (není plně implementováno). Kromě toho může uživatel poskytnout kontext, do kterého se kód vejde. Klientské rozhraní se pokouší tyto specifikace snadno poskytnout.

Systém pracuje tak, že pomocí klíčových slov přistupuje k jednomu z dostupných vyhledávačů kódu (nebo místního vyhledávače kódů pro kód dostupný na Brown), aby získal soubory kandidátů. Každá třída nebo metoda v těchto souborech (v závislosti na tom, co uživatel hledá) je považována za potenciální řešení. Tato řešení jsou poté transformována pomocí sady asi 30 transformací ve snaze mapovat kód do přesně toho, co určil programátor. Transformace se pohybují od jednoduchých (např. Změna názvu metody tak, aby odpovídala podpisu) až po komplex (např. Nalezení řádku v metodě, která vypočítá hodnotu vráceného typu a poté provede zpětný řez, dokud nejsou jediné volné proměnné). hodnoty typů parametrů). Všechna řešení, která lze transformovat tak, aby odpovídala podpisu, se pak testují pomocí daných testovacích případů, bezpečnostních omezení a pravidel JML. Na základě výsledků testovacích případů lze použít další transformace. Řešení, která projdou testovacími případy, se pak naformátují podle stylu určeného uživateli, třídí se podle velikosti, složitosti nebo výkonu v testovacích případech a zobrazí se zpět uživateli.

Systém lze vyzkoušet (většinu času – někdy je server mimo provoz) na adrese http://conifer.cs.brown.edu/s6.

V návaznosti na původní S6 jsme rozšířili systém tak, aby nalezl uživatelská rozhraní podle náčrtu uživatelského rozhraní a aby našel testovací případy daný kód, který je třeba testovat.

Papíry

Hledání kódu založené na Sémantice, ICSE 2009, květen 2009.

Zadání Co na vyhledávání, SUITE 2009, květen 2009.

Hledaná uživatelského rozhraní, ASE 2014.

Vytvoření testovacích případů pomocí kódu vyhledávání nepublikované.

Lovec: vedle generátor kódu Reuse pro Java aplikace Yuepeng Want Yu Feng Ruben Martins, árati Kaushik, ISIL DIllig a Steven Reiss FSE 2016.

Hledaná uživatelského rozhraní Steven Reiss, Yun Miao a Qi Xin, Automatizovaný softwarový inženýrský deník, 2017.

Snímky

Přední část:

S6 front end image

Výsledky frontendu:

front end with results

Schéma intern>ls:

internal view

Software

Tento software je k dispozici na adrese ftp://ftp.cs.brown.edu/u/spr/s6.tar.gz.