6 : Semantik Berbasis Code Search

Pekerjaan kami pada pencarian kode dirancang untuk membiarkan programmer mengambil keuntungan dari repositori besar tersedia kode open-source. mesin kode pencari tradisional seperti penelusuran kode Google, Koders, atau Krugle menyediakan akses ke repositori tersebut tetapi tidak benar-benar menyederhanakan pekerjaan programer 'dalam menggunakan kode. Mereka mengambil kata kunci dan kembali berpotensi ratusan potongan calon kode. Programmer kemudian harus melalui masing-masing file kembali. Mereka kemudian harus melihat apakah kode mungkin relevan. Jika itu adalah, mereka harus membaca secara rinci untuk menentukan apakah itu adalah persis apa yang mereka inginkan atau setidaknya dekat dengan itu. Akhirnya, mereka harus beradaptasi kode untuk memenuhi kebutuhan khusus mereka mengenai penamaan, format, penanganan error, dll

Kami merasa bahwa pendekatan yang lebih baik akan memiliki programmer memberikan informasi yang lebih tepat untuk apa yang mereka inginkan dan kemudian memiliki sistem melakukan pekerjaan kasar memeriksa fragmen kode kembali, memodifikasi kode untuk melakukan apa yang diinginkan programmer, dan mengubah kode untuk masuk ke dalam kerangka sasaran. end pencarian depan kami memiliki programmer mendefinisikan semantik apa yang mereka inginkan. Ini termasuk kata kunci sebagai deskripsi informal, tanda tangan, uji kasus dan kontrak (melalui JML) untuk spesifikasi fungsional, kendala keamanan (menggunakan model keamanan Java), dan kendala threading (tidak sepenuhnya dilaksanakan). Selain itu, pengguna dapat memberikan konteks di mana kode akan cocok. Ujung depan mencoba untuk membuat spesifikasi ini mudah untuk memberikan.

Sistem ini bekerja dengan menggunakan kata kunci untuk mengakses salah satu mesin pencarian kode yang tersedia (atau mesin kode pencarian lokal untuk kode yang tersedia di Brown), untuk mendapatkan file kandidat. Setiap kelas atau metode dalam file-file ini (tergantung pada apa yang pengguna mencari) dianggap sebagai solusi potensial. Solusi ini kemudian diubah menggunakan satu set sekitar 30 transformasi dalam upaya untuk memetakan kode ke apa programmer yang ditentukan. Transformasi berkisar dari yang sederhana (misalnya mengganti nama metode untuk mencocokkan tanda tangan) ke kompleks (misalnya menemukan garis dalam metode yang menghitung nilai dari jenis kembali dan kemudian melakukan sepotong mundur sampai hanya variabel bebas nilai-nilai dari jenis parameter). Semua solusi yang dapat diubah untuk mencocokkan tanda tangan kemudian diuji menggunakan kasus yang diberikan tes, kendala keamanan, dan aturan JML. transformasi tambahan dapat diterapkan berdasarkan hasil dari uji kasus. Solusi yang lulus uji kasus kemudian diformat sesuai dengan gaya tertentu pengguna ', diurutkan berdasarkan ukuran, kompleksitas, atau kinerja pada kasus uji, dan disajikan kembali ke pengguna.

Sistem ini dapat mencoba (sebagian besar waktu - kadang-kadang server down) di http://conifer.cs.brown.edu/s6 .

Dokumen

Semantik Berbasis Code Search , ICSE 2009, Mei 2009.

Menentukan Apa Cari Untuk , SUITE 2009, Mei 2009.

Gambar

Paling depan:

S6 gambar front end

 

Front end menunjukkan hasil:

front end dengan hasil

 

Diagram internal:

lihat intern

Perangkat lunak

Perangkat lunak ini tersedia di ftp://ftp.cs.brown.edu/u/spr/s6.tar.gz .

 

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