Mencari Repositori Paket Fedora Menggunakan Sourcegraph

Roseline Bassey, Komunitas Fedora

Seiring dengan bertambahnya koleksi paket sumber terbuka kami, muncul kebutuhan akan cara yang lebih mudah untuk mencari paket-paket di dalam repositori dist-git kami. Pada tahun 2022, tim dari Sourcegraph bekerja sama dengan komunitas Fedora untuk mengintegrasikan mesin Pencarian Kode canggih milik Sourcegraph yang gratis ke dalam repositori paket distribusi kami yang sangat besar, yang kini mencakup lebih dari 38.000 paket. Dengan Pencarian Kode Sourcegraph, para pengembang, kontributor, dan pengelola kami dapat mencari di repositori dist-git untuk berkas spesifikasi RPM tertentu, definisi modul dan kontainer, patch khusus Fedora, pengujian, dan banyak lagi, semuanya di satu tempat, sehingga mengurangi waktu yang dihabiskan untuk mencari berkas.

Apa itu Sourcegraph?

Sourcegraph adalah platform kecerdasan kode. Dapat dianggap sebagai mesin pencari untuk kode. Platform ini dapat digunakan untuk mencari kode di seluruh host kode, repositori, dan cabang. Sourcegraph memiliki banyak fitur hebat, seperti kecerdasan kode, wawasan kode, perubahan batch, dan Cody - Asisten Pengodean AI, namun pada intinya, ini adalah alat Pencarian Kode. Dalam artikel ini, kita akan membahas cara menggunakan Pencarian Kode untuk repositori src.fedoraproject.org, yang juga dikenal sebagai dist-git Fedora.

Pencarian kode adalah kemampuan pencarian yang kuat di Sourcegraph untuk mencari kode dari satu antarmuka tunggal. Fitur ini mendukung penyaringan pencarian berdasarkan jenis berkas, repositori, dan bahasa pemrograman. Hal ini membantu mempersempit hasil pencarian.

Sourcegraph menyediakan antarmuka aplikasi web dan CLI. Saat menggunakan aplikasi web Sourcegraph, setiap pencarian harus dimulai dengan: repo:^src.fedoraproject.org sebelum memasukkan kueri pencarian apa pun.

Antarmuka Sourcegraph
Gambar 1. Antarmuka pencarian kode Sourcegraph

Filter Pencarian: Menggunakan Kata Kunci file untuk Menemukan Specfile

Kata kunci file menampilkan hasil dari berkas-berkas yang sesuai dengan jalur berkas yang ditentukan. Kueri berikut mencari di semua repositori untuk berkas dengan akhiran .spec yang berisi istilah dnf5. Penggunaan kata kunci file menyederhanakan tugas menemukan specfile.

repo:^src\.fedoraproject\.org/ file:\.spec$ dnf5
temukan specfile menggunakan kata kunci file
Gambar 2. Cari specfile

Gunakan Filter lang untuk Menemukan Repositori Fedora yang Dapat Dikontribusikan

Kata kunci lang digunakan untuk menyaring hasil pencarian berdasarkan bahasa pemrograman.

Kueri berikut mencari di repositori dist-git kami untuk berkas yang ditulis dalam Markdown dengan istilah contributing. Ini sangat berguna bagi mereka yang ingin membantu proyek-proyek yang membutuhkan kontribusi.

repo:^src\.fedoraproject\.org/ lang:markdown contributing
temukan proyek untuk berkontribusi menggunakan kata kunci lang
Gambar 3. Cari berkas yang ditulis dalam Markdown

Cari Specfile yang Menonaktifkan Paket Debug

Dengan menggunakan kueri "%global debug_package %{nil}", Anda dapat mencari specfile yang berisi baris di mana makro debug_package diatur ke nil. Baris ini menonaktifkan pembuatan paket debug dalam proses build.

temukan berkas yang menonaktifkan paket debug
Gambar 4. Cari specfile yang menonaktifkan paket debug

Temukan Repositori yang Menggunakan Lisensi Populer yang Disetujui OSI

Kueri berikut akan memindai semua repositori untuk perangkat lunak yang kompatibel dengan “Definisi Sumber Terbuka” (OSD).

repo:^src.fedoraproject.org/ lang:"RPM Spec" License: ^.*apache|bsd|gpl|lgpl|mit|mpl|cddl|epl.*$
cari lisensi
Gambar 5. Pencarian lisensi

Temukan Berkas dengan Versi Log4j yang Rentan

Kueri ini akan menemukan berkas apa pun yang kemungkinan rentan terhadap CVE-2021-44228, yang juga dikenal sebagai Log4j. Perlu dicatat bahwa hasil positif palsu dapat terjadi, sehingga Anda perlu melakukan penyelidikan lebih lanjut sebelum menyimpulkan apakah suatu paket benar-benar rentan atau tidak. Anda juga dapat mencari kerentanan lain yang kemudian dapat dilaporkan kepada pengelola proyek.

repo:^src.fedoraproject.org/ org.apache.logging.log4j 2.((0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15)(.[0-9]+)) count:all
Cari log4j
Gambar 6. Cari log4j

Kesimpulan

Untuk lebih banyak kueri pencarian, lihat dokumentasi resmi Sourcegraph.

Integrasi Pencarian Kode Sourcegraph ke dalam repositori dist-git kami merupakan tambahan yang sangat berharga untuk alat produktivitas rekayasa kami. Dengan kemampuan kuat dari Pencarian Kode, para kontributor dan pengguna kami dapat mencari secara efisien di seluruh repositori sumber terbuka kami dari satu tempat.