Mungkin sedikit membingungkan untuk memahami perbedaan antara FxCop warisan (analisis biner) dan penganalisis .NET (analisis sumber). Artikel ini bertujuan untuk menjawab beberapa pertanyaan yang mungkin Anda miliki.
Apa perbedaan antara penganalisis FxCop dan .NET lama?
FxCop lama menjalankan analisis pasca-build pada rakitan yang dikompilasi. Ini berjalan sebagai executable terpisah yang disebut FxCopCmd.exe. FxCopCmd.exe memuat rakitan yang dikompilasi, menjalankan analisis kode, lalu melaporkan hasilnya (atau diagnostik).
Penganalisis .NET didasarkan pada .NET Compiler Platform ("Roslyn"). Anda mengaktifkannya dari .NET SDK atau menginstalnya sebagai paket NuGet yang dirujuk oleh proyek atau solusi. Penganalisis menjalankan analisis berbasis kode sumber selama eksekusi kompilator. Penganalisis dihosting dalam proses kompilator, baik csc.exe atau vbc.exe, dan menjalankan analisis saat proyek di-build. Hasil penganalisis dilaporkan bersama dengan hasil kompilator.
Apa perbedaan antara penganalisis FxCop dan penganalisis .NET?
Penganalisis FxCop dan penganalisis .NET mengacu pada implementasi penganalisis .NET Compiler Platform ("Roslyn") dari aturan FxCop CA. Sebelum Visual Studio 2019 16.8 dan .NET 5.0, penganalisis ini dikirim sebagai Microsoft.CodeAnalysis.FxCopAnalyzers
paket NuGet. Mulai di Visual Studio 2019 16.8 dan .NET 5.0, penganalisis ini disertakan dengan .NET SDK. Mereka juga tersedia sebagai Microsoft.CodeAnalysis.NetAnalyzers
paket NuGet. Harap pertimbangkan untuk bermigrasi dari penganalisis FxCop ke penganalisis .NET.
Apakah perintah Jalankan Analisis Kode menjalankan penganalisis .NET?
Sebelum rilis Visual Studio rilis 2019 16.5, saat Anda memilih Analisis>Analisis Kode Eksekusi, Visual Studio menjalankan analisis lama. Mulai Visual Studio 2019 16.5, opsi menu Jalankan Analisis Kode menjalankan penganalisis berbasis Roslyn untuk proyek atau solusi yang dipilih. Jika Anda telah menginstal penganalisis .NET, penganalisis juga akan dijalankan. Untuk informasi selengkapnya, lihat Cara: Menjalankan Analisis Kode Secara Manual untuk Kode Terkelola.
Apakah properti proyek msbuild RunCodeAnalysis menjalankan penganalisis?
Tidak. Properti RunCodeAnalysis dalam file proyek (misalnya, .csproj) hanya digunakan untuk menjalankan FxCop lama. Properti ini menjalankan tugas msbuild pasca-build yang memanggil FxCopCmd.exe.
Jadi bagaimana cara menjalankan penganalisis .NET?
Untuk menjalankan penganalisis .NET, aktifkan terlebih dahulu dari .NET SDK atau instal sebagai paket NuGet. Kemudian bangun proyek atau solusi Anda dari Visual Studio atau menggunakan msbuild. Peringatan dan kesalahan yang dihasilkan penganalisis Roslyn akan muncul di Daftar Kesalahan atau jendela perintah.
Saya mendapatkan peringatan CA0507 bahkan setelah saya menginstal paket NuGet penganalisis .NET
Jika Anda telah menginstal penganalisis .NET tetapi terus mendapatkan peringatan CA0507 ""Run Code Analysis" telah tidak digunakan lagi untuk penganalisis FxCop, yang berjalan selama build", Anda mungkin perlu mengatur properti runCodeAnalysis msbuild dalam file proyek Anda ke false. Jika tidak, analisis lama akan dijalankan setelah setiap build.
<RunCodeAnalysis>false</RunCodeAnalysis>
Aturan mana yang telah di-port ke penganalisis .NET?
Untuk informasi tentang aturan analisis lama mana yang telah di-port ke penganalisis .NET, lihat Status port aturan Fxcop.
Peringatan analisis kode diperlakukan sebagai kesalahan
Jika proyek Anda menggunakan opsi build untuk memperlakukan peringatan sebagai kesalahan, peringatan penganalisis mungkin muncul sebagai kesalahan. Untuk mencegah peringatan analisis kode diperlakukan sebagai kesalahan, ikuti langkah-langkah berikut di FAQ tentang analisis kode.