Code Compass adalah mesin pencari kontekstual untuk paket perangkat lunak yang dikembangkan di Nokia Bell Labs. Ini menggunakan kembali kode dengan merekomendasikan perpustakaan perangkat lunak terbaik untuk proyek perangkat lunak spesifik Anda. Lihat sendiri:

Code Compass tersedia sebagai situs web, API REST dan sebagai plug-in IDE untuk VScode.
Kami mengindeks paket yang di -host di NPM untuk JavaScript, PYPI untuk Python dan Maven Central untuk Java.
Jika Anda mencari alat pemahaman kode yang disebut sama dari Ericsson untuk menjelajahi basis kode besar, lihat di sini. Terlepas dari namanya, tidak ada hubungan (formal atau informal) antara proyek itu dan yang ini.
Pengembangan perangkat lunak modern didasarkan pada penggunaan kembali kode melalui pustaka dan kerangka kerja open source. Perpustakaan ini diterbitkan dalam repositori paket perangkat lunak, yang tumbuh pada tingkat eksponensial. Dengan membangun alat pencarian paket perangkat lunak yang lebih baik, kami bertujuan untuk merangsang lebih banyak penggunaan kembali kode dan membuat paket perangkat lunak di "ekor panjang" lebih dapat ditemukan.
Pengantar yang lembut tentang mengapa, apa dan bagaimana kode kompas dapat ditemukan dalam posting blog pengantar ini.
Code Compass adalah mesin pencari kontekstual untuk paket perangkat lunak.
Kode Kompas berbeda dari mesin pencari paket lain karena Anda dapat "menyemai" pencarian dengan nama -nama perpustakaan yang sudah Anda ketahui atau gunakan. Kami menyebutnya "perpustakaan konteks" ini. Kode Kompas kemudian menggunakan pustaka konteks ini untuk "melabuhkan" pencarian di tumpukan teknologi yang paling relevan dengan kode Anda.
Saat menggunakan Ekstensi IDE Kode Visual Studio, tidak perlu secara manual memasuki perpustakaan konteks: Kompas kode akan secara otomatis mengekstraksi dependensi impor file sumber aktif untuk melabuhkan pencariannya.
Perhatikan bahwa Code Compass tidak akan pernah mengirim kode Anda ke server. Hanya nama-nama modul pihak ketiga yang diimpor dalam kode Anda yang dikirim.
Code Compass menggunakan pembelajaran mesin tanpa pengawasan untuk mempelajari cara mengelompokkan paket perangkat lunak serupa dengan konteks penggunaannya, sebagaimana ditentukan oleh bagaimana perpustakaan diimpor bersama perpustakaan lain dalam basis kode sumber terbuka besar.
Paket perangkat lunak direpresentasikan sebagai vektor yang kami sebut "vektor perpustakaan" dengan analogi dengan vektor kata. Sama seperti Word2Vec mengubah kata-kata menjadi vektor dengan menganalisis bagaimana kata-kata terjadi bersama dalam perusahaan teks besar, "impor2vec" kami mengubah perpustakaan menjadi vektor dengan menganalisis bagaimana pernyataan impor terjadi bersama dalam basis kode besar.
Anda dapat membaca detailnya di makalah MSR 2019 kami. Bahan tambahan termasuk embeddings perpustakaan terlatih untuk Java, JavaScript dan Python tersedia di Zenodo.
Sebagai contoh, untuk Java kami melihat sejumlah besar proyek open source di GitHub dan perpustakaan di Maven Central dan mempelajari bagaimana perpustakaan diimpor di seluruh proyek ini. Kami mengidentifikasi kelompok besar proyek yang terkait dengan kerangka kerja web, komputasi awan, layanan jaringan dan analisis data besar. Proyek-proyek terkenal seperti Apache Hadoop, Spark dan Kafka semuanya dikelompokkan ke wilayah yang sama karena mereka biasanya digunakan bersama untuk mendukung analitik data besar.
Di bawah ini adalah visualisasi 3D (plot T-SNE) dari ruang vektor yang dipelajari untuk Java. Setiap titik mewakili perpustakaan Java dan berbagai kelompok berwarna sesuai dengan area niche yang berbeda yang ditemukan dalam data. Kami menyoroti nama -nama proyek Apache.

docs/ : REST API Docs untuk Layanan Pencarian Kompas Kodeplugins/vscode/ : Ekstensi Kode Studio Visual untuk mengintegrasikan Kompas Kode ke dalam IDEscripts/ : Data Extraction Scripts untuk menghasilkan co-maidor impor perpustakaan dari kode sumbernbs/ : Jupyter Notebooks dengan model TensorFlow untuk melatih embeddings perpustakaan dari data co-kejadian imporKode Kompas dikembangkan oleh tim peneliti di platform aplikasi dan laboratorium sistem perangkat lunak Nokia Bell Labs.
Lihat kontributor untuk daftar kontributor alfabet untuk kompas kode.
Jika Anda ingin melatih embeddings untuk bahasa lain, lihat skrip di bawah import2vec untuk mendapatkan gambaran tentang data apa yang diperlukan.
Jika Anda memiliki saran untuk perbaikan, umpan balik pengguna atau ingin melaporkan bug, buka masalah di repositori ini.
BSD3