Copilot Autofix untuk pemindaian kode (Pratinjau)

Copilot Autofix adalah fitur GitHub Advanced Security yang didukung AI untuk Azure DevOps yang menghasilkan perbaikan yang disarankan untuk pemberitahuan pemindaian kode. Ketika CodeQL mengidentifikasi kerentanan atau kesalahan pengkodean, Anda dapat menghasilkan perbaikan untuk pemberitahuan langsung dari tab Keamanan Tingkat Lanjut. Copilot Autofix menggunakan agen pengodean Copilot untuk menghasilkan perbaikan dan membuka permintaan pull dengan perubahan yang diusulkan, sehingga Anda dapat meninjau, mengedit, dan menggabungkannya melalui alur kerja permintaan pull normal Anda.

Note

Fitur ini berada dalam pratinjau publik terbatas. Microsoft saat ini tidak menerima pengguna tambahan untuk pratinjau.

Fungsionalitas mungkin berubah atau dihapus tanpa pemberitahuan. Fitur pratinjau tidak memiliki Perjanjian Tingkat Layanan (SLA) dan dukungan terbatas.

GitHub Advanced Security untuk Azure DevOps berfungsi dengan Azure Repos. Untuk menggunakan GitHub Advanced Security dengan repositori GitHub, lihat GitHub Advanced Security.

Prerequisites

Kategori Requirements
Permissions - Untuk melihat ringkasan semua peringatan untuk repositori: izin Kontributor untuk repositori.
- Untuk mengabaikan peringatan di Advanced Security: izin Project administrator.
- Untuk mengelola izin di Keamanan Tingkat Lanjut: Anggota grup Administrator Koleksi Proyek atau Pengaturan Keamanan Lanjutan: mengelola pengaturan dengan izin yang diatur pada Izinkan.

Untuk informasi selengkapnya tentang izin Keamanan Tingkat Lanjut, lihat Mengelola izin Keamanan Tingkat Lanjut.

  • Pemindaian kode dikonfigurasi untuk repositori Anda, menggunakan penyiapan default atau penyiapan tingkat lanjut.
  • Setidaknya satu pemberitahuan pemindaian kode CodeQL.

Tentang Copilot Autofix

Copilot Autofix menggabungkan kekuatan analisis CodeQL dengan model bahasa besar yang mendukung agen pengodean Copilot. Saat Anda membuat perbaikan untuk pemberitahuan pemindaian kode yang didukung, Copilot Autofix menganalisis pemberitahuan dan kode di sekitarnya, lalu membuka permintaan pull yang berisi:

  • Perubahan kode yang disarankan yang mengatasi kerentanan yang mendasar.
  • Deskripsi pemberitahuan yang diperbaiki, termasuk ID pemberitahuan, tingkat keparahan, dan ringkasan perubahan.

Karena perbaikan yang disarankan mempertimbangkan konteks yang lebih luas dari basis kode Anda, perubahan dapat mencakup lebih dari satu baris tempat pemberitahuan dimunculkan, dan dapat menyertakan perubahan ke file lain jika diperlukan.

Note

Data yang ditangani oleh Copilot Autofix tidak digunakan untuk melatih model bahasa besar (LLM).

Important

Saran Autofix Copilot dihasilkan oleh model AI dan tidak dijamin akurat, lengkap, atau aman. Selalu tinjau permintaan pull dengan hati-hati, validasi bahwa permintaan tersebut menyelesaikan pemberitahuan tanpa memperkenalkan masalah baru, dan menguji perubahan Anda sebelum menggabungkannya.

Bahasa yang didukung

Copilot Autofix mendukung bahasa yang sama dengan yang dianalisis CodeQL untuk pemindaian kode, termasuk C/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby, dan Swift. Untuk daftar bahasa yang didukung CodeQL saat ini, lihat Dukungan bahasa dan kueri.

Billing

Copilot Autofix disertakan dengan lisensi GitHub Advanced Security for Azure DevOps Anda. Membuat perbaikan menggunakan kredit AI dari meter penagihan Azure milik organisasi Anda.

Setiap pembuatan perbaikan menggunakan token, yang mencakup token input untuk konteks kode yang dikirim ke model, token output untuk perubahan yang disarankan, dan token cache yang menggunakan kembali konteks yang ada.

Agar penagihan tetap sederhana, token ini dikonversi menjadi unit standar yang disebut kredit AI GitHub, di mana 1 kredit sama dengan $0,01 USD. Biaya ditagihkan ke langganan Azure yang ditautkan ke organisasi Azure DevOps Anda dan muncul sebagai meter terpisah dalam Azure Cost Management.

Biaya setiap perbaikan bervariasi menurut ukuran konteks kode di sekitarnya dan kompleksitas perubahan.

Untuk memantau biaya harian Anda, buka Langganan>Manajemen Biaya>Analisis biaya di portal Azure.

Aktifkan Copilot Autofix

Anda dapat mengaktifkan Copilot Autofix di tingkat organisasi, proyek, atau repositori. Saat Anda mengaktifkan Autofix pada cakupan yang lebih luas, pengaturan berlaku untuk semua repositori dalam cakupan tersebut. Pilih tempat untuk mengonfigurasi Autofix berdasarkan repositori yang ingin Anda terapkan pengaturannya:

Ruang lingkup Tempat mengonfigurasi Autofix
Organisasi Pilih Pengaturan organisasi>Repositori untuk mengaktifkan Autofix untuk semua repositori di organisasi.
Proyek Pilih Pengaturan proyek>Repositori>Semua Repositori untuk mengaktifkan Autofix untuk semua repositori di proyek.
Penyimpanan Pilih pengaturan Project>Repositori, lalu pilih repositori untuk mengaktifkan Autofix hanya untuk repositori tersebut.

Untuk mengaktifkan Copilot Autofix:

  1. Masuk ke organisasi Azure DevOps Anda (https://dev.azure.com/{yourorganization}).
  2. Buka halaman pengaturan untuk lingkup organisasi, proyek, atau repositori yang ingin Anda konfigurasi.
  3. Di bagian Keamanan Tingkat Lanjut , buka panel fitur Keamanan Kode .
  4. Pilih kotak centang Autofix untuk pemberitahuan pemindaian kode untuk membuat perbaikan otomatis untuk pemberitahuan pemindaian kode, yang dihasilkan oleh agen pengodean Copilot.
  5. Pilih Terapkan untuk menyimpan perubahan.

Cuplikan layar panel fitur Keamanan Kode dengan kotak centang Autofix untuk pemberitahuan pemindaian kode disorot.

CodeQL harus sudah menjalankan dan menghasilkan pemberitahuan untuk repositori. Untuk informasi selengkapnya, lihat Siapkan pemindaian kode dan Konfigurasi fitur Keamanan Tingkat Lanjut GitHub.

Buat perbaikan untuk peringatan

Setelah mengaktifkan Copilot Autofix, Anda dapat menghasilkan perbaikan dari peringatan pemindaian kode yang didukung.

  1. Pilih Repositori>Advanced Security.
  2. Pilih tab Pemindaian kode , lalu pilih pemberitahuan untuk membuka tampilan detailnya.
  3. Tinjau Lokasi, Deskripsi, dan Rekomendasi pemberitahuan untuk memahami temuan tersebut.
  4. Pilih Hasilkan perbaikan.

Cuplikan layar tampilan detail pemberitahuan pemindaian kode dengan tombol Buat perbaikan di kanan atas.

Saat Copilot Autofix berfungsi pada perbaikan, tampilan detail pemberitahuan menunjukkan bahwa perbaikan sedang berlangsung. Copilot Autofix membuat pull request ketika perbaikannya siap.

Cuplikan layar tampilan detail pemberitahuan pemindaian kode yang memperlihatkan Copilot Autofix sedang mengerjakan perbaikan sebelum membuka permintaan pull.

Copilot Autofix menghasilkan perbaikan dan membuka pull request dari cabang yang diberi nama copilot-autofix/.... Permintaan pull diberi label dengan tag Autofix Copilot, yang dapat Anda gunakan untuk mengidentifikasi permintaan pull Autofix dalam daftar permintaan pull.

Untuk pemberitahuan CodeQL, permintaan pull muncul secara otomatis di bawah Permintaan pull terkait pada tampilan detail pemberitahuan dan terus diperbarui saat pembuatan dan kemajuan penyelesaian, sehingga Anda tidak perlu merefresh halaman.

Cuplikan layar tampilan detail pemberitahuan pemindaian kode memperlihatkan permintaan pull Autofix aktif di bawah Permintaan pull terkait.

Jika Copilot Autofix tidak menghasilkan perubahan kode apa pun untuk pemberitahuan, itu tidak membuat cabang atau permintaan pull, dan tidak menautkan permintaan pull pada tampilan detail pemberitahuan. Dalam hal ini, perbaiki pemberitahuan secara manual. Untuk informasi selengkapnya, lihat Perbaikan tidak tersedia.

Tinjau dan gabungkan perbaikan

Pull request yang dibuka oleh Copilot Autofix berfungsi seperti pull request Azure Repos lainnya. Deskripsinya merangkum peringatan yang ditangani oleh perbaikan tersebut.

Tangkapan layar pull request yang dibuat oleh Copilot Autofix, yang menampilkan ID peringatan, tingkat keparahan, dan detail perbaikan dalam deskripsi.

Label Copilot Autofix mengidentifikasi permintaan penarikan perbaikan otomatis.

  1. Buka pull request dari bagian Related pull requests pada pemberitahuan, atau dari Repositori>Pull requests.
  2. Tinjau perubahan yang diusulkan di tab File di semua file yang terpengaruh.
  3. Edit perubahan jika Anda perlu mencocokkan gaya kode, konvensi penamaan, atau persyaratan proyek Anda.
  4. Setujui dan selesaikan pull request melalui alur kerja peninjauan seperti biasa.

Setelah permintaan pull bergabung dan eksekusi pemindaian kode berikutnya selesai, pemberitahuan ditutup secara otomatis jika perbaikan menghapus kerentanan yang mendasarinya.

Tip

Perbaikan yang dihasilkan adalah titik awal, bukan jawaban akhir. Perlakukan permintaan pull seperti perubahan lainnya: tinjau, uji, dan minta peninjau tambahan sesuai kebutuhan sebelum Anda menggabungkan.

Memecahkan masalah Copilot Autofix

Perbaikan dibuat tetapi tidak dapat diterapkan atau didorong

Copilot Autofix menggunakan noreply@dev.azure.com sebagai email penulis commit. Jika kebijakan validasi email penulis commit tidak mengizinkan alamat ini, Copilot Autofix dapat menghasilkan perubahan kode tetapi tidak dapat melakukan commit atau push untuk membuat pull request.

Tampilan detail peringatan menampilkan pesan kesalahan yang mengidentifikasi alamat email penulis commit yang diblokir.

Cuplikan layar pemberitahuan pemindaian kode yang menunjukkan bahwa Copilot Autofix tidak dapat menerapkan perbaikan yang dihasilkan karena email pembuat penerapan tidak diizinkan.

Tambahkan noreply@dev.azure.com ke pola email yang diizinkan dalam kebijakan validasi email penulis commit:

  1. Pilih Pengaturan proyek >Repositori.
  2. Pilih Semua Repositori untuk memperbarui kebijakan tingkat proyek, atau pilih repositori yang memiliki kebijakan.
  3. Pilih Kebijakan.
  4. Di bawah Kebijakan Repositori, temukan Terapkan validasi email pembuat.
  5. Tambahkan noreply@dev.azure.com ke pola email yang diizinkan.
  6. Kembali ke pemberitahuan pemindaian kode dan pilih Coba lagi perbaikan.

Cuplikan layar pengaturan kebijakan repositori yang menunjukkan penambahan alamat email Copilot Autofix ke pola alamat email penulis commit yang diizinkan.

Sebuah eksekusi gagal

Jika eksekusi Autofix Copilot tidak dapat diselesaikan, peringatan akan menampilkan status kegagalan yang menonjol sehingga Anda dapat dengan cepat melihat bahwa eksekusi tersebut tidak berhasil. Dari status kegagalan, Anda dapat mencoba kembali eksekusi untuk menghasilkan perbaikan baru.

Cuplikan layar pemberitahuan pemindaian kode memperlihatkan Copilot Autofix berjalan dalam status gagal dengan opsi untuk mencoba kembali eksekusi.

Eksekusi dapat gagal karena alasan sementara, atau ketika eksekusi tidak menghasilkan perubahan kode yang dapat digunakan. Coba lagi eksekusi untuk menghasilkan perbaikan lagi.

Perbaikan tidak tersedia

Copilot Autofix tidak dapat menghasilkan perbaikan untuk setiap pemberitahuan. Perbaikan mungkin tidak tersedia ketika:

  • Jenis pemberitahuan saat ini tidak didukung oleh Copilot Autofix.
  • Copilot menentukan bahwa peringatan tersebut mungkin merupakan positif palsu.
  • Kueri kustom atau alat pihak ketiga, bukan CodeQL, menghasilkan pemberitahuan.
  • Copilot Autofix berjalan tetapi tidak menghasilkan perubahan kode apa pun. Dalam hal ini, tidak ada cabang atau pull request yang dibuat.

Jika Copilot Autofix menentukan bahwa pemberitahuan bisa berupa positif palsu dan tidak menghasilkan perubahan apa pun, tampilan detail pemberitahuan menunjukkan hasilnya. Anda dapat meninjau eksekusi atau mengulangi perbaikan.

Cuplikan layar tampilan detail pemberitahuan pemindaian kode yang menunjukkan bahwa Copilot menentukan pemberitahuan bisa berupa positif palsu dan tidak menghasilkan perbaikan, dengan opsi untuk melihat eksekusi atau mencoba kembali perbaikan.

Saat perbaikan tidak tersedia, gunakan bagian Rekomendasi dan Contoh pemberitahuan untuk memulihkannya atau menutup pemberitahuan secara manual. Untuk informasi selengkapnya, lihat detail Pemberitahuan .