ค้นหารหัสภายในโครงการ Github


272

มีวิธี grep สำหรับบางสิ่งบางอย่างในรหัสของโครงการ Github หรือไม่?

ฉันสามารถดึงแหล่งที่มาและ grep ไว้ในเครื่องได้ แต่ฉันสงสัยว่าเป็นไปได้ผ่านทางเว็บอินเตอร์เฟสหรือทางเลือกอื่น

ไอเดีย?


ยังเช็คเอาต์code.ohloh.net :)
obimod

สำหรับ repos Java / Scala ลองค้นหารหัส Semantic Code
drorw

1
เปิดคำขอคุณลักษณะที่: github.com/isaacs/github/issues/1495
Ciro Santilli 法轮功冠状病病六四事件法轮功

คำตอบ:


255

อัพเดทมกราคม 2013: การค้นหาใหม่ล่าสุดมาถึงแล้ว! อิงตามelasticsearch.org :

การค้นหาสถิติภายใน repo ทับทิมจะแสดงเป็นstat repo:ruby/rubyและตอนนี้จะเป็นเพียงแค่การทำงานTM
(ชื่อ repo ไม่ได้เป็นกรณีที่สำคัญ: test repo:wordpress/wordpressผลตอบแทนเช่นเดียวtest repo:Wordpress/Wordpress)

ป้อนคำอธิบายรูปภาพที่นี่

จะให้:

ป้อนคำอธิบายรูปภาพที่นี่

และคุณมีตัวอย่างอื่น ๆ ของการค้นหาตามผู้ติดตามหรือส้อมหรือ ...


อัปเดตกรกฎาคม 2555 (วันเก่าของการค้นหา Lucene และการจัดทำดัชนีรหัสที่ไม่ดีรวมกับ GUI ที่ใช้งานไม่ได้เก็บไว้ที่นี่เพื่อเก็บถาวร)

การค้นหา (ขึ้นอยู่กับSolrQuerySyntax ) ตอนนี้ได้รับอนุญาตมากขึ้นและInvalid search query. Try quoting it.หายไป" " เมื่อใช้ตัวเลือกการค้นหาเริ่มต้น "ทุกอย่าง" :)

(ฉันคิดว่าเราสามารถทำได้มากกว่าTim Peaseซึ่งมีหนึ่งในวัตถุประสงค์ของเขา"แฮ็คในการปรับปรุงประสบการณ์การค้นหาสำหรับคุณสมบัติ GitHub ทั้งหมด " และฉันได้พูดถึงคำถาม Stack Overflowในเวลานั้น))

นี่คือภาพประกอบของ grep ภายในรหัส ruby: มันจะค้นหา repos และผู้ใช้ แต่ยังรวมถึงสิ่งที่ฉันต้องการค้นหาในตอนแรก: code!

GitHub ผลการค้นหาที่อนุญาตมากขึ้น


คำตอบเบื้องต้นและภาพประกอบของปัญหาเดิม (กันยายน 2012 => มีนาคม 2012)

คุณสามารถใช้การค้นหาขั้นสูงแบบฟอร์ม GitHub :

  • เลือกCode, RepositoriesหรือUsersจากเมนูแบบเลื่อนลงและ
  • ใช้คำนำหน้าที่เกี่ยวข้องที่ระบุไว้สำหรับประเภทการค้นหานั้น

ตัวอย่างเช่นใช้repo:username/repo-nameคำสั่งเพื่อ จำกัด การค้นหาไปยังที่เก็บรหัส หน้า "
" เริ่มต้นAdvanced Searchรวมถึงส่วน:

ค้นหารหัส :

การค้นหารหัสจะดูรหัสทั้งหมดที่โฮสต์บน GitHub คุณยังสามารถกรองตาม:

  • ภาษา language:
  • ชื่อที่เก็บ (รวมถึงชื่อผู้ใช้) repo:
  • เส้นทางไฟล์ path:

ดังนั้นหากคุณเลือกตัวเลือกการCodeค้นหา "" การค้นหาของคุณจะทำให้ข้อความใน repo ทำงานได้:

ตัวเลือกการค้นหาที่ดี


สิ่งที่ไม่ ช่วยเหลืออย่างไม่น่าเชื่อจาก GitHub คือ:

  • หากคุณลืมใส่ตัวเลือกการค้นหาที่ถูกต้อง (ที่นี่ " Code") คุณจะได้รับข้อความแสดงข้อผิดพลาด:
    " Invalid search query. Try quoting it."

ตัวเลือกผิดสำหรับตัวกรองรหัส

  • ข้อความแสดงข้อผิดพลาดไม่ได้ช่วยอะไรคุณเลย
    ไม่มีจำนวน " quoting it" ที่จะนำคุณออกจากข้อผิดพลาดนี้

  • เมื่อคุณได้รับข้อความแสดงข้อผิดพลาดคุณจะไม่ได้รับส่วนที่แจ้งเตือนคุณถึงการเชื่อมโยงที่ถูกต้องระหว่างตัวเลือกการค้นหา(" Repositories", " Users" หรือ " Language") และตัวกรองการค้นหา (ขวา) (ที่นี่ " repo:")
    ความพยายามเพิ่มเติมใด ๆ ที่คุณทำจะไม่แสดงการเชื่อมโยงเหล่านั้น (ตัวกรอง - ตัวกรอง) กลับมา เฉพาะข้อความแสดงข้อผิดพลาดที่คุณเห็นด้านบน ...
    วิธีเดียวที่จะได้รับอาร์เรย์เหล่านั้นกลับมาคือการคลิกที่Advance Searchไอคอน "":

ไอคอนค้นหาขั้นสูงใน GitHub

  • "การEverything" เลือกค้นหาซึ่งเป็นค่าเริ่มต้นเป็นจริงที่ไม่ถูกต้องหนึ่งสำหรับทั้งหมดของตัวกรองค้นหา! ยกเว้น " language:" ...
    (คุณสามารถจินตนาการ / สมมติว่า " Everything" จะช่วยให้คุณเลือกตัวเลือกการค้นหาใดก็ได้ที่ใช้งานได้จริงกับตัวกรองการค้นหา " repo:" แต่ไม่เช่นนั้นจะง่ายเกินไป)

  • คุณไม่สามารถระบุตัวเลือกการค้นหาที่คุณต้องการผ่านช่อง " Advance Search" เพียงอย่างเดียว!
    (แต่คุณสามารถใช้กับ " language:" ได้แม้ว่า " Search Language" จะเป็นกล่องคอมโบอื่นที่อยู่ใต้ " Search for" '' ชนิด 'หนึ่ง ... )

ตัวเลือกการค้นหาผิด


ดังนั้นประสบการณ์ของผู้ใช้มักจะเป็นดังนี้:

  • คุณคลิก " Advanced Search" เหลือบไปที่ส่วนของตัวกรองเหล่านั้นและสังเกตว่าคุณต้องการใช้: " repo:"
  • คุณทำการค้นหาขั้นสูงครั้งแรก " repo:jruby/jruby stat" แต่ด้วยตัวเลือกการค้นหาเริ่มต้น " Everything"
    => FAIL! (และอาร์เรย์ที่แสดงการเชื่อมโยง "ตัวกรอง - ตัวกรอง" หายไป )
  • คุณสังเกตเห็นว่า "ค้นหา" selector thingy เลือกตัวเลือกแรก " Repositories" ("Dah! ฉันต้องการค้นหาภายในที่เก็บ ... ")
    => FAIL!
  • คุณเลือกตัวเลือกถัดไปของตัวเลือก (ที่นี่ " Users") โดยไม่ได้ดูตัวเลือกที่กล่าวไว้เพียงลองอีกครั้ง ...
    => FAIL!
  • "สกรูตัวนี้การค้นหาของ GitHub เสียแล้ว ! ฉันอยู่ที่นี่แล้ว!"
    ...
    (การค้นหาขั้นสูงของ GitHub ไม่แตกจริงมีเพียง GUI ของพวกเขาคือ ... )

ดังนั้นหากคุณต้องการ "grep สำหรับสิ่งที่อยู่ในรหัสของโครงการ Github" ในฐานะ OP Ben Humphreysอย่าลืมเลือกตัวเลือกการCodeค้นหา ... "


คุณแน่ใจหรือว่าฉันพยายามrepo:"jruby/jruby" stat repo:"jruby" stat jruby: statไม่ทำงานเลย
ทอมเอช.

@TomH: จากภาพรวมในครั้งแรกอาจเป็นข้อผิดพลาดทางด้าน GitHub ตามที่แสดงความคิดเห็นที่superuser.com/a/179900/141
VonC

1
@DannyStaple ดีพวกเขาดูเหมือนจะตระหนักถึงปัญหาถ้าคุณดูภารกิจที่อธิบายไว้ในgithub.com/blog/1116-tim-pease-is-a-githubber github.com/blog/1116-tim-pe-----ithith : "ทิมน่าจะเป็น [... ] การแฮ็คข้อมูลประสบการณ์การค้นหาที่ได้รับการปรับปรุงสำหรับคุณสมบัติ GitHub ทั้งหมด " ให้แน่ใจว่าจะตอบกลับไปยังทวีตของพวกเขา GitHub ( twitter.com/#!/github/status/197070106768048128 ) เช่นผม ( twitter.com/#!/VonC_/status/197565733830541313 )
VonC

9
FWIW ฉันติดต่อ GitHub เพราะฉันไม่ได้รับผลการค้นหาใด ๆ เมื่อ จำกัด การค้นหาไปยัง repos ของฉัน Tim Pease ตอบว่าพวกเขามีปัญหาเกี่ยวกับปริมาณของดัชนี repo ดังนั้นพวกเขาจึงย้ายไปยังเซิร์ฟเวอร์ดัชนีที่แตกหัก ไม่มีการ ETA เปิดเมื่อ repos ทั้งหมดจะถูกย้าย
M. Dudley

3
ฉันเพิ่งใช้คำแนะนำของคำตอบนี้และมันก็ใช้ได้กับฉันเช่นกัน แต่ฉันมีข้อแม้หนึ่งข้อที่จะเพิ่ม ชื่อ repo ควรจะเป็นตัวพิมพ์เล็กเสมอแม้ว่า GitHib จะแสดงไว้ที่ใดก็ตามในวิธีอื่น ตัวอย่างเช่น (หลังจากตั้งค่ารหัสดร็อปดาวน์ ฯลฯ ตามด้านบน) ลองค้นหาด้วย: repo: wordpress / wordpress vs repo: WordPress / WordPress ... เฉพาะอันแรกเท่านั้นที่จะได้ผลลัพธ์
ethanpil

22

ที่เก็บส่วนตัวส่วนตัวล่าสุดมีช่องค้นหาสำหรับค้นหาผ่าน repo นั้น

ป้อนคำอธิบายรูปภาพที่นี่

อย่างน่างงงวยดูเหมือนว่าฟังก์ชันนี้ไม่สามารถใช้ได้กับที่เก็บสาธารณะ


1
ฉันสงสัยว่านี่เป็นการย้ายที่ต่ำมากเพื่อให้ผู้คนอัปเกรดเป็นรุ่นที่จ่ายหรือไม่ ไม่ฟังเหมือน github แต่ก็ยังอยู่
Sylvain

3
@Sylvain ไม่คิดว่ามันจะเป็นการส่งเสริมการอัปเกรดแม้หลังจากอัปเกรดคุณจะไม่ได้รับช่องค้นหานั้นสำหรับที่เก็บสาธารณะ แต่ฉันคิดว่าการค้นหาหลักใช้ดัชนีซึ่งไม่รวมที่เก็บส่วนตัวดังนั้นคุณจึงไม่สูญเสียหน้าที่การใช้งานเมื่อจ่ายค่าที่เก็บส่วนตัวพวกเขาต้องเพิ่มวิธีอื่นในการค้นหาผ่านที่เก็บส่วนตัวเท่านั้นดังนั้นเพิ่มเติม ช่องข้อความ.
avernet

2
ลองนึกภาพค่าใช้จ่ายของพวกเขาที่มีดัชนีการค้นหาสำหรับทุกบรรทัดของรหัสในทุก repo! บ้า! นั่นเป็นเหตุผลที่พวกเขาทำเพื่อ repos ส่วนตัว ..
Jonny Nott

1
การค้นหาอยู่ในส่วนหัวเหมือนกับการค้นหาทั่วโลก
Tib

20

UPDATE

bookmarklet Hack ด้านล่างนี้ใช้งานไม่ได้เนื่องจากปัญหา XHR และการเปลี่ยนแปลง API

โชคดีที่ตอนนี้ Github มี"การค้นหารหัสใหม่ทั้งหมด"ซึ่งทำงานได้อย่างยอดเยี่ยม


ชำระเงินวูดูนี้: UserScript ค้นหารหัส Github

ทำตามคำแนะนำที่นั่นหรือถ้าคุณเกลียดการเบราว์เซอร์ของคุณด้วยสคริปต์และส่วนขยายให้ใช้บันเดิลบุ๊กมาร์กของผู้ใช้ของฉันที่คั่นหน้า:

javascript:(function(){var s='https://github.com/skratchdot/github-code-search.user.js/raw/master/github-code-search.user.js',t='text/javascript',d=document,n=navigator,e;(e=d.createElement('script')).src=s;e.type=t;d.getElementsByTagName('head')[0].appendChild(e)})();doIt('');void('');

บันทึกแหล่งที่มาด้านบนเป็น URL ของบุ๊คมาร์คใหม่ หมวดใด repo Github คลิกบุ๊กและแบม : ในหน้าค้นหารหัส ajaxified

CAVEAT Github ต้องทำดัชนี repo ก่อนจึงจะสามารถค้นหาได้

ก่อนที่จะคั่นหน้า

Abracadabra ...

After - มองหาในแถบเมนูที่สองหลังจากแท็บซ้ายสุด: Files, Commits, Branches ...

นี่คือตัวอย่างการค้นหาจากที่เก็บข้อมูลจำเพาะ ECMAScript 5.1 ที่ทำหมายเหตุประกอบไว้:

ค้นหาตัวอย่างในที่เก็บข้อมูลจำเพาะ ECMAScript 5.1 ที่ทำหมายเหตุประกอบไว้แล้ว


เมื่อฉันใช้ปลั๊กอิน (Chrome) มันทำงานได้ดีใน scratchdot / github-code-search repo แต่ไม่ได้อยู่ใน repo อื่น ๆ
forforf

มันควรจะทำงานในหน้าแรกของ repo ใด ๆ บางทีคุณอาจลองจากหน้าอื่น ฉันโพสต์ภาพหน้าจอของการค้นหาตัวอย่างในที่เก็บอื่นในโพสต์ของฉัน
fny

Aha! ฉันค้นพบจริงว่าทำไมการค้นหาเหล่านั้นอาจล้มเหลว: repo ต้องรอการเปลี่ยนดัชนี เมื่อพิจารณาจากที่เก็บข้อมูล zillion ที่ใช้งานอยู่ฉันสงสัยว่าต้องใช้เวลาสักครู่
fny

2
@ user456584 นั่นเป็นข่าวสำหรับฉัน คุณอาจต้องการให้GoogleและMozillaทราบเช่นกัน
fny

2
ฉันคิดว่าทำไมปลั๊กอินไม่ทำงานเพราะชื่อ repo จำเป็นต้องเป็นตัวพิมพ์เล็ก (ดูความคิดเห็นของฉันต่อคำตอบของ VonC ด้านบน) ฉันส่งแพตช์ไปที่ GitHub แล้วหวังว่าผู้แต่งดั้งเดิมจะเห็นมัน github.com/skratchdot/github-code-search.user.js/pull/5
ethanpil

10

แม้ว่าคำตอบของ @ VonC นั้นใช้ได้กับที่เก็บข้อมูลบางแห่ง แต่น่าเสียดายที่ที่เก็บข้อมูลหลายแห่งที่คุณไม่สามารถทำได้ในขณะนี้ Github ไม่ได้จัดทำดัชนีพวกเขา (ดังที่ความเห็นแรกเริ่มโดย @emddudley) พวกเขาไม่ได้แจ้งเรื่องนี้ในเว็บไซต์ของพวกเขา แต่พวกเขาจะบอกคุณว่าคุณขอความช่วยเหลือหรือไม่:

จาก: Tim Pease
เราได้หยุดเพิ่มรหัสผลักใหม่ลงในดัชนี codesearch ของเรา ปริมาณของรหัสมีจำนวนมากกว่าดัชนีการค้นหาปัจจุบันของเราและเรากำลังดำเนินการเพื่อย้ายไปยังสถาปัตยกรรมการค้นหาที่ปรับขนาดได้มากขึ้น ฉันขอโทษสำหรับความรำคาญ เราไม่มีการประมาณการว่าดัชนีการค้นหาใหม่นี้จะเปิดใช้งานเมื่อใดและเมื่อใดก็ตามที่พร้อมโพสต์บล็อกจะถูกเผยแพร่ (https://github.com/blog)

น่ารำคาญไม่มีวิธีบอกได้ว่าที่เก็บใดที่ไม่ได้จัดทำดัชนีนอกเหนือจากการขาดผลลัพธ์ (ซึ่งอาจมาจากแบบสอบถามที่ไม่ดี)

นอกจากนี้ยังไม่มีวิธีในการติดตามปัญหานี้นอกจากรอให้พวกเขาบล็อกมัน (หรือดูที่นี่ใน SO)

จาก: Tim Pease
ฉันเกรงว่าตัวติดตามปัญหาของเราอยู่ภายใน แต่เราสามารถแจ้งให้คุณทราบทันทีที่ดัชนีการค้นหาใหม่เปิดใช้งาน


อย่างน้อยพวกเขาควรกล่าวถึงผลการค้นหาบางอย่างที่อาจถูกละเว้น มันแย่มากเมื่อฉัน refactor รหัสและฉันค้นหาการเกิดขึ้นของรหัสที่มี แต่ไม่ได้กล่าวถึงโดย GitHub
Nicodemuz


0

ฉันค้นหาซอร์สโค้ดภายใน Github Repositories ที่มีSourcegraph Chrome Extensionฟรี ... แต่ฉันดาวน์โหลด Chrome ก่อนอื่นฉันรู้ว่าเบราว์เซอร์อื่น ๆ สนับสนุนแม้ว่า Firefox และอาจเป็นเพียง Firefox เท่านั้น

ฉันอ่านผ่านChrome Extension Docs ของ SourceForgeจากนั้นฉันก็มองสิ่งที่ฉันต้องการในการค้นหาชื่อไดเรกทอรีด้วย Github's Search Engine เองโดยอ่านCodebase การค้นหา Githubบางส่วน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.