Aracılığıyla paylaş


Hızlı başlangıç: C/C++ için kod analizi

C veya C++ kodunda düzenli olarak kod analizi çalıştırarak uygulamanızın kalitesini artırabilirsiniz. Kod analizi, iyi programlama uygulamalarının yaygın sorunlarını ve ihlallerini bulmanıza yardımcı olabilir. Ayrıca, test yoluyla bulunması zor olan hataları bulur. Uyarıları derleyici hatalarından ve uyarılarından farklıdır: Sorunlara neden olduğu bilinen belirli kod desenlerini arar. Başka bir deyişle, geçerli olan ancak sizin için veya kodunuzu kullanan diğer kişiler için sorun oluşturmaya devam edebilir.

Proje için kural kümelerini yapılandırma

  1. Çözüm Gezgini'da proje adının kısayol menüsünü açın ve özellikler'i seçin.

  2. İsteğe bağlı olarak, Yapılandırma ve Platform listelerinde derleme yapılandırmasını ve hedef platformu seçin.

  3. Proje seçilen yapılandırma kullanılarak her oluşturulduğunda kod analizini çalıştırmak için Derlemede Kod Analizini Etkinleştir onay kutusunu seçin. Çözümle menüsünü açıp ProjectName üzerinde Kod Çözümlemesi Çalıştır'ı veya Dosyada Kod Analizini Çalıştır'ı seçerek de kod analizini el ile çalıştırabilirsiniz.

  4. Kullanmak istediğiniz kural kümesini seçin veya özel bir kural kümesi oluşturun. LLVM/clang-cl kullanıyorsanız, Clang-Tidy analiz seçeneklerini yapılandırmak için bkz . Visual Studio'da Clang-Tidy kullanma.

Standart C/C++ kural kümeleri

Visual Studio, yerel kod için şu standart kural kümelerini içerir:

Kural Kümesi Açıklama
C++ Çekirdek Denetimi Aritmetik Kuralları Bu kurallar C++ Çekirdek Yönergeleri'nden aritmetik işlemler ile ilgili denetimleri zorunlu kılar.
C++ Çekirdek Denetim Sınırları Kuralları Bu kurallar, C++ Çekirdek Yönergelerinin Sınır profilini zorunlu kılar.
C++ Çekirdek Denetimi Sınıf Kuralları Bu kurallar, C++ Çekirdek Yönergeleri'nden sınıflarla ilgili denetimleri zorunlu kılar.
C++ Çekirdek Denetimi Eşzamanlılık Kuralları Bu kurallar, C++ Çekirdek Yönergeleri'nden eşzamanlılık ile ilgili denetimleri zorunlu tutar.
C++ Çekirdek Denetimi Const Kuralları Bu kurallar, C++ Çekirdek Yönergeleri'nden en önemli denetimleri zorunlu kılar.
C++ Çekirdek Denetimi Bildirim Kuralları Bu kurallar, C++ Çekirdek Yönergeleri'nden gelen bildirimlerle ilgili denetimleri zorunlu kılar.
C++ Çekirdek Denetim Sabit Listesi Kuralları Bu kurallar, C++ Çekirdek Yönergeleri'nden sabit listesiyle ilgili denetimleri zorunlu kılar.
C++ Çekirdek Denetimi Deneysel Kuralları Bu kurallar bazı deneysel denetimler toplar. Sonunda, bu denetimlerin diğer kural kümelerine taşınmasını veya tamamen kaldırılmasını bekliyoruz.
C++ Çekirdek Denetimi İşlev Kuralları Bu kurallar, C++ Çekirdek Yönergeleri'nden işlevlerle ilgili denetimleri zorunlu kılar.
C++ Çekirdek GSL Kurallarını Denetleme Bu kurallar, C++ Çekirdek Yönergeleri'nden Yönergeler Destek Kitaplığı ile ilgili denetimleri zorunlu kılar.
C++ Çekirdek Denetim Ömrü Kuralları Bu kurallar, C++ Çekirdek Yönergelerinin Yaşam Süresi profilini zorunlu kılar.
C++ Çekirdek Denetimi Sahip İşaretçisi Kuralları Bu kurallar, C++ Çekirdek Yönergeleri'nden ile ilgili owner<T> kaynak yönetimi denetimlerini zorunlu kılar.
C++ Çekirdek Ham İşaretçi Kurallarını Denetleme Bu kurallar, C++ Çekirdek Yönergeleri'nden ham işaretçilerle ilgili kaynak yönetimi denetimlerini zorunlu kılar.
C++ Çekirdek Denetimi Kuralları Bu kurallar, C++ Çekirdek Yönergeleri'nden denetimlerin bir alt kümesini zorunlu kılar. Enum ve Deneysel kural kümeleri dışındaki tüm C++ Çekirdek Denetimi kurallarını eklemek için bu kural kümesini kullanın.
C++ Çekirdek Paylaşılan İşaretçi Kurallarını Denetleme Bu kurallar, C++ Çekirdek Yönergeleri'nden paylaşılan işaretçi semantiğine sahip türlerle ilgili kaynak yönetimi denetimlerini zorunlu kılar.
C++ Çekirdek Denetimi STL Kuralları Bu kurallar, C++ Temel Yönergeleri'nden C++ Standart Kitaplığı ile ilgili denetimleri zorunlu kılar.
C++ Çekirdek Denetimi Stil Kuralları Bu kurallar, C++ Temel Yönergeleri'nden ifadelerin ve deyimlerin kullanımıyla ilgili denetimleri zorunlu kılar.
C++ Çekirdek Denetim Türü Kuralları Bu kurallar, C++ Çekirdek Yönergelerinin Tür profilini zorunlu kılar.
C++ Çekirdek Benzersiz İşaretçi Kurallarını Denetleme Bu kurallar, C++ Çekirdek Yönergeleri'nden benzersiz işaretçi semantiğine sahip türlerle ilgili kaynak yönetimi denetimlerini zorunlu kılar.
Eşzamanlılık Denetimi Kuralları Bu kurallar, C++ dilinde win32 eşzamanlılık düzeni denetimleri kümesini zorunlu tutar.
Eşzamanlılık Kuralları C++ Çekirdek Yönergelerinden Eşzamanlılık Denetimi Kuralları'na eşzamanlılık kuralları ekler.
Microsoft Yerel Minimum Kuralları Bu kurallar, olası güvenlik açıkları ve uygulama kilitlenmeleri dahil olmak üzere yerel kodunuzdaki en kritik sorunlara odaklanır. Bu kural kümesini yerel projeleriniz için oluşturduğunuz herhangi bir özel kural kümesine eklemenizi öneririz.
Microsoft Yerel Önerilen Kuralları Bu kurallar, yerel kodunuzdaki en kritik ve yaygın sorunlara odaklanır. Bu sorunlar olası güvenlik açıklarını ve uygulama kilitlenmelerini içerir. Bu kural kümesini yerel projeleriniz için oluşturduğunuz herhangi bir özel kural kümesine eklemenizi öneririz. Bu kural kümesi, Visual Studio Professional sürümü ve üzeri sürümlerle çalışacak şekilde tasarlanmıştır. Microsoft Yerel Minimum Kuralları'ndaki tüm kuralları içerir.

Visual Studio, yönetilen kod için şu standart kural kümelerini içerir:

Kural Kümesi Açıklama
Microsoft Temel Doğruluk Kuralları Bu kurallar, çerçeve API'lerinin kullanımında yapılan mantık hatalarına ve yaygın hatalara odaklanır. Önerilen en düşük kurallar tarafından bildirilen uyarı listesini genişletmek için bu kural kümesini ekleyin.
Microsoft Temel Tasarım Kılavuzu Kuralları Bu kurallar, kodunuzun anlaşılmasını ve kullanımını kolaylaştırmak için en iyi yöntemleri zorunlu kılmaya odaklanır. Projeniz kitaplık kodu içeriyorsa veya kolayca korunabilen kod için en iyi yöntemleri uygulamak istiyorsanız bu kural kümesini ekleyin.
Microsoft Genişletilmiş Doğruluk Kuralları Bu kurallar, bildirilen mantık ve çerçeve kullanım hatalarını en üst düzeye çıkarmak için temel doğruluk kurallarını genişletir. COM birlikte çalışma ve mobil uygulamalar gibi belirli senaryolara ek vurgu yapılır. Bu senaryolardan biri projeniz için geçerliyse veya projenizde daha fazla sorun bulmak için bu kural kümesini eklemeyi göz önünde bulundurun.
Microsoft Genişletilmiş Tasarım Kılavuzu Kuralları Bu kurallar, bildirilen kullanılabilirlik ve bakım sorunlarını en üst düzeye çıkarmak için temel tasarım kılavuzu kurallarını genişletir. Adlandırma yönergelerine ek vurgu yapılır. Projeniz kitaplık kodu içeriyorsa veya korunabilir kod yazmak için en yüksek standartları zorlamak istiyorsanız bu kural kümesini eklemeyi göz önünde bulundurun.
Microsoft Genelleştirme Kuralları Bu kurallar farklı dillerde, yerel ayarlarda ve kültürlerde kullanıldığında uygulamanızdaki verilerin doğru görüntülenmesini engelleyen sorunlara odaklanır. Uygulamanız yerelleştirilmiş ve/veya genelleştirilmişse bu kural kümesini ekleyin.
Microsoft Yönetilen Minimum Kuralları Bu kurallar, kodunuzda Kod Analizi'nin en doğru olduğu en kritik sorunlara odaklanır. Bu kurallar az sayıdadır ve yalnızca sınırlı Visual Studio sürümlerinde çalıştırılmak üzere tasarlanmıştır. Diğer Visual Studio sürümleriyle MinimumRecommendedRules.ruleset kullanın.
Microsoft Tarafından Yönetilen Önerilen Kurallar Bu kurallar, kodunuzdaki en kritik sorunlara odaklanır. Bu sorunlar olası güvenlik açıklarını, uygulama kilitlenmelerini ve diğer önemli mantık ve tasarım hatalarını içerir. Bu kural kümesini projeleriniz için oluşturduğunuz herhangi bir özel kural kümesine eklemenizi öneririz.
Microsoft Mixed (C++ /CLR) En Düşük Kuralları Bu kurallar, C++ projelerinizde Ortak Dil Çalışma Zamanı'nı destekleyen en kritik sorunlara odaklanır. Bu sorunlar olası güvenlik açıklarını, uygulama kilitlenmelerini ve diğer önemli mantık ve tasarım hatalarını içerir. Bu kural kümesini, Ortak Dil Çalışma Zamanı'nı destekleyen C++ projeleriniz için oluşturduğunuz herhangi bir özel kural kümesine eklemenizi öneririz.
Microsoft Mixed (C++ /CLR) Önerilen Kuralları Bu kurallar, C++ projelerinizde Ortak Dil Çalışma Zamanı'nı destekleyen en yaygın ve kritik sorunlara odaklanır. Bu sorunlar olası güvenlik açıklarını, uygulama kilitlenmelerini ve diğer önemli mantık ve tasarım hatalarını içerir. Bu kural kümesi Visual Studio Professional sürümünde ve üzeri sürümlerde kullanılmak üzere tasarlanmıştır.
Microsoft Güvenlik Kuralları Bu kural kümesi tüm Microsoft güvenlik kurallarını içerir. Bildirilen olası güvenlik sorunlarının sayısını en üst düzeye çıkarmak için bu kural kümesini ekleyin.

Her kuralı dahil etmek için:

Kural Kümesi Açıklama
Microsoft Tüm Kuralları Bu kural kümesi tüm kuralları içerir. Bu kural kümesinin çalıştırılması çok sayıda uyarının bildirildiğine neden olabilir. Kodunuzdaki tüm sorunların kapsamlı bir resmini almak için bu kural kümesini kullanın. Projeleriniz için en uygun olan daha odaklanmış kural kümelerinden hangisinin çalıştırıldığına karar vermenize yardımcı olabilir.

Kod analizini çalıştırma

Proje Özellikleri iletişim kutusunun Kod Analizi sayfasında, projenizi her derlediğinizde çalışacak şekilde kod analizini yapılandırabilirsiniz. Kod analizini el ile de çalıştırabilirsiniz.

Çözümde kod analizi çalıştırmak için:

  • Derle menüsünde Çözümde Kod Çözümlemesi Çalıştır'ı seçin.

Projede kod analizi çalıştırmak için:

  1. Çözüm Gezgini projenin adını seçin.

  2. Oluştur menüsünde Proje Adında Kod Çözümlemesi Çalıştır'ı seçin.

Bir dosyada kod analizi çalıştırmak için:

  1. Çözüm Gezgini dosyanın adını seçin.

  2. Oluştur menüsünde Dosyada Kod Çözümlemesi Çalıştır'ı seçin veya Ctrl+Shift+Alt+F7 tuşlarına basın.

    Proje veya çözüm derlenmiş ve kod analizi çalıştırılır. Sonuçlar Hata Listesi penceresinde görüntülenir.

Kod analizi uyarılarını çözümleme ve çözme

Hata Listesi penceresinde bulunan kod analizi uyarıları listelenir. Sonuçlar bir tabloda görüntülenir. Belirli bir uyarı hakkında daha fazla bilgi varsa, ilk sütun bir genişletme denetimi içerir. Sorun hakkında ek bilgi için ekranı genişletmek için seçin. Mümkün olduğunda, kod analizi uyarıya yol açan satır numaralarını ve analiz mantığını görüntüler.

Sorunun olası çözümleri de dahil olmak üzere uyarı hakkında ayrıntılı bilgi için Kod sütununda uyarı kimliğini seçerek ilgili çevrimiçi yardım makalesini görüntüleyin.

İmleci Visual Studio kod düzenleyicisinde uyarıya neden olan kod satırına taşımak için bir uyarıya çift tıklayın. Veya seçili uyarıda Enter tuşuna basın.

Sorunu anladıktan sonra kodunuzda çözebilirsiniz. Ardından, uyarının artık Hata Listesi'nde görünmediğinden emin olmak için kod analizini yeniden çalıştırın.

Kod analizi uyarıları için iş öğeleri oluşturma

Visual Studio'dan hataları günlüğe kaydetmek için iş öğesi izleme özelliğini kullanabilirsiniz. Bu özelliği kullanmak için Azure DevOps Server örneğine (eski adıyla Team Foundation Server) bağlanmanız gerekir.

Bir veya daha fazla C/C++ kod uyarısı için iş öğesi oluşturmak için

  1. Hata Listesi'nde, uyarıları genişletin ve seçin

  2. Uyarıların kısayol menüsünde İş Öğesi Oluştur'u ve ardından iş öğesi türünü seçin.

  3. Visual Studio, seçilen uyarılar için tek bir iş öğesi oluşturur ve iş öğesini IDE'nin belge penceresinde görüntüler.

  4. Ek bilgileri ekleyin ve ardından İş Öğesini Kaydet'i seçin.

Kod analizi sonuçlarını arama ve filtreleme

Uyarı iletilerinin uzun listelerinde arama yapabilir ve çok projeli çözümlerde uyarıları filtreleyebilirsiniz.

  • Uyarıları başlığa veya uyarı kimliğine göre filtrelemek için: Arama Hatası Listesi kutusuna anahtar sözcüğünü girin.

  • Uyarıları önem derecesine göre filtrelemek için: Varsayılan olarak, kod çözümleme iletilerine Uyarı önem derecesi atanır. Bir veya daha fazla iletinin önem derecesini özel bir kural kümesinde Hata olarak atayabilirsiniz. Hata Listesi'nin Önem Derecesi sütununda açılan oku ve ardından filtre simgesini seçin. Yalnızca ilgili önem derecesine atanmış iletileri görüntülemek için Uyarı veya Hata'yı seçin. Tüm iletileri görüntülemek için Tümünü Seç'i seçin.

Ayrıca bkz.