Visual Studio'da kod analizi hakkında SSS

Bu sayfa, Visual Studio'da .NET Derleyici Platformu tabanlı kod analizi hakkında sık sorulan bazı soruların yanıtlarını içerir.

Kod analizi ve EditorConfig karşılaştırması

Kod stilini denetlemek için kod analizi mi yoksa EditorConfig mi kullanmalıyım?

Kod analizi ve EditorConfig dosyaları el ele çalışır. Bir EditorConfig dosyasında veya metin düzenleyicisi Seçenekler sayfasında kod stilleri tanımladığınızda, aslında Visual Studio'da yerleşik olarak bulunan kod çözümleyicilerini yapılandırmış olursunuz. EditorConfig dosyaları çözümleyici kurallarını etkinleştirmek veya devre dışı bırakmak ve ayrıca NuGet çözümleyici paketlerini yapılandırmak için kullanılabilir.

EditorConfig ile kural kümeleri karşılaştırması

Çözümleyicilerimi bir kural kümesi veya EditorConfig dosyası kullanarak mı yapılandırmalıyım?

Kural kümeleri ve EditorConfig dosyaları birlikte bulunabilir ve çözümleyicileri yapılandırmak için kullanılabilir. Hem EditorConfig dosyaları hem de kural kümeleri, kuralları etkinleştirmenize ve devre dışı bırakmanıza ve önem derecelerini ayarlamanıza olanak tanır.

Ancak EditorConfig dosyaları kuralları yapılandırmak için ek yollar da sunar:

  • .NET kod kalitesi çözümleyicileri için EditorConfig dosyaları, analiz etmek istediğiniz kod türlerini tanımlamanıza olanak sağlar.
  • Visual Studio'da yerleşik olarak bulunan .NET kod stili çözümleyiciler için EditorConfig dosyaları, bir kod tabanı için tercih edilen kod stillerini tanımlamanıza olanak sağlar.

Kural kümelerine ve EditorConfig dosyalarına ek olarak, bazı çözümleyiciler C# ve VB derleyicileri için ek dosyalar olarak işaretlenmiş metin dosyaları kullanılarak yapılandırılır.

Not

  • EditorConfig dosyaları yalnızca Visual Studio 2019 sürüm 16.3 ve sonraki sürümlerde kuralları etkinleştirmek ve önem derecelerini ayarlamak için kullanılabilir.
  • EditorConfig dosyaları eski çözümlemeyi yapılandırmak için kullanılamazken, kural kümeleri kullanılabilir.

Sürekli tümleştirme (CI) derlemelerinde kod analizi

.NET Derleyici Platformu tabanlı kod analizi sürekli tümleştirme (CI) derlemelerinde çalışıyor mu?

Evet. NuGet paketinden yüklenen çözümleyiciler için bu kurallar, CI derlemesi sırasında da dahil olmak üzere derleme zamanında uygulanır. CI derlemelerinde kullanılan çözümleyiciler hem kural kümelerinden hem de EditorConfig dosyalarından kural yapılandırmasına saygı gösterir. Şu anda Visual Studio'da yerleşik olarak bulunan kod çözümleyicileri NuGet paketi olarak kullanılamaz ve bu nedenle bu kurallar CI derlemesinde zorunlu tutulmaz.

IDE çözümleyicileri ve StyleCop karşılaştırması

Visual Studio IDE kod çözümleyicileri ile StyleCop çözümleyicileri arasındaki fark nedir?

Visual Studio IDE, hem kod stili hem de kalite sorunlarını araştıran yerleşik çözümleyiciler içerir. Bu kurallar, yeni dil özelliklerini kullanıma sunulduğunda kullanmanıza ve kodunuzun sürdürülebilirliğini artırmanıza yardımcı olur. IDE çözümleyicileri her Visual Studio sürümüyle sürekli olarak güncelleştirilir.

StyleCop çözümleyicileri , kodunuzda stil tutarlılığını denetleen bir NuGet paketi olarak yüklenen üçüncü taraf çözümleyicilerdir. Genel olarak, StyleCop kuralları bir stil yerine başka bir stil önermeden bir kod tabanı için kişisel tercihler ayarlamanıza olanak tanır.

Kod çözümleyicileri ile eski analiz karşılaştırması

Eski çözümleme ile .NET Derleyici Platformu tabanlı kod analizi arasındaki fark nedir?

.NET Derleyici Platformu tabanlı kod analizi, kaynak kodu gerçek zamanlı olarak ve derleme sırasında analiz eder, eski analiz ise derleme tamamlandıktan sonra ikili dosyaları analiz eder. Daha fazla bilgi için bkz . .NET Derleyici Platformu tabanlı çözümleme ve eski analiz.

FxCop çözümleyicileri ile .NET çözümleyicileri karşılaştırması

FxCop çözümleyicileri ile .NET çözümleyicileri arasındaki fark nedir?

Hem FxCop çözümleyicileri hem de .NET çözümleyicileri, FxCop CA kurallarının .NET Derleyici Platformu ("Roslyn") çözümleyici uygulamalarını ifade eder. Visual Studio 2019 16.8 ve .NET 5.0'dan önce bu çözümleyiciler NuGet paketi olarak Microsoft.CodeAnalysis.FxCopAnalyzersgönderildi. Visual Studio 2019 16.8 ve .NET 5.0'dan başlayarak, bu çözümleyiciler .NET SDK'sı ile birlikte sunulur. NuGet paketi olarak Microsoft.CodeAnalysis.NetAnalyzersda kullanılabilirler. Lütfen FxCop çözümleyicilerinden .NET çözümleyicilerine geçiş yapmayı göz önünde bulundurun.

Uyarıları hata olarak değerlendirin

Projem, uyarıları hata olarak işlemek için derleme seçeneğini kullanıyor. Eski analizden kaynak kod analizine geçtikten sonra, tüm kod analizi uyarıları artık hata olarak görünüyor. Bunu nasıl önleyebilirim?

Kod analizi uyarılarının hata olarak değerlendirilmesini önlemek için şu adımları izleyin:

  1. Aşağıdaki içeriğe sahip bir .props dosyası oluşturun:

    <Project>
       <PropertyGroup>
          <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
       </PropertyGroup>
    </Project>
    
  2. Önceki adımda oluşturduğunuz .props dosyasını içeri aktarmak için .csproj veya .vbproj proje dosyanıza bir satır ekleyin. Bu satır, çözümleyici .props dosyalarını içeri aktaran tüm satırlardan önce yerleştirilmelidir. Örneğin, .props dosyanızın adı codeanalysis.props ise:

    ...
    <Import Project="..\..\codeanalysis.props" Condition="Exists('..\..\codeanalysis.props')" />
    <Import Project="..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props" Condition="Exists('..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props')" />
    ...
    

Kod çözümleme çözümü özellik sayfası

Çözümün Kod Analizi özellik sayfası nerede?

Çözüm düzeyindeki Kod Analizi özellik sayfası, daha güvenilir paylaşılan özellik grubuna göre kaldırıldı. Kod Analizi'ni proje düzeyinde yönetmek için Kod Analizi özellik sayfası hala kullanılabilir. (Yönetilen projeler için kural yapılandırması için kural kümelerinden EditorConfig'e geçmenizi de öneririz.) Bir çözüm veya depodaki birden çok/tüm projeler arasında kural kümelerini paylaşmak için, paylaşılan props/targets dosyasında veya Directory.props/Directory.targets dosyasında CodeAnalysisRuleSet özelliğine sahip bir özellik grubu tanımlamanızı öneririz. Tüm projelerinizin içeri aktardığı bu tür ortak prop'larınız veya hedefleriniz yoksa, dizinde veya alt dizinlerinde tanımlanan tüm proje dosyalarında otomatik olarak içeri aktarılan en üst düzey çözüm dizininde bir Directory.props veya Directory.targets dosyasına böyle bir özellik grubu eklemeyi düşünmelisiniz.