Sourcegraph: การค้นหารหัสสากลและข้อมูลอัจฉริยะ

จำนวนรหัสในโลกกำลังระเบิด เนื่องจากซอฟต์แวร์กลายเป็นตัวขับเคลื่อนพื้นฐานของนวัตกรรมในเกือบทุกอุตสาหกรรมนักพัฒนาซอฟต์แวร์จึงพบว่าตัวเองต้องรับมือกับโค้ดเบสที่ใหญ่ขึ้นและพึ่งพาซึ่งกันและกันมากขึ้น องค์กรส่วนใหญ่สร้างสถิติใหม่สำหรับขนาดของฐานรหัสทุกวัน

ในโลกนี้เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์แบบเดิม ๆ เช่นบรรณาธิการและ IDE ขาดหายไป ได้รับการออกแบบมาสำหรับนักพัฒนาแต่ละรายที่ทำงานกับโค้ดแต่ละชิ้นไม่ใช่สำหรับทีมซอฟต์แวร์ที่พัฒนาโค้ดเบสขนาดใหญ่ในระดับต่างๆ ในองค์กรซอฟต์แวร์สมัยใหม่การค้นหาในฐานรหัสขนาดใหญ่การทำความเข้าใจรหัสที่ไม่คุ้นเคยและการแบ่งปันความรู้ในสถาบันกลายเป็นเรื่องที่ต้องคำนึงถึงเป็นลำดับแรก ทีมซอฟต์แวร์ต้องการเครื่องมือที่เปิดใช้งานรหัสอัจฉริยะสากลนี้

การค้นหาโค้ดต้องเป็นสากลเพื่อให้มีประสิทธิภาพต้องครอบคลุมทุกภาษาที่เก็บทั้งหมดโฮสต์โค้ดทั้งหมดและไฟล์คอนฟิกูเรชันทั้งหมด การค้นหาที่ จำกัด ไว้เฉพาะ Python หรือ GitHub เท่านั้นก็เหมือนกับการที่ Google จัดทำดัชนีเฉพาะเว็บไซต์ที่สร้างด้วย Ruby on Rails หรือ Apache HTTP Server ซึ่งไม่ใช่ขั้นต้นสำหรับทีมพัฒนาที่ทำงานในจักรวาลสมัยใหม่ของโค้ด

บริษัท เทคโนโลยีชั้นนำเช่น Uber, Lyft และ Yelp ใช้ Sourcegraph เพื่อต่อสู้กับจักรวาลของโค้ดนี้ บริษัท อย่าง Google และ Facebook ได้ใช้เงินหลายร้อยล้านดอลลาร์เพื่อสร้างเครื่องมือภายในที่คล้ายกับ Sourcegraph GitLab ซึ่งเป็น บริษัท โฮสติ้งโค้ดและ บริษัท devops เพิ่งประกาศความร่วมมือกับ Sourcegraph เพื่อรวมคุณสมบัติบางอย่างของ Sourcegraph เข้ากับ UI ของ GitLab

เหตุผลหลักในการใช้ Sourcegraph

Sourcegraph เป็นแพลตฟอร์มสำหรับนักพัฒนาที่ออกแบบมาเพื่อจัดการกับปัญหาที่ทีมซอฟต์แวร์สมัยใหม่ต้องเผชิญ Sourcegraph กล่าวถึงจุดเจ็บปวดที่สำคัญที่วิศวกรซอฟต์แวร์และผู้นำทางวิศวกรรมรู้สึก

เหตุผลหลักในการใช้ Sourcegraph สำหรับนักพัฒนาแต่ละรายมีดังนี้

  1. อยู่ในกระแสหลีกเลี่ยงความตายด้วยสวิตช์บริบทนับพัน
  2. ค้นหาเข็มในกองหญ้า codebase
  3. ตรวจสอบโค้ดอย่างรวดเร็วละเอียดถี่ถ้วนและเจ็บปวดน้อยลง - ไม่ต้องใช้ TL; DR อีกต่อไป
  4. เรียนรู้ตามตัวอย่างแทนเอกสารที่ไม่ดีหรือไม่มีอยู่จริง
  5. ทำการเปลี่ยน Refactors ขนาดใหญ่และการเปลี่ยนแปลงโค้ด
  6. แบ่งปันและพูดคุยเกี่ยวกับรหัสได้อย่างง่ายดายโดยเฉพาะกับเพื่อนร่วมงานระยะไกล
  7. มันเป็นโอเพ่นซอร์ส

และนี่คือเหตุผลที่พบบ่อยที่สุดที่ผู้นำด้านวิศวกรรมแนะนำ Sourcegraph ให้กับองค์กรของตน:

  1. เพิ่มผลผลิตในแต่ละวันของทีม
  2. ส่งเสริมการแบ่งปันความรู้
  3. ขับเคลื่อนการนำเครื่องมือใหม่ ๆ ไปใช้ทั่วทั้งองค์กร
  4. เร่งการเตรียมวิศวกรใหม่
  5. ลดเวลาตอบสนองของเหตุการณ์
  6. รักษาและเผยแพร่มาตรฐานคุณภาพโค้ด
  7. สร้างเครื่องมือสำหรับนักพัฒนาภายในที่ดีขึ้นด้วย code-as-data API
  8. ง่ายต่อการปรับใช้และปรับขนาดกับทีมและโค้ดเบสของคุณ

อยู่ในกระแส

ประสิทธิภาพการเขียนโปรแกรมมักจะตายโดยสวิตช์บริบทนับพันตัว สถานการณ์ที่คุ้นเคยคือสถานการณ์ที่นักพัฒนากำลังอยู่ระหว่างการนำฟีเจอร์หรือการแก้ไขข้อบกพร่องมาใช้ แต่จู่ๆก็ต้องข้ามไปยังส่วนอื่นของโค้ดเบส บางทีพวกเขาอาจต้องค้นหาฟังก์ชันไลบรารีบางอย่างหรือหาวิธีใช้งาน บางทีเพื่อนร่วมงานอาจมีคำถามเกี่ยวกับโค้ดอื่น ๆ ตอนนี้นักพัฒนาต้องเปิดไฟล์เหล่านั้นใน IDE ของพวกเขาและในการทำเช่นนั้นจะทำลายสถานะการทำงานปัจจุบันของพวกเขาซึ่งจะต้องถูกเรียกคืนอย่างเจ็บปวดและสร้างขึ้นใหม่ในภายหลัง

การหยุดชะงักเหล่านี้เป็นการทำลายล้างเนื่องจากนำนักพัฒนาออกจาก Flow State และผลกระทบด้านลบต่อผลผลิตมีความสำคัญ อินเทอร์เฟซการค้นหาและการสำรวจโค้ดบนเบราว์เซอร์ของ Sourcegraph ช่วยให้นักพัฒนาสามารถรักษาสถานะตัวแก้ไขในขณะที่สำรวจส่วนอื่น ๆ ของโค้ด การรักษาสถานะการทำงานนี้ทำให้การสลับบริบทมีค่าใช้จ่ายน้อยลงอย่างมากช่วยให้นักพัฒนาแต่ละรายทำงานได้มากขึ้นโดยมีปัญหาน้อยลง

Sourcegraph

หาเข็มในกองหญ้า

งานทั่วไปในวิศวกรรมซอฟต์แวร์ประจำวันคือการค้นหาสตริงหรือรูปแบบเฉพาะในโค้ด นี่อาจเป็นข้อความแสดงข้อผิดพลาดที่ปรากฏในบันทึกการใช้งานรูปแบบการต่อต้านที่ควรลบออกหรือเป็นเพียงสตริงเฉพาะบางส่วนที่นักพัฒนาเชื่อมโยงกับจุดสนใจเฉพาะในซอร์สโค้ด

Sourcegraph

การพบเข็มเหล่านี้มักเจ็บปวด IDE มีความสามารถในการค้นหา แต่โค้ดที่เป็นปัญหาอาจอยู่นอกสิ่งที่ IDE เปิดไว้ เครื่องมือบรรทัดคำสั่งไม่สามารถเข้าถึงรหัสภายนอกระบบไฟล์ภายในเครื่องและอาจใช้งานได้ยุ่งยาก โค้ดโฮสต์จะค้นหาเฉพาะโค้ดที่โฮสต์และบ่อยครั้งที่การค้นหานั้นช้าหรือมีคุณภาพต่ำ การค้นหาโค้ดต้องเป็นสากลเพื่อให้มีประสิทธิภาพ

ด้วย Sourcegraph นักพัฒนาสามารถค้นหาโค้ดที่ครอบคลุมทั้งจักรวาลของโค้ดพร้อมการสนับสนุนอย่างเต็มที่สำหรับนิพจน์ทั่วไปและการจับคู่รูปแบบขั้นสูงเพิ่มเติมเช่นไวยากรณ์ Comby เครื่องมือค้นหาของ Sourcegraph ได้รับการปรับให้เหมาะกับซอร์สโค้ดดังนั้นจึงรวดเร็วอย่างไม่น่าเชื่อ นอกจากนี้ยังได้รับการออกแบบตั้งแต่พื้นฐานจนถึงขนาดฐานข้อมูลและองค์กรขนาดใหญ่ บางองค์กรมีที่เก็บข้อมูลนับแสนและ Sourcegraph ทำให้ทุกคนอยู่ใกล้แค่ปลายนิ้วของนักพัฒนา

ไวยากรณ์การค้นหาที่แสดงออกและมีประสิทธิภาพช่วยให้ผู้ใช้กรองผลลัพธ์ตามไฟล์ภาษาที่เก็บและแอตทริบิวต์อื่น ๆ มากมาย Sourcegraph ยังตระหนักถึงความหมายของรหัสและช่วยให้สามารถค้นหาสัญลักษณ์ได้โดยตรง

Sourcegraph

เรียนรู้ตามตัวอย่าง

“ ฉันจะใช้สิ่งนี้ได้อย่างไร” เป็นคำถามที่นักพัฒนาถามหลายสิบครั้งต่อวัน บ่อยกว่านั้นเอกสารที่ดีที่สุดคือตัวอย่างการใช้งาน คุณลักษณะการค้นหาข้อมูลอ้างอิงทั่วโลกของ Sourcegraph ช่วยให้นักพัฒนาสามารถค้นหาตัวอย่างการใช้งานทั่วทั้งจักรวาลของโค้ดแม้ว่าตัวอย่างการใช้งานในอุดมคติจะมีอยู่ในที่เก็บอื่นก็ตาม สิ่งนี้มีประโยชน์อย่างยิ่งในโค้ดเบสที่เก่าไม่คุ้นเคยหรือมีเอกสารไม่ดี

ตรวจสอบโค้ดอย่างรวดเร็วและทั่วถึง

คำพูดทั่วไปเกี่ยวกับการตรวจสอบโค้ดกล่าวว่าหากคุณส่งชุดการเปลี่ยนแปลง 10 บรรทัดคุณจะได้รับ 10 ความคิดเห็น แต่ถ้าคุณส่งชุดการเปลี่ยนแปลงพันบรรทัดคุณจะไม่ได้รับความคิดเห็นและจะได้รับการอนุมัติโดยอัตโนมัติ

การตรวจสอบโค้ดคุณภาพมักจะยุ่งยากและช้าเนื่องจากเครื่องมือแบบเดิมขาดคุณสมบัติที่จำเป็นมากมายเพื่อช่วยให้ผู้ตรวจสอบเข้าใจการเปลี่ยนแปลงโค้ดได้อย่างรวดเร็ว Sourcegraph เพิ่มการนำทางโค้ดที่เหมือน IDE และคำแนะนำเครื่องมือให้กับเวิร์กโฟลว์การตรวจสอบโค้ดที่มีอยู่ของนักพัฒนา

คำแนะนำเครื่องมือโฮเวอร์ซอร์สกราฟช่วยให้ผู้ตรวจทานสามารถดูข้อกำหนดของฟังก์ชันและเอกสารประกอบได้อย่างรวดเร็วโดยไม่ต้องดึงชุดการเปลี่ยนแปลงลงใน IDE ภายในเครื่อง โดยไม่ต้องออกจากอินเทอร์เฟซการตรวจสอบโค้ด Sourcegraph ช่วยให้คุณข้ามไปยังคำจำกัดความเพื่อทำความเข้าใจอย่างถ่องแท้ยิ่งขึ้นว่าโค้ดที่อ้างอิงทำงานอย่างไร

Sourcegraph

Sourcegraph รวมคุณลักษณะการนำทางโค้ดเหล่านี้เข้ากับ UI ของเครื่องมือตรวจสอบโค้ดยอดนิยมโดยตรงเช่นคำขอดึง GitHub, คำขอรวม GitLab และ Phabricator ดังนั้นประสบการณ์ของนักพัฒนาจึงดีขึ้นโดยไม่มีค่าใช้จ่ายในการเปลี่ยน

การตรวจสอบโค้ดที่ดีขึ้นช่วยลดข้อบกพร่องรักษามาตรฐานคุณภาพของโค้ดและเพิ่มการเผยแพร่ความรู้ของสถาบันในองค์กรด้านวิศวกรรม

Sourcegraph Sourcegraph

ทำให้ refactors ขนาดใหญ่สามารถเลือกได้

เมื่อโค้ดเบสเติบโตขึ้นตัวรีแฟคเตอร์ขนาดใหญ่กลายเป็นคอขวดที่หลีกเลี่ยงไม่ได้ในการปรับปรุงคุณภาพโค้ดและการนำคุณสมบัติใหม่ ๆ มาใช้ ตัวอย่างเช่น API ของไลบรารีที่ใช้ร่วมกันอาจต้องได้รับการอัปเดตเพื่อรองรับคุณลักษณะใหม่ แต่การทำเช่นนี้อาจต้องมีการอัปเดตสำหรับผู้อยู่ในอุปการะดาวน์สตรีมหลายสิบหรือหลายร้อยราย จำนวนสถานที่ในรหัสที่ต้องเปลี่ยนแปลงอันเป็นผลมาจากการอัปเดตการพึ่งพาที่ใช้ร่วมกันหนึ่งรายการสามารถบอลลูนไปยังจุดหลายพันจุดที่กระจายไปตามองค์ประกอบต่างๆที่เป็นของทีมต่างๆ

Sourcegraph ไม่เพียง แต่ช่วยให้นักพัฒนาเข้าใจผลกระทบของ refactor (โดยให้พวกเขาค้นหาและค้นพบสถานที่ทั้งหมดที่มีการใช้ฟังก์ชันไลบรารีเฉพาะ) แต่ยังมีเครื่องมือในการดำเนินการ refactor และจัดการแคมเปญของชุดการเปลี่ยนแปลงและการตรวจสอบโค้ด Sourcegraph Campaigns เป็นเครื่องมือแรกที่เข้าถึงได้สำหรับองค์กรซอฟต์แวร์ทั้งหมด เช่นเดียวกับการค้นหารหัส Sourcegraph แคมเปญสนับสนุนไวยากรณ์การจับคู่รูปแบบ Comby ใหม่ซึ่งใช้งานง่ายและแสดงออกได้มากกว่านิพจน์ทั่วไป

Sourcegraph

ส่งเสริมการแบ่งปันความรู้ทั่วทั้งองค์กรของคุณ

ทีมซอฟต์แวร์สมัยใหม่ร่วมมือกันเพื่อแบ่งปันความรู้เกี่ยวกับรหัสของสถาบัน แต่การพูดคุยเกี่ยวกับรหัสมักเป็นเรื่องยากด้วยเหตุผลเหล่านี้:

  • คุณไม่สามารถแชร์ไฮเปอร์ลิงก์ไปยังไฟล์ที่คุณเปิดใน IDE ของคุณได้
  • เครื่องมือดูโค้ดของเบราว์เซอร์แบบเดิมไม่มีการนำทางโค้ดที่ดี

Sourcegraph นำเสนอสิ่งที่ดีที่สุดของทั้งสองโลก: การนำทางโค้ดที่แม่นยำและแม่นยำในอินเทอร์เฟซเว็บ ทำให้ง่ายต่อการแชร์ลิงก์และเพื่อให้ผู้รับสามารถเริ่มสำรวจและทำความเข้าใจโค้ดที่เชื่อมโยงกับโค้ดได้ทันทีโดยไม่ต้องยุ่งยากและติดขัดในการดึงข้อมูลใน IDE ในเครื่อง

Sourcegraph

การแชร์ลิงก์โค้ดมีความสำคัญมากยิ่งขึ้นสำหรับทีมวิศวกรรมระยะไกล ลิงก์ Sourcegraph ถูกแชร์หลายร้อยครั้งต่อวันผ่านการแชทในเครื่องมือติดตามปัญหาและในเอกสารอย่างเป็นทางการและวิกิ สิ่งเหล่านี้กลายเป็นท่อความรู้ที่จำเป็นโดยเฉพาะอย่างยิ่งเมื่อไม่สามารถโทรหาเพื่อนร่วมงานไปที่โต๊ะทำงานได้

มันเป็นโอเพ่นซอร์ส

Sourcegraph เป็นซอฟต์แวร์โอเพนซอร์ส เครื่องมือติดตามปัญหาเป็นแบบสาธารณะและทีมตอบสนองต่อรายงานข้อผิดพลาดและคำขอคุณสมบัติเป็นอย่างดี นักพัฒนาซอฟต์แวร์สมัยใหม่ควรชอบเครื่องมือแบบเปิดด้วยเหตุผลเดียวกับที่พวกเขาชอบไลบรารีโอเพนซอร์ส: ความรู้พื้นฐานเกี่ยวกับการสร้างซอฟต์แวร์และทีมของคุณควรเปิดกว้างสำหรับทุกคนเพื่อให้ทุกคนเข้าใจวิธีการทำงานและทั้งหมดอาจช่วยปรับปรุงได้

เพิ่มประสิทธิภาพโดยรวมของทีมของคุณ

โครงการซอฟต์แวร์จะอยู่เบื้องหลังได้อย่างไร? หนึ่งวันในเวลา. Sourcegraph ช่วยให้ทีมของคุณอยู่ได้ก่อนกำหนดด้วยการปรับปรุงงานประจำวัน ช่วยให้นักพัฒนาซอฟต์แวร์ลดผลกระทบของสวิตช์บริบทไม่ต่อเนื่องทำการตรวจสอบโค้ดได้เร็วขึ้นและค้นหาคำตอบสำหรับคำถามเช่น“ ฉันจะใช้สิ่งนี้ได้อย่างไร” ที่ถูกถามหลายสิบครั้งในแต่ละวัน ประสิทธิภาพเหล่านี้เพิ่มขึ้นอย่างรวดเร็ว 

ขับเคลื่อนการนำเครื่องมือใหม่ ๆ ไปใช้ทั่วทั้งองค์กร

ผู้ใช้ Sourcegraph ส่วนใหญ่ใช้หลายครั้งต่อวัน แต่เครื่องมือสำหรับนักพัฒนาจำนวนมากจะใช้ไม่บ่อยนัก อาจเป็นความท้าทายสำหรับ CIO และกรรมการของ Developer Productivity ในการผลักดันการนำเครื่องมือใหม่ ๆ มาใช้

การสังเกตและการตรวจสอบประสิทธิภาพการติดตามแอปพลิเคชันแบบกระจายตัววิเคราะห์ความครอบคลุมของโค้ดซึ่งเป็นเครื่องมือทั้งหมดที่สมาชิกทุกคนในทีมของคุณอาจค้นพบหรือเข้าถึงได้ไม่ยาก

Sourcegraph

API ส่วนขยายของ Sourcegraph ช่วยให้เครื่องมือของบุคคลที่สามสามารถเพิ่มคำอธิบายประกอบลงใน UI ของเว็บ Sourcegraph และ UI ของโฮสต์โค้ดเช่น GitHub และ GitLab มีส่วนขยายสำหรับเครื่องมือนอกสถานที่ยอดนิยมเช่น Codecov, Datadog และ Sentry และทีมเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ภายในสามารถสร้างส่วนขยายส่วนตัวสำหรับเครื่องมือภายในองค์กรได้เช่นกัน

เร่งเตรียมวิศวกรใหม่

อาจเป็นเรื่องยากที่จะเตรียมวิศวกรใหม่โดยเฉพาะอย่างยิ่งหากองค์กรด้านวิศวกรรมหรือโค้ดเบสมีขนาดใหญ่ Sourcegraph ช่วยลดเวลาระหว่างวันที่เริ่มต้นและการคอมมิตครั้งแรกโดยช่วยให้เข้าใจโค้ดที่มีอยู่ได้เร็วขึ้น พนักงานใหม่มักใช้เวลาส่วนใหญ่ในการกระโดดไปรอบ ๆ ส่วนที่ไม่คุ้นเคยของ codebase เพื่อสร้างแบบจำลองทางจิตของรหัสขององค์กร การนำทางรหัสสากลของ Sourcegraph ช่วยให้พวกเขาสำรวจโค้ดเบสทั้งหมดโดยมีการสลับบริบทเพียงเล็กน้อยและความสามารถในการแชร์ลิงก์ช่วยให้พวกเขาถามคำถามเฉพาะที่ไม่ต้องเสียเวลากับวิศวกรอาวุโส

ลดเวลาตอบสนองของเหตุการณ์

ทุกนาทีมีค่าเมื่อตอบสนองต่อเหตุการณ์การผลิต การค้นหาซอร์สโค้ดจะลดเวลาที่ใช้ในการรูทสาเหตุของปัญหาโดยทำให้ง่ายต่อการค้นหาข้อความแสดงข้อผิดพลาดในซอร์สโค้ด บ่อยครั้งข้อความแสดงข้อผิดพลาดเกิดจากการพึ่งพาต้นน้ำดังนั้นจึงหาได้ยากโดยใช้ IDE หรือเครื่องมือค้นหาบรรทัดคำสั่ง Sourcegraph จัดทำดัชนีโค้ดทั้งหมดที่เกี่ยวข้องกับองค์กรของคุณและทำให้สามารถค้นหาข้อความแสดงข้อผิดพลาดได้ทันที

API ส่วนขยาย Sourcegraph ยังเปิดใช้งานการรวมเครื่องมือ devops เข้ากับ Sourcegraph ตัวอย่างเช่นส่วนขยาย Sentry จะแสดงจำนวนการแจ้งเตือนการผลิตที่สายรหัสเครื่องมือสร้างขึ้น สิ่งนี้ให้ความรู้เชิงบริบทที่มีคุณค่าเมื่อทำการดีบักเหตุการณ์

Sourcegraph

รักษาและเผยแพร่มาตรฐานคุณภาพโค้ด

Sourcegraph ช่วยให้องค์กรสามารถรักษาและเผยแพร่มาตรฐานคุณภาพโค้ดผ่านเวกเตอร์สองสามตัว:

  • การตรวจสอบโค้ดที่มีประสิทธิภาพ แต่ละเอียดถี่ถ้วนด้วยการนำทางโค้ด Sourcegraph และคำแนะนำเครื่องมือช่วยป้องกันไม่ให้รวมโค้ดคุณภาพต่ำเข้าด้วยกัน
  • ตัวตรวจสอบคุณภาพโค้ดอัตโนมัติ (เช่น Codecov) สามารถรวมเข้ากับการตรวจสอบโค้ดผ่าน API ส่วนขยาย Sourcegraph Sourcegraph จะเพิ่มคำอธิบายประกอบเหล่านี้ในเครื่องมือตรวจสอบโค้ดที่มีอยู่
  • การแชร์ลิงก์โค้ดและการนำทางโค้ดในเบราว์เซอร์ช่วยให้นักพัฒนาสามารถอ้างอิงตัวอย่างของรูปแบบที่จะเลียนแบบได้และไม่สนับสนุนรูปแบบการต่อต้าน

แสดงโค้ดเบสของคุณเป็นชุดข้อมูลผ่าน API

Sourcegraph แสดง GraphQL API ที่มีประสิทธิภาพ API ถูกใช้โดยทีมเครื่องมือนักพัฒนาภายในเพื่อสร้างเครื่องมือภายในที่ใช้ประโยชน์จากความสามารถของ Sourcegraph เช่นการค้นหารหัสสากลการนำทางโค้ดและสถิติโค้ด โทเค็นการเข้าถึงเปิดใช้งานเครื่องมือที่เชื่อถือได้เพื่อพิสูจน์ตัวตนกับ Sourcegraph อย่างปลอดภัย Sourcegraph มาพร้อมกับ API explorer แบบโต้ตอบซึ่งทำให้ง่ายต่อการเรียนรู้และทดลองกับ API

Sourcegraph