Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangBrowser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Aturan kualitas kode memiliki opsi konfigurasi tambahan, selain hanya mengonfigurasi tingkat keparahannya. Misalnya, setiap penganalisis kualitas kode dapat dikonfigurasi untuk hanya berlaku pada bagian tertentu dari basis kode Anda. Anda menentukan opsi ini dengan menambahkan pasangan kunci-nilai ke file EditorConfig yang sama tempat Anda menentukan tingkat keparahan aturan dan preferensi editor umum.
Catatan
Artikel ini tidak menjelaskan secara detail cara mengonfigurasi tingkat keparahan aturan. Opsi .editorconfig untuk mengatur tingkat keparahan aturan memiliki awalan yang berbeda (dotnet_diagnostic
) dengan opsi yang dijelaskan di sini (dotnet_code_quality
). Selain itu, opsi yang dijelaskan di sini berkaitan dengan aturan kualitas kode saja, sedangkan opsi tingkat keparahan juga berlaku untuk aturan gaya kode. Sebagai referensi cepat, Anda dapat mengonfigurasi tingkat keparahan aturan menggunakan sintaks opsi berikut:
dotnet_diagnostic.<rule ID>.severity = <severity value>
Namun, untuk informasi mendetail tentang cara mengonfigurasi tingkat keparahan aturan, lihat Tingkat keparahan.
Setiap opsi penyempurnaan dapat dikonfigurasi untuk semua aturan, untuk kategori aturan (misalnya, Keamanan atau Desain), atau untuk aturan tertentu.
Sintaks untuk mengonfigurasi opsi untuk semua aturan adalah sebagai berikut:
Sintaks | Contoh |
---|---|
dotnet_code_quality.<OptionName> = <OptionValue> | dotnet_code_quality.api_surface = public |
Nilai untuk <OptionName>
dicantumkan di bagian Opsi.
Sintaks untuk mengonfigurasi opsi bagi kategori aturan adalah sebagai berikut:
Sintaks | Contoh |
---|---|
dotnet_code_quality.<RuleCategory>.<OptionName> = OptionValue | dotnet_code_quality.Naming.api_surface = public |
Tabel berikut mencantumkan nilai yang tersedia untuk <RuleCategory>
.
Design
Documentation
Globalization
Interoperability
Maintainability
Naming
Performance
SingleFile
Reliability
Security
Usage
Sintaks untuk mengonfigurasi opsi bagi aturan tertentu adalah sebagai berikut:
Sintaks | Contoh |
---|---|
dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> | dotnet_code_quality.CA1040.api_surface = public |
Bagian ini mencantumkan opsi konfigurasi yang tersedia untuk penganalisis kode. Untuk informasi lebih lanjut, lihat konfigurasi Analyzer .
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Bagian dari permukaan API yang akan dianalisis |
public (berlaku untuk public DAN protected API)internal atau friend (berlaku untuk internal DAN private protected API)private (berlaku untuk private API)all (berlaku untuk semua API)Pisahkan beberapa nilai dengan koma (,) |
public |
CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1040CA1040CA1041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058fCA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Apakah akan mengabaikan metode asinkron yang tidak menampilkan nilai | true false |
false |
CA2007 |
Catatan
Opsi ini dinamai skip_async_void_methods
dalam versi yang lebih lama.
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Apakah akan mengecualikan parameter jenis karakter tunggal dari aturan, misalnya, S di Collection<S> |
true false |
false |
CA1715 |
Catatan
Opsi ini dinamai allow_single_letter_type_parameters
dalam versi yang lebih lama.
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan bahwa kode dalam proyek yang menghasilkan jenis assembly ini harus dianalisis | Satu atau beberapa bidang enumerasi OutputKind Pisahkan beberapa nilai dengan koma (,) |
Semua jenis output | CA2007 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan pengubah yang diperlukan untuk API yang harus dianalisis | Satu atau beberapa nilai dari tabel pengubah yang diizinkan di bawah ini Pisahkan beberapa nilai dengan koma (,) |
Bergantung pada setiap aturan | CA1802 |
Pengubah yang Diizinkan | Ringkasan |
---|---|
none |
Tidak ada persyaratan pengubah |
static atau Shared |
Harus dinyatakan sebagai static (Shared di Visual Basic) |
const |
Harus dinyatakan sebagai const |
readonly |
Harus dinyatakan sebagai readonly |
abstract |
Harus dinyatakan sebagai abstract |
virtual |
Harus dinyatakan sebagai virtual |
override |
Harus dinyatakan sebagai override |
sealed |
Harus dinyatakan sebagai sealed |
extern |
Harus dinyatakan sebagai extern |
async |
Harus dinyatakan sebagai async |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Apakah akan melompati analisis untuk parameter this metode ekstensi |
true false |
false |
CA1062 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Nama metode validasi pemeriksaan null yang memvalidasi bahwa argumen yang diteruskan ke metode bukanlah null | Format nama metode yang diizinkan (dipisahkan oleh |): - Khusus nama metode (termasuk semua metode dengan nama, terlepas dari namespace layanan atau jenis yang berisi) - Nama yang sepenuhnya memenuhi syarat dalam format ID dokumentasi simbol, dengan awalan M: opsional |
Tidak | CA1062 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Nama metode pemformatan string tambahan | Format nama metode yang diizinkan (dipisahkan oleh |): - Khusus nama metode (termasuk semua metode dengan nama, terlepas dari namespace layanan atau jenis yang berisi) - Nama yang sepenuhnya memenuhi syarat dalam format ID dokumentasi simbol, dengan awalan M: opsional |
Tidak | CA2241 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Nama jenis, sehingga jenis dan semua jenis turunannya dikecualikan untuk analisis | Format nama simbol yang diizinkan (dipisahkan oleh |): - Khusus nama jenis (termasuk semua jenis dengan nama, terlepas dari namespace layanan atau jenis yang berisi) - Nama yang sepenuhnya memenuhi syarat dalam format ID dokumentasi simbol, dengan awalan T: opsional |
Tidak | CA1001 CA1054CA1055CA1056 CA1062 CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301 CA2301CA2302CA2311 CA2312 CA2321CA2322CA2327 CA2328 CA2329 CA2330 CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Nama simbol yang dikecualikan untuk analisis | Format nama simbol yang diizinkan (dipisahkan oleh |): - Khusus nama simbol (menyertakan semua simbol dengan nama, terlepas dari namespace layanan atau jenis yang berisi) - Nama yang sepenuhnya memenuhi syarat dalam format ID dokumentasi simbol. Setiap nama simbol memerlukan awalan jenis simbol, seperti awalan M: untuk metode, awalan T: untuk jenis, dan awalan N: untuk namespace layanan.- .ctor untuk konstruktor dan .cctor untuk konstruktor statik |
Tidak | CA1001 CA1054CA1055CA1056 CA1062 CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301 CA2301CA2302CA2311 CA2312 CA2321CA2322CA2327 CA2328 CA2329 CA2330 CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Nama simbol yang tidak diizinkan dalam konteks analisis | Format nama simbol yang diizinkan (dipisahkan oleh |): - Khusus nama simbol (menyertakan semua simbol dengan nama, terlepas dari namespace layanan atau jenis yang berisi) - Nama yang sepenuhnya memenuhi syarat dalam format ID dokumentasi simbol. Setiap nama simbol memerlukan awalan jenis simbol, seperti awalan M: untuk metode, awalan T: untuk jenis, dan awalan N: untuk namespace layanan.- .ctor untuk konstruktor dan .cctor untuk konstruktor statik |
Tidak | CA1031 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Mengecualikan FirstOrDefault dan LastOrDefault metode dari analisis. |
true atau false |
false |
CA1826 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Termasuk rakitan yang ditandai dengan InternalsVisibleToAttribute dalam analisis. |
true atau false |
true |
CA1812CA1852 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Opsi Boolean untuk mengaktifkan deteksi heuristik metode pemformatan string tambahan. Metode dianggap sebagai metode pemformatan string jika memiliki string format parameter yang diikuti oleh params object[] parameter. |
true atau false |
false |
CA2241 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Mengonfigurasi nilai DllImportSearchPath mana yang tidak aman untuk analisis |
Nilai bilangan bulat dari System.Runtime.InteropServices.DllImportSearchPath |
770 (Yaitu, AssemblyDirectory | UseDllDirectoryForDependencies | ApplicationDirectory ) |
CA5393 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Kecualikan ASP.NET Core MVC ControllerBase saat mempertimbangkan CSRF |
true atau false |
true |
CA5391 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan ambang batas untuk memicu aturan penamaan nilai enum |
-
AnyEnumValue - Aturan dipicu jika salah satu nilai enum dimulai dengan nama jenis enum.
- AllEnumValues - Aturan dipicu jika semua nilai enum dimulai dengan nama jenis enum.
- Heuristic - Aturan dipicu menggunakan heuristik FxCop default (yaitu, ketika setidaknya 75% dari nilai enum dimulai dengan nama jenis enum). |
Heuristic |
CA1712 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Mengecualikan jenis dasar tidak langsung |
true atau false |
true |
CA1710 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan akhiran tambahan yang diperlukan | Daftar nama tipe (dipisahkan oleh |) dengan akhiran yang diperlukan (dipisahkan oleh -> ). Format nama jenis yang diizinkan:- Ketik nama saja (menyertakan semua jenis dengan nama, terlepas dari jenis atau namespace layanan yang berisi). - Nama yang sepenuhnya memenuhi syarat dalam format ID dokumentasi simbol dengan awalan opsional T: . |
Tidak | CA1710 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan antarmuka generik tambahan yang diperlukan | Daftar nama antarmuka (dipisahkan oleh |) dengan antarmuka generik yang diperlukan sepenuhnya memenuhi syarat (dipisahkan oleh -> ). Format antarmuka yang diizinkan:- Nama antarmuka saja (mencakup semua antarmuka dengan nama, terlepas dari jenis atau namespace layanan yang berisi). - Nama yang sepenuhnya memenuhi syarat dalam format ID dokumentasi simbol dengan awalan opsional T: . |
Tidak | CA1010 |
Contoh:
Nilai Opsi | Ringkasan |
---|---|
dotnet_code_quality.CA1010.additional_required_generic_interfaces = ISomething->System.Collections.Generic.IEnumerable`1 |
Semua jenis yang diterapkan ISomething terlepas dari namespace layanannya diharapkan juga System.Collections.Generic.IEnumerable\`1 menerapkan . |
dotnet_code_quality.CA1010.additional_required_generic_interfaces = T:System.Collections.IDictionary->T:System.Collections.Generic.IDictionary`2 |
Semua jenis penerapan System.Collections.IDictionary diharapkan juga System.Collections.Generic.IDictionary`2 menerapkan . |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan jenis atau namespace yang akan dikecualikan dari pohon hierarki pewarisan | Format nama jenis yang diizinkan: - Jenis atau nama namespace layanan (menyertakan semua jenis dengan nama, terlepas dari jenis atau namespace yang berisi, dan semua jenis yang namespacenya berisi nama). - Ketik atau nama namespace yang diakhir dengan simbol kartubebas (termasuk semua jenis yang namanya dimulai dengan nama yang diberikan, terlepas dari jenis atau namespace yang berisi, dan semua jenis yang namespacenya berisi nama). - Nama yang sepenuhnya memenuhi syarat dalam format ID dokumentasi simbol dengan awalan opsional T: untuk jenis atau N: awalan untuk namespace.
- Jenis atau nama namespace layanan yang sepenuhnya memenuhi syarat dengan awalan opsional T: untuk jenis atau N: awalan untuk namespace layanan dan diakhiri dengan simbol kartubebas (termasuk semua jenis yang namanya sepenuhnya memenuhi syarat dimulai dengan nama jenis yang diberikan, atau semua jenis yang namanya sepenuhnya memenuhi syarat dimulai dengan nama namespace layanan yang diberikan). |
N:System.* (Nilai ini selalu ditambahkan secara otomatis ke nilai yang disediakan) |
CA1501 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan jenis simbol yang akan dianalisis | Satu atau beberapa bidang sebagai daftar yang dipisahkan SymbolKind koma. | Namespace, NamedType, Method, Property, Event, Parameter |
CA1716 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Mengonfigurasi apakah parameter atau nama properti yang berisi Text , , Message atau Caption memicu aturan ini |
true atau false |
false |
CA1303 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan API kustom tambahan yang hasilnya harus digunakan | Nama metode tambahan (dipisahkan oleh |). Format nama metode yang diizinkan: - Nama metode saja (mencakup semua metode dengan nama, terlepas dari jenis atau namespace yang berisi). - Nama yang sepenuhnya memenuhi syarat dalam format ID dokumentasi simbol dengan awalan opsional M: . |
Tidak | CA1806 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan akhiran yang diperbolehkan | Daftar (dipisahkan oleh |) akhiran yang diizinkan. | Tidak | CA1711 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan apakah akan mengaktifkan analisis untuk TFM sebelum .NET 5 |
true atau false |
false |
CA1416 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan apakah akan mengecualikan struktur dari analisis |
true atau false |
false |
CA1051 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan nama tambahan yang diizinkan untuk bidang enumerasi nilai nol | Daftar nama tambahan (dipisahkan oleh |). | Tidak | CA1008 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan metode kustom tambahan yang menghitung IEnumerable | Nama metode tambahan yang sepenuhnya memenuhi syarat (dipisahkan oleh |). | Tidak | CA1851 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan metode rantai LINQ tambahan yang disesuaikan (yaitu, metode mengambil IEnumerable argumen dan mengembalikan instans baru IEnumerable ) |
Nama metode tambahan yang sepenuhnya memenuhi syarat (dipisahkan oleh |). | Tidak | CA1851 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan apakah akan mengasumsikan bahwa metode yang disesuaikan menghitung parameternya IEnumerable |
true atau false |
false |
CA1851 |
Opsi di bagian ini mengonfigurasi aturan analisis aliran data. Opsinya adalah:
Untuk informasi selengkapnya tentang analisis aliran data, lihat Menulis penganalisis berbasis analisis aliran data.
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan jalur mana yang akan dianalisis untuk membuang pelanggaran |
-
AllPaths - Lacak dan laporkan pelanggaran pembuangan yang hilang di semua jalur (jalur non-pengecualian dan pengecualian). Selain itu, juga bendera penggunaan pola pembuangan yang tidak direkomendasikan yang dapat menyebabkan potensi kebocoran pembuangan.
- AllPathsOnlyNotDisposed - Lacak dan laporkan pelanggaran pembuangan yang hilang di semua jalur (jalur non-pengecualian dan pengecualian). Jangan menandai penggunaan pola pembuangan yang tidak direkomendasikan yang dapat menyebabkan potensi kebocoran pembuangan.
- NonExceptionPaths - Lacak dan laporkan pelanggaran yang hilang hanya pada jalur program non-pengecualian. Selain itu, juga bendera penggunaan pola pembuangan yang tidak direkomendasikan yang dapat menyebabkan potensi kebocoran pembuangan.
- NonExceptionPathsOnlyNotDisposed - Lacak dan laporkan pelanggaran yang hilang hanya pada jalur program non-pengecualian. Jangan menandai penggunaan pola pembuangan yang tidak direkomendasikan yang dapat menyebabkan potensi kebocoran pembuangan. |
NonExceptionPaths |
CA2000 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Mengonfigurasi transfer kepemilikan buang untuk argumen yang diteruskan ke pemanggilan konstruktor |
true atau false |
false |
CA2000 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Mengonfigurasi transfer kepemilikan buang untuk objek sekali pakai yang diteruskan sebagai argumen ke panggilan metode |
true atau false |
false |
CA2000 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan apakah akan melakukan analisis interprocedural untuk pemanggilan metode sumber |
None , NonContextSensitive , ContextSensitive |
Khusus untuk setiap aturan yang dapat dikonfigurasi | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan batas maksimum panjang rantai pemanggilan metode yang dianalisis dalam analisis aliran data antarmetode | Bilangan bulat tidak ditandatangani | 3 | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan lambda maksimum atau panjang rantai panggilan fungsi lokal untuk menganalisis analisis aliran data antarprosedural | Bilangan bulat tidak ditandatangani | 3 | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
Deskripsi | Nilai yang diizinkan | Nilai default | Aturan yang dapat dikonfigurasi |
---|---|---|---|
Menentukan apakah akan melakukan PointsToAnalysis |
None , PartialWithoutTrackingFieldsAndProperties , Complete |
Khusus untuk setiap aturan | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangPelatihan
Jalur pembelajaran
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Dokumentasi
Mengonfigurasi aturan analisis kode - .NET
Pelajari cara mengonfigurasi aturan analisis kode dalam file konfigurasi penganalisis.
File konfigurasi yang telah ditentukan sebelumnya (analisis kode) - .NET
Pelajari tentang menggunakan konfigurasi editor dan file seperangkat aturan yang telah ditentukan sebelumnya untuk menargetkan jenis analisis kode tertentu.
Kategori aturan analisis kode - .NET
Pelajari berbagai kategori aturan analisis kode .NET.