Cari kode di dalam proyek Github


272

Apakah ada cara untuk memahami sesuatu di dalam kode proyek Github?

Saya dapat menarik sumbernya dan melihatnya secara lokal, tetapi saya bertanya-tanya apakah itu mungkin melalui antarmuka web atau alternatif pihak ketiga.

Ide ide?


juga checkout code.ohloh.net :)
obimod

Untuk repo Java / Scala, coba Codota Semantic Code Search
drorw

Jawaban:


255

Perbarui Januari 2013: pencarian baru telah tiba! , berdasarkan pada elasticsearch.org :

Pencarian stat dalam repo ruby ​​akan dinyatakan sebagai stat repo:ruby/ruby, dan sekarang hanya akan berfungsi TM .
(nama repo tidak peka huruf besar kecil: test repo:wordpress/wordpressmengembalikan sama dengan test repo:Wordpress/Wordpress)

masukkan deskripsi gambar di sini

Akan memberi:

masukkan deskripsi gambar di sini

Dan Anda memiliki banyak contoh pencarian lainnya, berdasarkan pada pengikut , atau pada percabangan , atau ...


Perbarui Juli 2012 (hari-hari lama pencarian Lucene dan pengindeksan kode yang buruk, dikombinasikan dengan GUI yang rusak, disimpan di sini untuk arsip):

Pencarian (berdasarkan SolrQuerySyntax ) sekarang lebih permisif dan " Invalid search query. Try quoting it." yang ditakutkan hilang ketika menggunakan pemilih pencarian default "Semuanya" :)

(Saya kira kita semua bisa daripada Tim Pease , yang dalam salah satu tujuannya "meretas pengalaman penelusuran yang ditingkatkan untuk semua properti GitHub ", dan saya memang menyebutkan pertanyaan Stack Overflow saat itu;))

Berikut ini adalah ilustrasi grep dalam kode ruby: ia akan mencari repo dan pengguna, tetapi juga untuk apa yang ingin saya cari di tempat pertama: kode!

GitHub hasil pencarian lebih permisif


Jawaban dan ilustrasi awal dari edisi sebelumnya (September 2012 => Maret 2012)

Anda dapat menggunakan formulir pencarian GitHub lanjutan :

  • Pilih Code, Repositoriesatau Usersdari drop-down dan
  • gunakan awalan terkait yang tercantum untuk jenis pencarian itu .

Misalnya, Gunakan repo:username/repo-namearahan untuk membatasi pencarian ke repositori kode . Halaman "
" awal Advanced Searchtermasuk bagian:

KodePencarian :

Pencarian Kode akan melihat semua kode yang dihosting secara publik di GitHub. Anda juga dapat memfilter menurut:

  • bahasa language:
  • nama repositori (termasuk nama pengguna) repo:
  • jalur file path:

Jadi jika Anda memilih Codepemilih " " pencarian, maka kueri Anda yang mencari teks dalam repo akan berfungsi:

Pemilih Pencarian Bagus


Apa yang sangat tidak membantu dari GitHub adalah:

  • jika Anda lupa menempatkan pemilih pencarian yang tepat (di sini " Code"), Anda akan mendapatkan pesan kesalahan:
    " Invalid search query. Try quoting it."

Pemilih yang salah untuk pengarsip kode

  • pesan kesalahan sama sekali tidak membantu Anda.
    " quoting it" Jumlah apa pun tidak akan membuat Anda keluar dari kesalahan ini.

  • setelah Anda mendapatkan pesan kesalahan itu, Anda tidak mendapatkan bagian yang mengingatkan Anda tentang hubungan yang benar antara penyeleksi pencarian (" Repositories", " Users" atau " Language") dan filter pencarian (kanan) (di sini " repo:").
    Upaya lebih lanjut yang Anda lakukan tidak akan menampilkan asosiasi tersebut (filter pemilih) kembali. Hanya pesan kesalahan yang Anda lihat di atas ...
    Satu-satunya cara untuk mendapatkan kembali susunan itu adalah dengan mengeklik Advance Searchikon " ":

Ikon Pencarian Lanjutan di GitHub

  • Everythingpemilih " " pencarian, yang merupakan default, sebenarnya yang salah untuk semua filter pencarian! Kecuali " language:" ...
    (Anda dapat membayangkan / berasumsi bahwa " Everything" akan membantu Anda memilih pemilih pencarian apa pun yang benar-benar berfungsi dengan filter pencarian " repo:", tetapi tidak. Itu akan terlalu mudah)

  • Anda tidak dapat menentukan pemilih pencarian yang Anda inginkan melalui kolom " Advance Search" saja!
    (tetapi Anda bisa untuk " language:", meskipun " Search Language" adalah kotak kombo lain tepat di bawah " Search for" tipe 'satu ...)

Pemilih pencarian salah


Jadi, pengalaman pengguna biasanya adalah sebagai berikut:

  • Anda mengklik " Advanced Search", melirik bagian-bagian filter tersebut, dan perhatikan yang ingin Anda gunakan: " repo:"
  • Anda membuat pencarian lanjutan pertama " repo:jruby/jruby stat", tetapi dengan pemilih Pencarian default " Everything"
    => FAIL! (dan array yang menampilkan asosiasi "Filter-Penyeleksi" hilang )
  • Anda perhatikan bahwa "Cari" selector thingy, pilih pilihan pertama " Repositories" ("Dah! Saya ingin mencari di dalam repositori ...")
    => FAIL!
  • sedih, Anda memilih pilihan penyeleksi berikutnya (di sini, " Users"), tanpa melihat pemilih tersebut, hanya untuk mencoba satu lagi ...
    => FAIL!
  • "Persetan, pencarian GitHub rusak ! Aku keluar dari sini!"
    ...
    (Pencarian lanjutan GitHub sebenarnya tidak rusak. Hanya GUI mereka ...)

Jadi, sebagai rekap, jika Anda ingin "menangkap sesuatu di dalam kode proyek Github", sebagai OP Ben Humphreys , jangan lupa untuk memilih " Code" pemilih pencarian ...


apakah Anda yakin, saya repo:"jruby/jruby" stat repo:"jruby" stat jruby: stattidak mencoba yang berhasil
Tom H

@TomH: secara sekilas, mungkin ada bug di sisi GitHub, seperti yang dikomentari di superuser.com/a/179900/141
VonC

1
@DannyStaple Yah, mereka tampaknya menyadari masalah ini, jika Anda melihat misi yang dijelaskan dalam github.com/blog/1116-tim-pease-is-a-githubber : "Tim kemungkinan besar akan [...] meretas pada pengalaman penelusuran yang ditingkatkan untuk semua properti GitHub ". Pastikan untuk membalas tweet GitHub mereka ( twitter.com/#!/github/status/197070106768048128 ), seperti yang saya lakukan ( twitter.com/#!/VonC_/status/197565733830541313 )
VonC

9
FWIW saya menghubungi GitHub karena saya belum mendapatkan hasil pencarian ketika membatasi pencarian pada repos saya. Tim Pease menjawab bahwa mereka mengalami kesulitan dengan volume indeks repo, jadi mereka telah bermigrasi ke server indeks yang terbengkalai. Tidak ada ETA pada saat semua repo akan dimigrasi.
M. Dudley

3
Saya baru saja menggunakan saran dari jawaban ini dan itu bekerja untuk saya juga, tetapi saya punya satu peringatan untuk ditambahkan. Nama repo harus selalu dalam huruf kecil bahkan jika GitHib mencantumkannya di tempat lain dengan cara yang berbeda. Misalnya, (setelah mengatur dropdown Code, dll, seperti di atas) coba pencarian yang sama dengan: repo: wordpress / wordpress vs repo: WordPress / WordPress ... hanya yang pertama yang akan memberikan hasil.
ethanpil

22

Repositori pribadi terbaru memiliki bidang pencarian untuk mencari melalui repo itu.

masukkan deskripsi gambar di sini

Namun, sepertinya fungsi ini tidak tersedia untuk repositori publik.


1
Saya ingin tahu apakah ini merupakan langkah komersial yang rendah untuk membuat orang meningkatkan ke versi berbayar? Tidak terdengar seperti github tapi tetap saja.
Sylvain

3
@ Silvain Itu tidak berpikir itu dilakukan sebagai dorongan untuk meningkatkan, karena bahkan setelah meningkatkan, Anda tidak akan mendapatkan bidang pencarian untuk repositori publik. Sebaliknya, saya pikir pencarian utama menggunakan indeks yang tidak termasuk repositori pribadi, dan jadi Anda tidak kehilangan fungsionalitas ketika membayar repositori pribadi, mereka harus menambahkan cara lain untuk mencari melalui repositori pribadi itu saja, maka penambahan bidang teks.
avernet

2
Bayangkan overhead mereka memiliki indeks pencarian untuk setiap baris kode di setiap repo! Gila! Itu sebabnya mereka hanya melakukannya untuk repo pribadi ..
Jonny Nott

1
Pencarian sekarang di header, sama dengan pencarian global.
Tib

20

MEMPERBARUI

Retas bookmarklet di bawah ini rusak karena masalah XHR dan perubahan API.

Untungnya Github sekarang memiliki "Pencarian Kode Baru Utuh" yang melakukan pekerjaan dengan sangat baik.


Lihat voodoo ini: Github code search userscript .

Ikuti arahan di sana, atau jika Anda membenci peramban Anda dengan skrip dan ekstensi, gunakan bundel skrip pengguna yang saya bookmark:

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('');

Simpan sumber di atas sebagai URL bookmark baru. Jelajahi repo Github, klik bookmark, dan bam : in-page, pencarian kode ajaxified .

CAVEAT Github harus mengindeks repo sebelum Anda dapat mencarinya.

Sebelum Bookmarklet

Omong kosong...

Setelah - Lihat di menubar kedua setelah tab paling kiri: File, Komit, Cabang ...

Berikut ini adalah contoh pencarian dari repositori spesifikasi ECMAScript 5.1 yang beranotasi:

Contoh pencarian di repositori spesifikasi ECMAScript 5.1 beranotasi


Ketika saya menggunakan plugin (Chrome) itu berfungsi dengan baik di repo scratchdot / github-code-search, tetapi tidak di repo lain.
forforf

Itu harus bekerja di beranda repo. Mungkin Anda mencoba dari halaman lain? Saya memposting tangkapan layar pencarian sampel di repositori berbeda di posting saya.
fny

Aha! Saya benar-benar menemukan mengapa pencarian itu gagal: repo harus menunggu giliran untuk pengindeksan. Mengingat miliaran repositori aktif, saya menduga itu membutuhkan sedikit waktu.
fny

2
@ user456584 itu berita baru buat saya. Anda mungkin ingin memberi tahu Google dan Mozilla juga.
fny

2
Saya tahu mengapa plugin tidak berfungsi, itu karena nama repo harus dalam huruf kecil. (Lihat komentar saya untuk jawaban VonC di atas). Saya sudah mengirimkan tambalan di GitHub, semoga penulis asli akan melihatnya. github.com/skratchdot/github-code-search.user.js/pull/5
ethanpil

10

Sementara jawaban VonC bekerja untuk beberapa repositori, sayangnya untuk banyak repositori, Anda tidak dapat melakukannya sekarang. Github sama sekali tidak mengindeks mereka (seperti yang dikomentari awalnya oleh @emddudley). Mereka belum menyatakan ini di situs web mereka, tetapi mereka akan memberi tahu Anda jika Anda meminta dukungan:

Dari: Tim Pease
Kami telah berhenti menambahkan kode baru ke dalam indeks pencarian kode kami. Volume kode telah melampaui indeks pencarian kami saat ini, dan kami sedang berupaya untuk pindah ke arsitektur pencarian yang lebih skalabel. Saya minta maaf atas gangguan yang terjadi. Kami tidak memiliki perkiraan kapan indeks pencarian baru ini akan berjalan dan berjalan, tetapi ketika sudah siap posting blog akan dipublikasikan (https://github.com/blog).

Mengganggu tidak ada cara untuk mengetahui repositori mana yang tidak diindeks selain dari kurangnya hasil (yang juga bisa dari permintaan yang buruk).

Tidak ada cara untuk melacak masalah ini selain menunggu mereka membuat blog (atau menonton di SO).

Dari: Tim Pease
Saya khawatir pelacak masalah kami bersifat internal, tetapi kami dapat memberi tahu Anda segera setelah indeks pencarian baru berjalan dan berjalan.


Mereka setidaknya harus menyebutkan bahwa beberapa hasil pencarian dapat dihilangkan. Benar-benar menyebalkan ketika saya refactor kode dan saya mencari kemunculan kode yang ada tetapi tidak disebutkan oleh GitHub.
Nicodemuz


0

Saya mencari kode sumber di dalam Repositori Github dengan Sourcegraph Chrome Extension gratis ... Tapi Saya Mengunduh Chrome terlebih dahulu , saya tahu browser lain mendukungnya, seperti - dan mungkin hanya hanya - Firefox.

Saya membaca sekilas SourceForge's Chrome Extension Docs dan kemudian saya juga melihat apa yang saya butuhkan untuk mencari nama direktori dengan Github's Search Engine itu sendiri, dengan membaca beberapa Dokumen Pencarian Kode Dasar dari Github.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.