Düzenle

Aracılığıyla paylaş


Eski FxCop ve .NET çözümleyicileri hakkında sık sorulan sorular

Eski FxCop (ikili analiz) ile .NET çözümleyicileri (kaynak analizi) arasındaki farkları anlamak biraz kafa karıştırıcı olabilir. Bu makale, sahip olabileceğiniz bazı soruları ele almayı amaçlamaktadır.

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

Eski FxCop derlenmiş bir derlemede derleme sonrası analizi çalıştırır. FxCopCmd.exe adlı ayrı bir yürütülebilir dosya olarak çalışır. FxCopCmd.exe derlenmiş derlemeyi yükler, kod analizi çalıştırır ve sonuçları (veya tanılamaları) raporlar.

.NET çözümleyicileri .NET Derleyici Platformu'na ("Roslyn") dayanır. Bunları .NET SDK'sından etkinleştirir veya proje veya çözüm tarafından başvuruda bulunan bir NuGet paketi olarak yüklersiniz. Çözümleyiciler, derleyici yürütmesi sırasında kaynak kodu tabanlı analiz çalıştırır. Çözümleyiciler, csc.exe veya vbc.exe derleyici işlemi içinde barındırılır ve proje oluşturulduğunda analizi çalıştırır. Çözümleyici sonuçları, derleyici sonuçlarıyla birlikte bildirilir.

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.FxCopAnalyzers gö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.NetAnalyzers da kullanılabilirler. Lütfen FxCop çözümleyicilerinden .NET çözümleyicilerine geçiş yapmayı göz önünde bulundurun.

Kod Analizini Çalıştır komutu .NET çözümleyicilerini çalıştırıyor mu?

Visual Studio 2019 16.5 sürümünden önce Kod Analizini Çözümle'yi>seçtiğinizde eski çözümleme yürütülür. Visual Studio 2019 16.5'i başlatan Kod Çözümlemesi Çalıştır menü seçeneği, seçili proje veya çözüm için Roslyn tabanlı çözümleyicileri yürütür. .NET çözümleyicilerini yüklediyseniz, bunlar da yürütülür. Daha fazla bilgi için bkz . Nasıl yapılır: Yönetilen Kod için Kod Analizini El ile Çalıştırma.

RunCodeAnalysis msbuild proje özelliği çözümleyicileri çalıştırır mı?

Hayır Proje dosyasındaki RunCodeAnalysis özelliği (örneğin, .csproj) yalnızca eski FxCop'u yürütmek için kullanılır. FxCopCmd.exe çağıran bir derleme sonrası msbuild görevi çalıştırır.

O zaman .NET çözümleyicilerini nasıl çalıştıracağım?

.NET çözümleyicilerini çalıştırmak için önce .NET SDK'sından etkinleştirin veya nuGet paketi olarak yükleyin. Ardından Visual Studio'dan veya msbuild kullanarak projenizi veya çözümünüzü derleyin. Roslyn çözümleyicilerinin oluşturduğu uyarılar ve hatalar Hata Listesi'nde veya komut penceresinde görünür.

.NET çözümleyicileri NuGet paketini yükledikten sonra bile CA0507 uyarısını alıyorum

.NET çözümleyicileri yüklediyseniz ancak CA0507 ""Kod Analizini Çalıştır" uyarısı almaya devam ediyorsanız, derleme sırasında çalışan FxCop çözümleyicileri tarafından kullanım dışı bırakıldı" proje dosyanızdaki RunCodeAnalysis msbuild özelliğini false olarak ayarlamanız gerekebilir. Aksi takdirde, eski analiz her derlemeden sonra yürütülür.

<RunCodeAnalysis>false</RunCodeAnalysis>

.NET çözümleyicilerine hangi kurallar eklendi?

.NET çözümleyicilerine hangi eski analiz kurallarının taşınabilir olduğu hakkında bilgi için bkz . Fxcop kuralı bağlantı noktası durumu.

Kod analizi uyarıları hata olarak değerlendirilir

Projeniz uyarıları hata olarak işlemek için derleme seçeneğini kullanıyorsa çözümleyici uyarıları hata olarak görünebilir. Kod analizi uyarılarının hata olarak değerlendirilmesini önlemek için Kod analizi SSS'deki adımları izleyin.

Ayrıca bkz.