FAQ untuk analisis kode dalam Visual Studio

Halaman ini berisi jawaban atas beberapa pertanyaan yang sering diajukan tentang analisis kode berbasis .NET Compiler Platform di Visual Studio.

Analisis kode versus EditorConfig

Haruskah saya menggunakan analisis kode atau EditorConfig untuk memeriksa gaya kode?

Analisis kode dan file EditorConfig berfungsi secara manual. Saat Anda menentukan gaya kode dalam file EditorConfig atau di halaman Opsi editor teks, Anda benar-benar mengonfigurasi penganalisis kode yang disertakan dalam Visual Studio. File EditorConfig dapat digunakan untuk mengaktifkan atau menonaktifkan aturan penganalisis, dan juga untuk mengonfigurasi paket penganalisis NuGet.

EditorConfig versus seperangkat aturan

Haruskah saya mengonfigurasi penganalisis saya menggunakan seperangkat aturan atau file EditorConfig?

Seperangkat aturan dan file EditorConfig dapat berdampingan dan keduanya dapat digunakan untuk mengonfigurasi penganalisis. File EditorConfig dan seperangkat aturan memungkinkan Anda mengaktifkan dan menonaktifkan aturan dan mengatur tingkat keparahannya.

Namun, file EditorConfig menawarkan cara tambahan untuk mengonfigurasi aturan juga:

Selain seperangkat aturan dan file EditorConfig, beberapa penganalisis dikonfigurasi melalui penggunaan file teks yang ditandai sebagai file tambahan untuk pengkompilasi C# dan VB.

Catatan

  • File EditorConfig hanya dapat digunakan untuk mengaktifkan aturan dan mengatur tingkat keparahannya di Visual Studio 2019 versi 16.3 dan yang lebih baru.
  • File EditorConfig tidak dapat digunakan untuk mengonfigurasi analisis warisan, sedangkan seperangkat aturan bisa.

Analisis kode dalam build integrasi berkelanjutan (CI)

Apakah analisis kode berbasis .NET Compiler Platform berfungsi dalam build integrasi berkelanjutan (CI)?

Ya. Untuk penganalisis yang diinstal dari paket NuGet, aturan tersebut diberlakukan pada waktu build, termasuk selama build CI. Penganalisis yang digunakan dalam CI membangun konfigurasi aturan yang sesuai dari seperangkat aturan dan file EditorConfig. Saat ini, penganalisis kode yang disertakan dalam Visual Studio tidak tersedia sebagai paket NuGet, sehingga aturan ini tidak dapat diberlakukan dalam build CI.

Penganalisis IDE versus StyleCop

Apa perbedaan antara penganalisis kode IDE Visual Studio dan penganalisis StyleCop?

IDE Visual Studio mencakup penganalisis bawaan yang mencari gaya kode dan masalah kualitas. Aturan ini membantu Anda menggunakan fitur bahasa baru saat diperkenalkan dan meningkatkan keberlanjutan kode Anda. Penganalisis IDE terus diperbarui dengan setiap rilis Visual Studio.

Penganalisis StyleCop adalah penganalisis pihak ketiga yang diinstal sebagai paket NuGet yang memeriksa konsistensi gaya dalam kode Anda. Secara umum, aturan StyleCop memungkinkan Anda mengatur preferensi pribadi untuk basis kode tanpa merekomendasikan satu gaya di atas yang lain.

Penganalisis kode versus analisis warisan

Apa perbedaan antara analisis warisan dan analisis kode berbasis .NET Compiler Platform?

Analisis kode berbasis .NET Compiler Platform menganalisis kode sumber secara real time dan selama kompilasi, sedangkan analisis warisan menganalisis file biner setelah build selesai. Untuk informasi selengkapnya, lihat Analisis berbasis .NET Compiler Platform versus analisis warisan.

Penganalisis FxCop versus penganalisis .NET

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.FxCopAnalyzerspaket NuGet. Mulai di Visual Studio 2019 16.8 dan .NET 5.0, penganalisis ini disertakan dengan .NET SDK. Mereka juga tersedia sebagai Microsoft.CodeAnalysis.NetAnalyzerspaket NuGet. Harap pertimbangkan untuk bermigrasi dari penganalisis FxCop ke penganalisis .NET.

Perlakukan peringatan sebagai kesalahan

Proyek saya menggunakan opsi build untuk memperlakukan peringatan sebagai kesalahan. Setelah bermigrasi dari analisis warisan ke analisis kode sumber, semua peringatan analisis kode sekarang muncul sebagai kesalahan. Dapatkah saya mencegahnya?

Untuk mencegah peringatan analisis kode diperlakukan sebagai kesalahan, ikuti langkah-langkah berikut:

  1. Buat file tersebut dengan konten berikut:

    <Project>
       <PropertyGroup>
          <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
       </PropertyGroup>
    </Project>
    
  2. Tambahkan baris ke file proyek .csproj atau .vbproj Anda untuk mengimpor file .props yang Anda buat di langkah sebelumnya. Baris ini harus ditempatkan sebelum baris apa pun yang mengimpor file penganalisis .props. Misalnya, jika file .props Anda bernama codeanalysis.props:

    ...
    <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')" />
    ...
    

Halaman properti solusi analisis kode

Di mana halaman properti Analisis Kode untuk solusi tersebut?

Halaman properti Analisis Kode di tingkat solusi dihapus demi grup properti bersama yang lebih andal. Untuk mengelola Analisis Kode di tingkat proyek, halaman properti Analisis Kode masih tersedia. (Untuk proyek terkelola, sebaiknya migrasikan dari seperangkat aturan ke EditorConfig untuk konfigurasi aturan.) Untuk berbagi seperangkat aturan di beberapa/semua proyek dalam solusi atau repositori, sebaiknya tentukan grup properti dengan properti CodeAnalysisRuleSet di file props/targets bersama atau file Directory.props/Directory.targets. Jika Anda tidak memiliki alat peraga atau target umum yang diimpor oleh semua proyek, Anda harus mempertimbangkan untuk menambahkan grup properti tersebut ke directory.props atau file Directory.targets di direktori solusi tingkat atas, yang secara otomatis diimpor dalam semua file proyek yang ditentukan dalam direktori atau sub-direktorinya.