Bertahun-tahun yang lalu, Michelle Caise mengirimkan tambalan untuk menghasilkan laporan cakupan kode untuk basis kode PostgreSQL, berdasarkan utilitas lcov. Meskipun saya tidak dapat menemukan catatan patch yang sebenarnya di arsip milis, Peter Eisentraut melakukan itu beberapa waktu kemudian, dan menerapkan penyempurnaan lebih lanjut nanti.
Hari ini saya mengumumkan layanan komunitas PostgreSQL baru:laporan cakupan kode dibuat secara otomatis dan diperbarui setiap hari menggunakan infrastruktur ini. Sistem ini mengkompilasi cabang master, menjalankan make check-world , lalu membuat laporan HTML dengan make coverage , yang Anda lihat.
Contoh laporan cakupan kode di src/backend/access/brin
Untuk pembaca yang tidak terbiasa dengan cakupan kode, ringkasan singkat:kode "tercakup" ketika ada beberapa rangkaian uji yang melatihnya. Kode yang tidak tercakup dapat dengan mudah rusak tanpa diketahui siapa pun, yang tidak baik. Untuk menghindari pemecahan kode secara diam-diam, penting bahwa sebagian besar baris dicakup oleh pengujian. Untuk penjelasan lebih lengkap, inilah halaman Wikipedia tentang masalah ini.
Statistik kami di area ini secara historis agak buruk; sementara banyak fitur backend tercakup dengan baik, ada beberapa fitur yang hanya tercakup sebagian, dan fitur lainnya tidak tercakup sama sekali. Kami telah meningkat dalam beberapa tahun terakhir; pertama kami menambahkan penguji isolasi, yang memungkinkan kami menguji fitur yang hanya beroperasi di bawah konkurensi. Kedua kami menambahkan tes TAP, yang pada awalnya mencakup utilitas klien, tetapi kemudian diperluas untuk juga mencakup hal-hal lain seperti kode replay WAL dan hal-hal lain. Tapi jelas bahwa perjalanan kita masih panjang.
Ada beberapa peringatan yang perlu diingat. Salah satunya adalah membuat dunia-cek target (apa yang dilaporkan alat cakupan ini) bukanlah apa yang dijalankan oleh buildfarm, jadi mungkin saja laporan cakupan menjalankan lebih banyak pengujian daripada buildfarm — artinya kami mengklaim cakupan tanpa benar-benar memilikinya. Hal lainnya adalah bahwa cakupan dijalankan dalam satu platform (Debian pada AMD64), sehingga kode untuk arsitektur lain tidak dilaporkan sebagai tercakup.
Jadi pergilah dan jelajahi! Maksud saya, jelajahi laporannya, cari tahu bagian mana dari kode kita yang tidak tercakup, dan coba buat tes untuk memperbaikinya. Kami menunggu patch Anda di pgsql-hackers dengan minat.
(Juga:apakah ada tes yang harus kita jalankan selain make check-world ? Silakan tinggalkan umpan balik di komentar).