Mulai dengan masalah GitHub
Masalah GitHub adalah sistem pelacakan bawaan untuk tugas, bug, dan permintaan fitur di repositori GitHub. Sebelum Anda dapat menyelesaikan masalah secara efektif menggunakan GitHub Copilot, Anda perlu memahami cara bekerja dengan Masalah GitHub secara efektif.
Apa itu masalah GitHub?
Masalah GitHub menyediakan ruang kerja kolaboratif tempat tim melacak item kerja, masalah dokumen, dan merencanakan peningkatan. Setiap masalah berfungsi sebagai tiket dalam sistem pelacakan - dapat ditetapkan ke anggota tim, dikategorikan dengan label, ditautkan ke perubahan kode, dan diperkaya dengan diskusi dan dokumentasi.
Pikirkan Issues GitHub sebagai daftar tugas cerdas tim. Setiap item menyimpan diskusi, referensi kode, dan metadata untuk memastikan pekerjaan tidak jatuh melalui celah. Untuk pekerjaan yang berfokus pada keamanan, Masalah GitHub memberikan visibilitas dan keterlacakan yang membantu tim merespons kerentanan secara sistematis.
Komponen inti masalah
Memahami struktur Masalah GitHub membantu Anda membaca, mengelola, dan menyelesaikannya secara efektif.
Judul
Judul harus ringkasan ringkas dan deskriptif dari masalah ini. Judul yang baik membantu anggota tim dengan cepat memahami masalah secara sekilas.
Contoh judul masalah yang efektif:
- Kerentanan SQL injection pada endpoint pencarian produk
- "Enkripsi lemah dalam penyimpanan kata sandi pengguna"
- Risiko penelusuran path dalam fungsi unggah file
Judul yang ditulis dengan baik segera mengkomunikasikan jenis masalah (kerentanan keamanan) dan lokasinya (titik akhir pencarian produk).
Description
Deskripsinya adalah tempat detailnya berada. Deskripsi masalah komprehensif harus mencakup informasi berikut:
- Apa yang terjadi: Penjelasan yang jelas tentang masalah atau persyaratan.
- Langkah-langkah untuk mereproduksi: Untuk bug, tindakan spesifik yang menyebabkan masalah.
- Perilaku yang diharapkan: Apa yang harus terjadi sebagai gantinya?
- Mengapa penting: Pentingnya mengatasi masalah ini.
- Kriteria penerimaan: Cara memverifikasi kapan masalah diselesaikan.
Berikut adalah contoh deskripsi masalah keamanan terstruktur dengan baik:
The login authentication function stores user passwords in plaintext in the database.
**Current behavior:**
Passwords are stored directly as strings without hashing or encryption.
**Security impact:**
If the database is compromised, all user passwords are immediately exposed.
**Expected behavior:**
Passwords should be hashed using a secure algorithm (like bcrypt) with appropriate salt before storage.
**Acceptance criteria:**
- Implement bcrypt password hashing.
- Verify no plaintext passwords exist in storage.
- Update authentication to validate against hashed passwords.
Masalah yang ditulis dengan baik setengah terselesaikan. Ini memandu pengembang langsung ke masalah tanpa ambiguitas.
Komentar
Bagian komentar memungkinkan diskusi tim. Anggota tim dapat:
- Ajukan pertanyaan klarifikasi.
- Usulkan solusi potensial.
- Bagikan temuan investigasi.
- Rujuk kode atau masalah yang terkait.
- Dokumentasikan keputusan yang dibuat selama resolusi.
Komentar membuat jejak pengetahuan yang membantu pengembang saat ini dan di masa mendatang memahami masalah dan penalaran di balik solusi.
Penerima tugas
Penerima tugas adalah orang yang bertanggung jawab untuk menyelesaikan masalah. Memiliki pemilik yang jelas memastikan akuntabilitas dan mencegah masalah terjebak di dalam backlog.
Praktik terbaik: Selalu tetapkan satu pemilik utama untuk masalah. Jika Anda adalah penerima tugas, Anda bertanggung jawab untuk mendorongnya ke resolusi. Menjadi penerima tugas tidak berarti Anda bekerja sendiri - Anda dapat berkolaborasi dengan orang lain - tetapi Anda memiliki hasilnya.
Labels
Label mengategorikan dan memprioritaskan masalah. Label umum meliputi:
- Jenis label: kesalahan, peningkatan, dokumentasi, keamanan.
- Label prioritas: P0-kritis, P1-tinggi, P2-sedang, P3-rendah.
- Label status: sedang berlangsung, diblokir, perlu ditinjau.
- Label komponen: backend, frontend, API, database.
Label dapat digunakan untuk memfilter dan mengurutkan masalah dalam daftar, sehingga lebih mudah untuk fokus pada pekerjaan berprioritas tinggi atau terkait keamanan.
Untuk masalah keamanan, label membantu tim memfilter dan memprioritaskan kerentanan dengan cepat yang membutuhkan perhatian segera. Label keamanan yang dikombinasikan dengan sinyal kritis P0 bahwa masalah memerlukan tindakan mendesak.
Tonggak Pencapaian
Milestones mengelompokkan masalah terkait menuju pencapaian tujuan bersama. Misalnya, rilis versi atau fase proyek. Meskipun tidak penting untuk resolusi masalah individual, tonggak pencapaian membantu tim mengoordinasikan pekerjaan dan melacak kemajuan menuju tujuan yang lebih besar.
Memeriksa siklus hidup masalah
Masalah bergerak melalui beberapa tahap dari pembuatan ke resolusi. Memahami siklus hidup ini membantu Anda mengelola masalah secara efektif.
Tahap 1: Pembuatan
Masalah dapat dibuat oleh pengembang, penguji, atau pengguna yang mengidentifikasi masalah atau peluang untuk perbaikan. Masalah keamanan mungkin ditemukan melalui:
- Ulasan kode.
- Pemindaian keamanan otomatis.
- Pengujian Keamanan.
- Laporan pengguna.
- Audit keamanan.
Saat membuat masalah, sertakan konteks dan kriteria penerimaan yang memadai. Ini menetapkan ekspektasi yang jelas ketika masalah dianggap diselesaikan.
Tahap 2: Triase
Selama triase, pemimpin tim atau orang yang ditunjuk:
- Meninjau isu baru.
- Menetapkan tingkat prioritas.
- Menambahkan label yang sesuai.
- Menetapkan masalah kepada pengembang.
- Menautkan masalah atau dokumentasi terkait.
Masalah tingkat keparahan tinggi, terutama kerentanan keamanan, ditandai untuk segera diperhatikan. Masalah keamanan tidak boleh duduk di backlog tanpa penilaian.
Tahap 3: Investigasi dan diskusi
Pengembang yang ditetapkan menyelidiki masalah ini. Pengembang dapat menyelesaikan satu atau beberapa tugas berikut selama penyelidikan mereka:
- Ajukan pertanyaan klarifikasi dalam komentar.
- Temuan dokumen dari analisis kode.
- Usulkan solusi potensial.
- Minta informasi tambahan.
- Identifikasi area kode terkait yang terpengaruh.
Fase diskusi ini memastikan bahwa semua orang memahami masalah sebelum menerapkan perbaikan.
Tahap 4: Implementasi
Pengembang membuat cabang fitur dan mengimplementasikan perbaikan. Proses implementasi biasanya melibatkan tugas-tugas berikut:
- Menulis atau memodifikasi kode.
- Menambahkan atau memperbarui pengujian.
- Memverifikasi perbaikan secara lokal.
- Mempersiapkan pull request (PR).
Tahap 5: Menghubungkan commit dan pull request
GitHub secara otomatis menyambungkan masalah ke perubahan kode saat Anda mereferensikannya dalam pesan penerapan atau deskripsi PR menggunakan kata kunci:
Fixes #123Closes #123Resolves #123
Contoh pesan commit:
Fix SQL injection vulnerability in search function
Implement parameterized queries to prevent SQL injection attacks.
Add input validation for search parameters.
Fixes #42
Menggunakan kata kunci untuk mereferensikan masalah menciptakan keterlacakan antara masalah dan solusinya. Ketika PR digabungkan, GitHub secara otomatis menutup masalah yang dirujuk. Otomatisasi ini memastikan masalah tidak tetap terbuka setelah diperbaiki dan membuat tautan permanen antara deskripsi masalah dan perubahan kode yang menyelesaikannya.
Tahap 6: Penutupan dan verifikasi
Ketika PR digabungkan, masalah ditutup secara otomatis (jika dirujuk dengan benar). Jika pengujian mengungkapkan bahwa masalah belum sepenuhnya diselesaikan, masalah tersebut dapat dibuka kembali untuk pekerjaan lebih lanjut.
Praktik terbaik: Setelah penutupan, verifikasi bahwa kriteria penerimaan dalam deskripsi masalah asli terpenuhi. Untuk masalah keamanan, pertimbangkan verifikasi tambahan melalui pengujian keamanan.
Mengelola masalah GitHub di Visual Studio Code
Visual Studio Code terintegrasi langsung dengan Masalah GitHub melalui ekstensi Permintaan Pull GitHub. Integrasi ini memungkinkan Anda untuk:
- Tinjau masalah yang ditugaskan tanpa harus meninggalkan editor.
- Buat masalah baru dari dalam Visual Studio Code.
- Menghubungkan perubahan kode ke masalah saat Anda bekerja.
- Tinjau detail masalah bersama kode Anda.
Untuk mengakses Masalah GitHub di Visual Studio Code:
- Instal ekstensi "Permintaan dan Masalah Pull GitHub".
- Masuk ke akun GitHub Anda.
- Lihat masalah di panel GitHub.
- Filter menurut penerima tugas, label, atau tonggak pencapaian.
Integrasi yang ketat ini menyederhanakan alur kerja Anda dengan menjaga konteks masalah tetap terlihat saat Anda membuat kode.
Mengapa manajemen masalah yang efektif penting
Pelacakan masalah yang jelas mencegah masalah penting terabaikan, terutama dalam keamanan siber. Pertimbangkan skenario dunia nyata ini:
Masalah kecil menjadi insiden besar: Masalah keamanan "tampak minor" di backlog dapat menjadi insiden serius jika penyerang menemukannya terlebih dahulu. Masalah keamanan dalam Masalah GitHub terlihat dan dapat dilacak – gunakan visibilitas tersebut sebagai alat akuntabilitas.
Kehilangan pengetahuan institusi: Ketika masalah didokumenkan dengan buruk atau diskusi terjadi di luar sistem pelacakan, konteks berharga menghilang. Pengembang di masa mendatang (termasuk Anda dalam enam bulan) mungkin tidak memahami mengapa keputusan tertentu dibuat.
Respons tertunda: Tanpa label prioritas dan penerima tugas yang jelas, kerentanan keamanan penting mungkin tidak menerima perhatian tepat waktu.
Merangkul pengembangan berbasis masalah: Identifikasi masalah, perbaiki, verifikasi perbaikan, tutup masalah, dan lanjutkan. Pendekatan sistematis ini memastikan kelengkapan dan membangun keyakinan pada basis kode Anda.
Ringkasan
Masalah GitHub menyediakan fondasi untuk pemecahan masalah sistematis dalam pengembangan perangkat lunak. Memahami cara membaca, menginterpretasikan, dan mengelola masalah secara efektif sangat penting sebelum Anda dapat menyelesaikannya secara efisien.