Code Compass เป็นเครื่องมือค้นหาตามบริบทสำหรับแพ็คเกจซอฟต์แวร์ที่พัฒนาขึ้นที่ Nokia Bell Labs IT Supercharges Code นำกลับมาใช้ซ้ำโดยแนะนำไลบรารีซอฟต์แวร์ที่ดีที่สุดสำหรับโครงการซอฟต์แวร์เฉพาะของคุณ ดูด้วยตัวเอง:

Code Compass มีให้บริการเป็นเว็บไซต์ REST API และเป็นปลั๊กอิน IDE สำหรับ VSCODE
เราจัดทำดัชนีแพ็คเกจที่โฮสต์บน NPM สำหรับ JavaScript, PYPI สำหรับ Python และ Maven Central สำหรับ Java
หากคุณกำลังมองหาเครื่องมือความเข้าใจรหัสที่มีชื่อคล้ายกันจาก Ericsson เพื่อสำรวจรหัสฐานขนาดใหญ่ให้ดูที่นี่ นอกเหนือจากชื่อไม่มีความสัมพันธ์ (เป็นทางการหรือไม่เป็นทางการ) ระหว่างโครงการนั้นกับโครงการนี้
การพัฒนาซอฟต์แวร์สมัยใหม่ก่อตั้งขึ้นในการใช้รหัสซ้ำผ่านห้องสมุดโอเพนซอร์สและเฟรมเวิร์ก ไลบรารีเหล่านี้เผยแพร่ในที่เก็บแพ็คเกจซอฟต์แวร์ซึ่งกำลังเติบโตในอัตราทวีคูณ ด้วยการสร้างเครื่องมือค้นหาแพคเกจซอฟต์แวร์ที่ดีขึ้นเรามุ่งมั่นที่จะกระตุ้นการใช้รหัสซ้ำมากขึ้นและสร้างแพ็คเกจซอฟต์แวร์ใน "หางยาว" ที่ค้นพบได้มากขึ้น
การแนะนำอย่างอ่อนโยนเกี่ยวกับสาเหตุที่และวิธีการของเข็มทิศโค้ดสามารถพบได้ในโพสต์บล็อกเบื้องต้นนี้
Code Compass เป็นเครื่องมือค้นหาตามบริบทสำหรับแพ็คเกจซอฟต์แวร์
Code Compass แตกต่างจากเครื่องมือค้นหาแพ็คเกจอื่น ๆ ที่คุณสามารถ "เมล็ด" การค้นหาด้วยชื่อของไลบรารีที่คุณรู้จักหรือใช้อยู่แล้ว เราเรียกว่า "ห้องสมุดบริบท" เหล่านี้ Code Compass จะใช้ไลบรารีบริบทเหล่านี้เพื่อ "ยึด" การค้นหาในซ้อนเทคโนโลยีเหล่านั้นที่เกี่ยวข้องกับรหัสของคุณมากที่สุด
เมื่อใช้ส่วนขยายของ Visual Studio Code IDE ไม่จำเป็นต้องป้อนไลบรารีบริบทด้วยตนเอง: Compass โค้ดจะแยกการอ้างอิงการนำเข้าของไฟล์ต้นฉบับที่ใช้งานโดยอัตโนมัติเพื่อยึดการค้นหา
โปรดทราบว่า Compass Code จะไม่ส่งรหัสของคุณไปยังเซิร์ฟเวอร์ เฉพาะชื่อของโมดูลบุคคลที่สามที่นำเข้าในรหัสของคุณเท่านั้น
Code Compass ใช้การเรียนรู้ของเครื่องที่ไม่ได้รับการดูแลเพื่อเรียนรู้วิธีการจัดกลุ่มแพ็คเกจซอฟต์แวร์ที่คล้ายกันตามบริบทของการใช้งานตามที่กำหนดโดยวิธีการนำเข้าไลบรารีควบคู่ไปกับไลบรารีอื่น ๆ ในรหัสโอเพนซอร์สขนาดใหญ่
แพ็คเกจซอฟต์แวร์จะถูกแสดงเป็นเวกเตอร์ที่เราเรียกว่า "เวกเตอร์ไลบรารี" โดยการเปรียบเทียบกับเวกเตอร์ Word เช่นเดียวกับ Word2vec จะเปลี่ยนคำเป็นเวกเตอร์โดยการวิเคราะห์ว่าคำพูดร่วมกันใน Corpora ข้อความขนาดใหญ่ "Import2vec" ของเราเปลี่ยนไลบรารีให้กลายเป็นเวกเตอร์โดยการวิเคราะห์ว่าคำสั่งนำเข้าร่วมเกิดขึ้นใน codebases ขนาดใหญ่ได้อย่างไร
คุณสามารถอ่านรายละเอียดในกระดาษ MSR 2019 ของเรา วัสดุเสริมรวมถึงห้องสมุดที่ผ่านการฝึกอบรมสำหรับ Java, JavaScript และ Python มีให้บริการใน Zenodo
ตัวอย่างเช่นสำหรับ Java เราได้ดูโครงการโอเพ่นซอร์สจำนวนมากใน GitHub และห้องสมุดบน Maven Central และศึกษาว่ามีการนำเข้าห้องสมุดอย่างไรในโครงการเหล่านี้ เราระบุกลุ่มขนาดใหญ่ของโครงการที่เกี่ยวข้องกับเฟรมเวิร์กเว็บ, คลาวด์คอมพิวติ้ง, บริการเครือข่ายและการวิเคราะห์ข้อมูลขนาดใหญ่ โครงการที่รู้จักกันดีเช่น Apache Hadoop, Spark และ Kafka ทั้งหมดถูกรวมเข้าด้วยกันในภูมิภาคเดียวกันเพราะพวกเขามักจะใช้ร่วมกันเพื่อสนับสนุนการวิเคราะห์ข้อมูลขนาดใหญ่
ด้านล่างคือการสร้างภาพข้อมูล 3 มิติ (พล็อต T-SNE) ของพื้นที่เวกเตอร์ที่เรียนรู้สำหรับ Java แต่ละจุดแสดงถึงไลบรารี Java และกลุ่มสีต่าง ๆ สอดคล้องกับพื้นที่เฉพาะที่แตกต่างกันซึ่งถูกค้นพบในข้อมูล เราเน้นชื่อโครงการ Apache

docs/ : REST API เอกสารสำหรับบริการค้นหารหัสเข็มทิศplugins/vscode/ : Visual Studio Code Extension เพื่อรวม Code Compass เข้ากับ IDEscripts/ : สคริปต์การสกัดข้อมูลเพื่อสร้างการนำเข้าไลบรารีนำเข้าร่วมเกิดจากซอร์สโค้ดจากซอร์สโค้ดnbs/ : สมุดบันทึก Jupyter ที่มีโมเดล TensorFlow เพื่อฝึกอบรม Embeddings ห้องสมุดจากข้อมูลการเกิดร่วมนำเข้าCode Compass ได้รับการพัฒนาโดยทีมวิจัยในแพลตฟอร์มแอปพลิเคชันและห้องปฏิบัติการ Software Systems ของ Nokia Bell Labs
ดูผู้มีส่วนร่วมสำหรับรายการตัวอักษรของผู้มีส่วนร่วมในการเขียนโค้ดเข็มทิศ
หากคุณต้องการฝึกอบรม Embeddings สำหรับภาษาอื่น ๆ ให้ดูสคริปต์ภายใต้ import2vec เพื่อรับทราบว่าจำเป็นต้องใช้ข้อมูลใด
หากคุณมีข้อเสนอแนะสำหรับการปรับปรุงความคิดเห็นของผู้ใช้หรือต้องการรายงานข้อบกพร่องโปรดเปิดปัญหาในที่เก็บนี้
BSD3