Copilot Kod tarama için otomatik düzeltme (Önizleme)

Copilot Otomatik Düzeltme, kod tarama uyarıları için önerilen düzeltmeler oluşturan Azure DevOps için GitHub Gelişmiş Güvenlik'in yapay zeka destekli bir özelliğidir. CodeQL bir güvenlik açığı veya kodlama hatası tanımladığında, doğrudan Gelişmiş Güvenlik sekmesinden uyarı için bir düzeltme oluşturabilirsiniz. Copilot Otomatik Düzeltme, düzeltmeyi oluşturmak için Copilot kodlama aracısını kullanır ve önerilen değişiklikle bir çekme isteği açar; böylece bunu normal çekme isteği iş akışınızda gözden geçirebilir, düzenleyebilir ve birleştirebilirsiniz.

Note

Bu özellik sınırlı genel önizleme aşamasındadır. Microsoft şu anda önizleme için ek kullanıcıları kabul etmemekte.

İşlevsellik bildirimde bulunmaksızın değiştirilebilir veya kaldırılabilir. Önizleme özelliklerinin Hizmet Düzeyi Sözleşmesi (SLA) ve sınırlı desteği yoktur.

Azure DevOps için GitHub Advanced Security, Azure Repos ile çalışır. GitHub Gelişmiş Güvenliği GitHub depolarla kullanmak için bkz. GitHub Advanced Security.

Prerequisites

Kategori Requirements
Permissions - Depoya yönelik tüm uyarıların özetini görüntülemek için: Katkıda Bulunan depo izinleri.
- Gelişmiş Güvenlik'te uyarıları kapatmak için: Project administrator izinleri.
- Gelişmiş Güvenlik izinlerini yönetmek için: Project Collection Administrators grubunun üyesi olun veya Gelişmiş Güvenlik: ayarları yönet iznini İzin Ver olarak ayarlayın.

Gelişmiş Güvenlik izinleri hakkında daha fazla bilgi için bkz. Gelişmiş Güvenlik izinlerini yönetme.

  • Varsayılan kurulum veya gelişmiş kurulum kullanılarak deponuz için yapılandırılmış kod tarama.
  • En az bir CodeQL kod tarama uyarısı.

Copilot Otomatik Düzeltme Hakkında

Copilot Otomatik Düzeltme, CodeQL'in analiz gücünü Copilot kodlama aracısını destekleyen büyük dil modeliyle birleştirir. Desteklenen bir kod tarama uyarısı için düzeltme oluşturduğunuzda, Copilot Autofix uyarıyı ve çevresindeki kodu analiz eder, ardından şunları içeren bir çekme isteği açar:

  • Altta yatan güvenlik açığını gideren önerilen kod değişikliği.
  • Uyarı kimliği, önem derecesi ve değişikliğin özeti de dahil olmak üzere düzeltilmekte olan uyarının açıklaması .

Önerilen düzeltme kod tabanınızın daha geniş bağlamını dikkate aldığı için, değişiklik uyarının oluşturulduğu tek satırdan daha fazla yayılabilir ve gerektiğinde diğer dosyalarda değişiklik içerebilir.

Note

Copilot Autofix tarafından işlenen veriler, büyük dil modellerini (LLM) eğitmek için kullanılmaz.

Important

Copilot Otomatik düzeltme önerileri bir yapay zeka modeli tarafından oluşturulur ve doğru, eksiksiz veya güvenli olduğu garanti edilmemektedir. Çekme isteğini her zaman dikkatlice gözden geçirin, uyarıyı yeni sorunlar ortaya çıkarmadan giderdiğini doğrulayın ve birleştirmeden önce değişikliklerinizi test edin.

Desteklenen diller

Copilot Autofix, CodeQL’in kod taraması kapsamında analiz ettiği C/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby ve Swift dahil olmak üzere aynı dilleri destekler. CodeQL tarafından desteklenen dillerin geçerli listesi için bkz. Dil ve sorgu desteği.

Billing

Copilot Otomatik Düzeltme, Azure DevOps için GitHub Gelişmiş Güvenlik lisansınıza dahildir. Bir düzeltme oluşturmak, kuruluşunuzun Azure faturalama sayacından yapay zeka kredileri tüketir.

Her düzeltme oluşturma işlemi modele gönderilen kod bağlamı için giriş belirteçleri, önerilen değişiklik için çıkış belirteçleri ve var olan bağlamı yeniden kullanan önbelleğe alınmış belirteçleri içeren belirteçleri kullanır.

Faturalandırmayı basit tutmak için bu belirteçler, 1 kredinin 0,01 ABD dolarına eşit olduğu GitHub yapay zeka kredisi olarak adlandırılan standart bir birime dönüştürülür. Ücretler, Azure DevOps kuruluşunuza bağlı Azure aboneliğine faturalandırılır ve Azure Maliyet Yönetimi’ta ayrı bir ölçüm olarak görünür.

Her düzeltmenin maliyeti, çevresindeki kod bağlamının boyutuna ve değişikliğin karmaşıklığına göre değişir.

Günlük ücretlerinizi izlemek için Azure portalında>>Maliyet analizi'ne gidin.

Copilot Otomatik Düzelt özelliğini etkinleştir

Copilot Otomatik Düzeltme'yi kuruluş, proje veya depo düzeyinde etkinleştirebilirsiniz. Otomatik Düzeltme'yi daha geniş bir kapsamda etkinleştirdiğinizde, bu ayar bu kapsamdaki tüm depolar için geçerlidir. Autofix'i, ayarın uygulanacağı depolara göre nerede yapılandıracağınızı seçin:

Scope Autofix nerede yapılandırılır
Organizasyon Kuruluştaki tümdepolar için Otomatik Düzeltme'yi etkinleştirmek için Kuruluş ayarları> Depoları'nı seçin.
Project Projedeki tüm depolar için Otomatik Düzeltme'yi etkinleştirmek üzere Proje ayarları>Depolar>'ı seçin.
Depo Project ayarları>Depolar'ı seçin ve ardından yalnızca bu depo için Otomatik Düzeltme'yi etkinleştirmek üzere bir depo seçin.

Copilot Otomatik Düzeltmeyi etkinleştirmek için:

  1. Azure DevOps kuruluşunuzda (https://dev.azure.com/{yourorganization} ) oturum açın.
  2. Yapılandırmak istediğiniz kuruluş, proje veya depo kapsamının ayarlar sayfasına gidin.
  3. Gelişmiş Güvenlik bölümünde Kod Güvenliği özellikleri panelini açın.
  4. Copilot kodlama aracısı tarafından oluşturulan kod tarama uyarıları için otomatik düzeltmeler oluşturmak üzere kod tarama uyarıları için Autofix onay kutusunu seçin.
  5. Yaptığınız değişiklikleri kaydetmek için Apply'ı (Uygula) seçin.

Kod tarama uyarıları için otomatik düzeltme onay kutusunun vurgulandığı Kod Güvenliği özellikleri panelinin ekran görüntüsü.

CodeQL zaten çalışıyor ve depo için uyarılar oluşturuyor olmalıdır. Daha fazla bilgi için Kod taramayı ayarlama ve GitHub Advanced Security özelliklerini yapılandırma konularına bakın.

Uyarı için düzeltme oluşturma

otomatik düzeltmeyi Copilot etkinleştirdikten sonra desteklenen tüm kod tarama uyarılarından bir düzeltme oluşturabilirsiniz.

  1. Repos>Gelişmiş Güvenlik'yi seçin.
  2. Kod tarama sekmesini seçin ve ardından ayrıntı görünümünü açmak için bir uyarı seçin.
  3. Bulguyu anlamak için uyarının Konum, Açıklama ve Öneri'sini gözden geçirin.
  4. Düzeltme oluştur'a tıklayın.

Sağ üstteki Düzeltme oluştur düğmesinin bulunduğu kod tarama uyarısı ayrıntı görünümünün ekran görüntüsü.

Copilot Otomatik Düzeltme düzeltme üzerinde çalışsa da, uyarı ayrıntı görünümü düzeltmenin devam ettiğini gösterir. Düzeltme hazır olduğunda, Copilot Autofix bir çekme isteği açar.

Çekme isteğini açmadan önce Copilot Otomatik Düzeltme’nin bir düzeltme üzerinde çalıştığını gösteren kod tarama uyarısının ayrıntı görünümünün ekran görüntüsü.

Copilot Otomatik Düzeltme düzeltmeyi oluşturur ve copilot-autofix/... adlı daldan bir çekme isteği açar. Çekme isteği, çekme istekleri listesinde Autofix çekme isteklerini tanımlamak için kullanabileceğiniz Copilot Autofix etiketiyle etiketlenmiştir.

CodeQL uyarıları için çekme isteği, uyarı ayrıntıları görünümünde İlgili çekme istekleri altında otomatik olarak görünür ve oluşturma ile tamamlama süreci ilerledikçe güncellenmeye devam eder; bu nedenle sayfayı yenilemeniz gerekmez.

İlgili çekme istekleri altında aktif bir Autofix çekme isteğini gösteren kod tarama uyarısının ayrıntı görünümünün ekran görüntüsü.

Copilot Otomatik Düzeltme uyarıya yönelik herhangi bir kod değişikliği oluşturmazsa bir dal veya çekme isteği oluşturmaz ve uyarı ayrıntıları görünümünde çekme isteğine bağlantı vermez. Bu durumda uyarıyı el ile düzeltin. Daha fazla bilgi için Düzeltme kullanılamaz bölümüne bakın.

Düzeltmeyi gözden geçirin ve birleştirin

Copilot Autofix’in açtığı çekme isteği, diğer Azure Repos çekme istekleri gibi davranır. Açıklaması, düzeltmenin ele aldığı uyarıyı özetler.

Copilot Autofix tarafından oluşturulan, açıklamada uyarı kimliğini, önem derecesini ve düzeltme ayrıntılarını gösteren bir çekme isteğinin ekran görüntüsü.

Copilot Otomatik Düzeltme etiketi, otomatik düzeltme çekme isteklerini belirtir.

  1. Çekme isteğini uyarının İlgili çekme istekleri bölümünden veya Repos>Çekme istekleri bölümünden açın.
  2. Tüm etkilenen dosyalardaki Dosyalar sekmesinde önerilen değişikliği gözden geçirin.
  3. Kod stilinize, adlandırma kurallarınıza veya proje gereksinimlerinize uymanız gerekiyorsa değişikliği düzenleyin.
  4. Pull request’i alışılmış inceleme sürecinizi izleyerek onaylayın ve tamamlayın.

Pull request birleştirildikten ve sonraki kod taraması tamamlandıktan sonra, düzeltme altta yatan güvenlik açığını gideriyorsa uyarı otomatik olarak kapanır.

Tip

Oluşturulan düzeltme, son bir yanıt değil başlangıç noktasıdır. Pull request’i diğer değişiklikler gibi ele alın: birleştirmeden önce gözden geçirin, test edin ve gerektiğinde ek gözden geçirenler talep edin.

Copilot Otomatik Düzeltme Sorunlarını Giderme

Bir düzeltme oluşturuldu ancak commit edilemedi veya push edilemedi

Copilot Autofix, commit yazarı e-postası olarak noreply@dev.azure.com kullanır. Bir commit yazarı e-posta doğrulama ilkesi bu adrese izin vermiyorsa, Copilot Autofix kod değişikliğini oluşturabilir; ancak çekme isteğini oluşturmak için bunu commit edemez veya pushlayamaz.

Uyarı ayrıntı görünümü, engellenen commit yazarının e-posta adresini belirten bir hata görüntüler.

İşleme yazarı e-postaya izin verilmediğinden Copilot Otomatik Düzeltme'nin oluşturulan bir düzeltmeyi işleyemeyeceğini gösteren kod tarama uyarısının ekran görüntüsü.

noreply@dev.azure.com öğesini, commit yazarı e-posta doğrulama ilkesindeki izin verilen e-posta kalıplarına ekleyin:

  1. Proje ayarları>Depolar'ı seçin.
  2. Proje düzeyi ilkesini güncelleştirmek için Tüm Depolar'ı seçin veya ilkeyi içeren depoyu seçin.
  3. Politikalar'ı seçin.
  4. Depo İlkeleri'nin altında Commit author e-posta doğrulamayı bulun.
  5. noreply@dev.azure.com öğesini izin verilen e-posta kalıplarına ekleyin.
  6. Kod tarama uyarısına dönün ve Düzeltmeyi yeniden dene'yi seçin.

Copilot Autofix e-posta adresini izin verilen commit yazarı e-posta desenlerine eklediğiniz depo ilkesi ayarlarının ekran görüntüsü.

Çalıştırma başarısız oluyor

Copilot Otomatik Düzeltme çalıştırması tamamlanamadıysa, uyarı belirgin bir hata durumu gösterir, böylece çalıştırmanın başarılı olmadığını hızlı bir şekilde görebilirsiniz. Hata durumundan çalıştırmayı yeniden deneyerek yeni bir düzeltme oluşturabilirsiniz.

Çalıştırmayı yeniden deneme seçeneğinin bulunduğu, başarısız durumdaki bir Copilot Otomatik Düzeltme çalıştırmasını gösteren kod tarama uyarısının ekran görüntüsü.

Bir çalıştırma geçici nedenlerle veya çalıştırma kullanılabilir bir kod değişikliği üretmediğinde başarısız olabilir. Düzeltmeyi yeniden oluşturmak için çalıştırmayı yeniden deneyin.

Çözüm mevcut değil

Copilot Autofix her uyarı için bir düzeltme üretemez. Aşağıdaki durumlarda bir düzeltme kullanılamayabilir:

  • Uyarı türü şu anda Copilot Autofix tarafından desteklenmiyor.
  • Copilot uyarının hatalı pozitif olabileceğini belirler.
  • Uyarıyı CodeQL yerine özel sorgu veya üçüncü taraf bir araç oluşturur.
  • Copilot Autofix çalışıyor ancak kodda herhangi bir değişiklik üretmiyor. Bu durumda dal veya çekme talebi oluşturulmaz.

Copilot Otomatik Düzeltme, uyarının yanlış pozitif olabileceğini belirler ve herhangi bir değişiklik üretmezse sonuç, uyarı ayrıntıları görünümünde gösterilir. Çalıştırmayı gözden geçirebilir veya düzeltmeyi yeniden deneyebilirsiniz.

Copilot’un uyarının yanlış pozitif olabileceğini belirlediğini ve herhangi bir düzeltme üretmediğini, ayrıca çalıştırmayı görüntüleme veya düzeltmeyi yeniden deneme seçeneklerini gösteren kod tarama uyarısının ayrıntı görünümünün ekran görüntüsü.

Bir düzeltme kullanılamadığında, uyarıyı düzeltmek veya el ile kapatmak için uyarının Öneri ve Örnek bölümlerini kullanın. Daha fazla bilgi için bkz. Uyarı ayrıntıları.