Kod kalitesi kuralları
.NET kod analizi, kod kalitesini iyileştirmeyi hedefleyen kurallar sağlar. Kurallar tasarım, genelleştirme, performans ve güvenlik gibi alanlarda düzenlenmiştir. Bazı kurallar .NET API kullanımına özgüyken, diğerleri genel kod kalitesiyle ilgili.
Kural dizini
Aşağıdaki tabloda kod kalitesi çözümleme kuralları listeledik.
Kural Kimliği ve uyarı | Açıklama |
---|---|
CA1000: Genel türlerde statik üyeleri belirtme | Genel türün statik üyesi çağrıldığında tür bağımsız değişkeni tür için belirlenmelidir. Destek çıkarımı desteklenmeyen genel örnek üyesi çağrıldığında tür bağımsız değişkeni üye için belirlenmelidir. Bu iki durumda tür bağımsız değişkenini belirleyen sözdizimi farklıdır ve kolaylıkla karıştırılır. |
CA1001: Atılabilir alanlara sahip olan türler atılabilir olmalıdır | Bir sınıf System.IDisposable tipi örnek alanını derler ve uygular ve sınıf IDisposable'ı uygulamaz. IDisposable alanını derleyen sınıf, yönetilmeyen kaynağı dolaylı yoldan sahiplenir ve IDisposable arayüzünü uygulamalıdır. |
CA1002: Genel listeleri gösterme | System.Collections.Generic.List<(Of <(T>)>), devralma için değil performans için tasarlanmış genel bir koleksiyondur. Bu nedenle, Liste herhangi bir sanal üyeyi içermiyor. Bunun yerine devralma için tasarlanmış genel koleksiyonlar maruz kalmalıdır. |
CA1003: Genel olay işleyici örnekleri kullan | Tür, imzası iki parametre (birinci bir nesne ve ikinci EventArgs'e atanabilen bir tür) içeren void döndüren bir temsilci içerir ve içeren derleme Microsoft .NET Framework 2.0'ı hedefler. |
CA1005: Genel türlerde aşırı parametrelerden kaçının | Daha çok tip parametresi, genel tip içerir, bilmek daha zordur ve hangi tip parametrelerinin temsil ettiğini anımsamak zordur. Liste<T'de olduğu gibi ve bazı durumlarda Dictionary<TKey, TValue'da>> olduğu gibi iki tür parametresi olan bir tür parametresiyle genellikle açıktır. Ancak, iki parametreden fazla parametre varsa, birçok kullanıcı için zorluk derecesi artar. |
CA1008: Numaralandırmalar sıfır değerine sahip olmalıdır | Tıpkı diğer türler gibi, başlatılmamış bir numaralandırmanın varsayılan değeri sıfırdır. İşaretlenmemiş bir geçerli numaralandırma, varsayılan değerin geçerli bir numaralandırma değeri olması için değeri sıfır olan bir üye tanımlaması gerekir. Numaralandırma FlagsAttribute özniteliği sıfır değerli üyeyi tanımlarsa, onun adı numaralandırmada hiçbir değerin ayarlanmadığı "Hiçbiri" olmalıdır. |
CA1010: Koleksiyonlar genel arabirim uygulamalıdır | Bir koleksiyon kullanılabilirliğini genişletmek için genel koleksiyon arabirimlerinden birini uygulayın. Daha sonra koleksiyon genel koleksiyon türlerini doldurmak için kullanılabilir. |
CA1012: Soyut türlerin ortak oluşturucuları olmamalıdır | Soyut türler üzerindeki kurucular yalnızca türetilen türler tarafından çağrılabilir. Ortak yapıcılar türün bir örneğini yaptığından ve siz bir soyut türün örneğini yapamayacağınızdan, soyut sınıf hatalı biçimde dizayn edilmiş ortak yapıcıya sahip olur. |
CA1014: Derlemeleri CLSCompliantAttribute ile işaretleyin | Ortak Dil Tanımlaması (CLS) ad kısıtlamalarını, veri türlerini ve karşıt programlama dillerini kullanırsa derlemelerin uyması zorunlu olan kuralları tanımlar. İyi tasarım, tüm derlemelerin kullanarak CLSCompliantAttribute CLS uyumluluğunu açıkça belirtmelerini sağlar. Bu öznitelik bir derlemede yoksa, montaj uyumlu değildir. |
CA1016: Derlemeleri AssemblyVersionAttribute ile işaretleyin | .NET, bir derlemeyi benzersiz olarak tanımlamak ve kesin olarak adlandırılmış derlemelerdeki türlere bağlanmak için sürüm numarasını kullanır. Sürüm numarası, sürüm ve yayımcı ilkesi ile birlikte kullanılır. Varsayılan olarak uygulamalar yalnızca oluşturulmuş derleme sürümlerini çalıştırır. |
CA1017: Derlemeleri ComVisibleAttribute ile işaretleyin | ComVisibleAttribute COM müşterilerinin yönetilen koda nasıl erişeceğini tanımlar. İyi tasarım derlemelerin açıkça COM görünürlüğünde gösterildiğini belirler. COM görünürlüğü tüm derleme için ayarlanabilir ve sonra bireysel tür ve tür üyeleri için geçersiz kılınabilir. Bu öznitelik yoksa, derleme içeriği COM istemcileri tarafından görülebilir. |
CA1018: Öznitelikleri AttributeUsageAttribute ile işaretleyin | Özel öznitelik tanımladığınızda, AttributeUsageAttribute kullanarak özel öznitelik kaynak kodunun nerede uygulanabilir olduğunu göstermek için işaretleyin. Bir özniteliğin anlamı ve amaçlanan kullanımı, kodun içinde onun varolan konumunu tanımlar. |
CA1019: Öznitelik bağımsız değişkenleri için erişimcileri tanımlayın | Öznitelikler özniteliği işaretlediğinizde özelleştirilen zorunlu bağımsız değişkenleri tanımlayabilir. Ayrıca bunlar konum parametreleri olarak öznitelik yapıcısına verildiğinden duruma bağlı bağımsız değişkenler olarak da bilinirler. Zorunlu her bağımsız değişken için bağımsız değişkenin değeri yürütme zamanından alınması gerektiğinden öznitelik ilgili salt okunur özelliği de sağlamalıdır. Öznitelikler adlandırılmış bağımsız değişkenler olarak bilinen duruma bağlı bağımsız değişkenler olarak da tanımlanabilir. Bu bağımsız öznitelik oluşturucular ad tarafından sağlanır ve karşılık gelen bir okuma/yazma özelliğine sahip olmalıdır. |
CA1021: Out parametrelerinden kaçının | Başvuruya ( out veya ref kullanarak ) göre türleri geçirmek işaretçi deneyimi gerektirir, değer türü ve referans türü arasındaki farkı ve işleme yöntemi ile birden çok değer döndürmeyi anlamak gerekir. Ayrıca, out ve ref parametreleri arasındaki fark açıkça anlaşılmadı. |
CA1024: Uygun yerlerde özellikler kullanın | Ortak veya korumalı yöntem "Get" ile başlar, herhangi bir parametre almaz ve dizi olmayan bir değer döndüren adı vardır. Yöntem, özellik olmak için çok iyi bir aday olabilir. |
CA1027: Numaralandırmaları FlagsAttribute ile işaretleyin | Bir numaralandırma ilişkili adlandırılmış sabitler kümesini tanımlayan değer türüdür. Anlamsız olarak birleştirildiğinde numaralandırmaya FlagsAttribute özelliğini uygulayın. |
CA1028: Numaralandırma depolaması Int32 olmalıdır | Bir numaralandırma ilişkili adlandırılmış sabitler kümesini tanımlayan değer türüdür. Varsayılan olarak, System.Int32 veri türü sabit değerleri depolamak için kullanılır. Bu temel türünü değiştirebilirsiniz, ancak bu önerilen bir senaryo değildir. |
CA1030: Uygun yerlerde olaylar kullanın | Bu kural, normalde olaylar için kullanılan adlara sahip yöntemleri algılar. Yanıt olarak açıkça tanımlanmış bir durum değişikliği yöntemi çağrılırsa, olay işleyicisi tarafından yöntemin çağrılması gerekir. Yöntemi direkt olarak çağırmak yerine olayları yükselterek çağıran nesneler. |
CA1031: Genel özel durum türlerini yakalamayın | Genel özel durum yakalanmamalı. Daha özel istisnaları yakalayın ya da yakalama bloğundaki son durum olarak genel istisnaları yeniden fırlatın. |
CA1032: Standart özel durum oluşturucuları uygulayın | Yapıcıların tüm ayarlamasını sağlamaktaki başarısızlık, istisnalarla başa çıkmayı zorlaştırabilir. |
CA1033: Arabirim yöntemleri alt türler tarafından çağırılabilir olmalıdır | Ağzı açık dışarıdan görünen bir tür açık yöntem uygulaması ortak bir arabirim sağlar ve aynı ada sahip alternatif dışarıdan görünen bir yöntem sağlamaz. |
CA1034: İç içe türler görünebilir olmamalıdır | İç içe türü başka bir kapsamda bildirilen bir türdür. İç içe geçmiş türler, özel uygulama ayrıntılarını kapsayan türdeki kapsül oluşturma için kullanışlıdır. Bu amaçla kullanılan, iç içe türün dışarıdan görünür olmaması gerekir. |
CA1036: Karşılaştırılabilir türlerde geçersiz kılma yöntemleri | Ortak veya korumalı tür System.IComparable arabirimini uygular. Object.Equals ne etkisiz kılınabilir ne de eşitlik için olan özel dil işleciyle aşırı yüklenebilir, eşitsizlik durumu olabilir, daha küçülebilir ya da büyüyebilir. |
CA1040: Boş arabirimlerden kaçının | Arayüzler bir davranış veya kullanım sözleşmesi sağlayan üyeleri tanımlar. Arabirim tarafından tanımlanan fonksiyonellik herhangi bir tür tarafından türün kalıtım hiyerarşisinde nerede belirdiği önemsenmeksizin devralınabilir. Tür arabirimin üyeleri için uygulamaları sağlayarak bir arayüz uygular. Boş bir arabirim herhangi bir üye tanımlamıyor; bu nedenle, uygulanabilir bir sözleşme tanımlamaz. |
CA1041: ObsoleteAttribute iletisi sağlayın | Tür veya üye belirtilen kendi ObsoleteAttribute.Message özelliğine sahip olmayan bir System.ObsoleteAttribute özniteliği kullanılarak işaretlendi. Özniteliğin ileti özelliği, türü veya ObsoleteAttribute kullanılarak işaretlenmiş tür veya üye derlendiğinde görüntülenir. Bu eski türü veya üye kullanıcı bilgilerini sağlar. |
CA1043: Dizin oluşturucular için tamsayı veya dize bağımsız değişkeni kullanın | Dizinle oluşturucular (dizinlenmiş özellikleri) dizin için integral veya dize türleri kullanılmalıdır. Bu türler, genellikle veri yapılarını dizinleme için kullanılır ve bunlar kitaplığın kullanılabilirliğini artırır. Nesne türünün kullanılması için belirli bir integral veya dize türü tasarım zamanında burada tarif edilemez, bu gibi durumlarda sınırlı tutulmalıdır. |
CA1044: Özellikler salt yazılır olmamalıdır | Salt okunur özelliğe sahip olmasına karşın kabul edilebilir ve genellikle gereklidir, tasarıma ilişkin yönergeler salt yazılır özellik kullanılmasını engeller. Bir kullanıcı değeri ayarlar ve sonra kullanıcı bu değeri görüntülemeyi engellerse bunun için herhangi bir güvenlik yoktur. Ayrıca, okuma erişimi olmadan, yararsız olduklarını sınırlayan paylaşılan nesnelerin durumu görüntülenemez. |
CA1045: Türleri başvuruya göre geçirmeyin | Başvuruya ( out veya ref kullanarak ) göre türleri geçirmek işaretçi deneyimi gerektirir, değer türü ve referans türü arasındaki farkı ve işleme yöntemi ile birden çok değer döndürmeyi anlamak gerekir. Genel bir hedef kitle için tasarım yapan kitaplık mimarları, kullanıcıların veya ref parametreleriyle out çalışma konusunda yetkin olmasını beklememelidir. |
CA1046: Başvuru türlerinde eşittir işleçlerini aşırı yüklemeyin | Başvuru türleri için, varsayılan eşitlik işleci neredeyse her zaman doğrudur. Varsayılan olarak, yalnızca aynı nesneye gelirseniz iki başvuru eşit olur. |
CA1047: Korumalı türlerde korunan üyeleri bildirmeyin | Türler, devralmasına erişebileceğiniz veya üyeyi geçersiz kılmak için korunan üyelerin türlerini bildirir. Tanım gereği, mühürlenmiş türler devralınamaz yani mühürlenmiş türler üzerindeki korunan yöntemler çağrılamaz. |
CA1050: Ad alanlarında türleri bildirin | Türlerin ad çakışmalarını önlemek için ad alanlarını ve ilgili türü bir nesne sıradüzeni içinde düzenlemeniz için yöntem olarak bildirilir. |
CA1051: Görünür örnek alanlarını bildirmeyin | Bir alanın birincil kullanım alanının uygulama ayrıntısı olması gerekir. Alanların özel veya iç olması gerekir ve özelliklerini kullanmaya maruz kalması gerekir. |
CA1052: Statik tutucu türleri mühürlenmelidir | Ortak veya korumalı tür yalnızca statik üyeleri içerir ve mühürlenmiş (C# Reference) (NotInheritable) değiştirici kullanarak bildirilmez. Devralınmayacak anlamına gelen tür mühürleme değiştirici kullanılarak basit tür gibi kullanılmak için işaretlenmelidir. |
CA1053: Statik tutucu türlerinde oluşturucular bulunmamalıdır | Ortak veya iç içe geçmiş ortak tür yalnızca statik üyeleri bildirir ve ortak veya korumalı varsayılan bir oluşturucu vardır. Statik üyeleri çağırma bir tür örneği gerektirmediğinden kurucu gereksizdir. Dize aşırı yüklemesi, emniyet ve güvenlik için dize bağımsız değişkeni kullanılarak tekdüzen kaynak tanımlayıcısı (URI) çağırmalıdır. |
CA1054: URI parametreleri dizeler olmamalıdır | Bir yöntem URI'yı sunan bir dizeyi alırsa, bu hizmetleri sağlayan güvenli şekilde URI sınıfının bir örneğini alır, karşılık gelen aşırı olmalıdır. |
CA1055: URI dönüş değerleri dizeler olmamalıdır | Bu kural, yöntemin URI döndürdüğünü varsayar. Bir URI'nın dize sunumu ayrıştırma ve hataları kodlama eğilimindedir ve güvenlik açıklarına yol açabilir. System.Uri sınıfı bu hizmetleri güvenli bir şekilde sağlar. |
CA1056: URI özellikleri dize olmamalıdır | Bu kural, özelliğin Tekdüzen Kaynak Tanımlayıcısı (URI) tarafından temsil edildiğini varsayar. Bir URI'nın dize sunumu ayrıştırma ve hataları kodlama eğilimindedir ve güvenlik açıklarına yol açabilir. System.Uri sınıfı bu hizmetleri güvenli bir şekilde sağlar. |
CA1058: Türler belli temel türleri genişletmemelidir | Dışarıdan görünen tür belirli temel türleri genişletir. Diğer seçenekleri kullanın. |
CA1060: P/Invokes öğesini NativeMethods sınıfına taşıyın | System.Runtime.InteropServices.DllImportAttribute özniteliği kullanılarak işaretlenmiş olanlar gibi platform çağırma yöntemleri veya Visual Basic'te anahtar sözcüğü kullanılarak Declare tanımlanan yöntemler, yönetilmeyen koda erişin. Bu yöntemler, NativeMethods, SafeNativeMethods veya UnsafeNativeMethods sınıfının üyesi olmalıdır. |
CA1061: Taban sınıf yöntemlerini gizlemeyin | Basit türdeki bir yöntem türetilmiş türdeki adlandırılmış yöntem tarafından gizlenmiştir, türetilmiş yöntemin parametre imzası yalnızca türetilmiş türleri ve karşılık gelen temel yöntemin parametre imzası daha zayıf türlerine göre farklı olduğunda temel türde bir yöntemin türetilmiş türle aynı adlı yöntem olarak gizlidir. |
CA1062: Genel yöntemlerin bağımsız değişkenlerini doğrulayın | Dışarıdan görünen yöntemlerin null'a karşı denetlenmesi için geçirilen tüm başvuru bağımsız değişkenleri. |
CA1063: IDisposable'ı doğru uygulayın | Tüm IDisposable türleri Dispose kalıbını doğru uygulamalıdır. |
CA1064: Özel durumlar genel olmamalıdır | Bir iç özel durum yalnızca kendi iç kapsamı içinde görülebilir. İç kapsam dışında kalan özel durumlardan sonra, sadece basit istisnalar istisna yakalamak için kullanılabilir. İç özel durum , SystemExceptionveya ApplicationExceptionöğesinden Exceptiondevralındıysa, dış kod özel durumla ne yapacağını bilmek için yeterli bilgiye sahip olmaz. |
CA1065: Beklenmedik konumlarda özel durumlar tetiklemeyin | İstisna atılmasını beklemeyen yöntem bir istisna atar. |
CA1066: Eşittir'i geçersiz kılırken IEquatable uygulama | Bir değer türü yöntemini geçersiz kılar Equals , ancak uygulamaz IEquatable<T>. |
CA1067: IEquatable'ı uygularken Eşittir'i geçersiz kılma | Bir tür uygular IEquatable<T>, ancak yöntemini geçersiz kılmaz Equals . |
CA1068: CancellationToken parametreleri en son gelmelidir | Yöntem, son parametre olmayan bir CancellationToken parametresine sahiptir. |
CA1069: Sabit listeleri yinelenen değerlere sahip olmamalıdır | Sabit listesi, açıkça aynı sabit değere atanmış birden çok üyeye sahiptir. |
CA1070: Olay alanlarını sanal olarak bildirmeyin | Alan benzeri bir olay sanal olarak bildirildi. |
CA1200: Ön ek ile cref etiketlerini kullanmaktan kaçının | XML belge etiketindeki cref özniteliği "kod başvurusu" anlamına gelir. Etiketin iç metninin tür, yöntem veya özellik gibi bir kod öğesi olduğunu belirtir. Derleyicinin başvuruları doğrulamasını engellediği için etiketleri ön eklerle kullanmaktan cref kaçının. Ayrıca, Visual Studio tümleşik geliştirme ortamının (IDE) yeniden düzenleme sırasında bu sembol başvurularını bulmasını ve güncelleştirmesini engeller. |
CA1303: Harfleri yerelleştirilmiş parametreler olarak göndermeyin | Dışarıdan görünen bir yöntem, bir .NET oluşturucusna veya yöntemine parametre olarak dize değişmez değerini geçirir ve bu dize yerelleştirilebilir olmalıdır. |
CA1304: CultureInfo belirtin | Yöntem veya Oluşturucu System.Globalization.CultureInfo parametre kabul eden aşırı yüklenmiş üye arar ve yöntem veya oluşturucu CultureInfo parametresi aşırı yükleme çağıramaz. Bir CultureInfo veya System.IFormatProvider nesnesi sağlanamadığında, aşırı yüklü üye tarafından sağlanan varsayılan değer, tüm yerel ayarlarda istediğiniz etkiyi vermeyebilir. |
CA1305: IFormatProvider belirtin | Yöntem veya oluşturucu System.IFormatProvider parametresini kabul eden aşırı yüklü bir veya daha fazla üye arar ve yöntem veya oluşturucu IFormatProvider parametre yüklemesini çağırmaz. Bir System.Globalization.CultureInfo veya IFormatProvider nesnesi sağlanamadığında, aşırı yüklü üye tarafından sağlanan varsayılan değer, tüm yerel ayarlarda istediğiniz etkiyi vermeyebilir. |
CA1307: Netlik için StringComparison belirtin | StringComparison parametresi ayarlanmamış bir yöntemi aşırı bir dize karşılaştırma işleminde kullanır. |
CA1308: Dizeleri büyük harfe normalleştirin | Dizeler büyük harfe normalleştirilmeli. Küçük bir karakter grubu küçük harfe dönüştürüldüğünde gidiş dönüş yapamaz. |
CA1309: Sıralı StringComparison kullanın | StringComparison parametresini Ordinal ya da OrdinalIgnoreCase'a ayarlayamayan dilbilimsel olmayan dize karşılaştırma işlemi. Açıkça StringComparison.Ordinal veya StringComparison.OrdinalIgnoreCase için parametre ayarıyla kodunuz genellikle hızlanır, daha doğru olur ve daha güvenilir hale gelir. |
CA1310: Doğruluk için StringComparison belirtin | Dize karşılaştırma işlemi, StringComparison parametresi ayarlamayan ve varsayılan olarak kültüre özgü dize karşılaştırması kullanan bir yöntem aşırı yüklemesi kullanır. |
CA1311: Bir kültür belirtin veya sabit bir sürüm kullanın | veya ToLower çağrılırken ToUpper geçerli kültüre örtük bağımlılıktan kaçınmak için bir kültür belirtin veya sabit bir kültür kullanın. |
CA1401: P/Invoke'lar görünür olmamalıdır | Ortak türdeki genel veya korumalı bir yöntem System.Runtime.InteropServices.DllImportAttribute özniteliğine sahiptir (Visual Basic'te Declare anahtar sözcüğü tarafından da uygulanır). Bu tür yöntemler açıkta kalmamalıdır. |
CA1416: Platform uyumluluğunu doğrulama | Bir bileşende platforma bağımlı API'ler kullanıldığında kod artık tüm platformlarda çalışmaz. |
CA1417: P/Invokes için dize parametrelerinde kullanmayın OutAttribute |
değeriyle OutAttribute geçirilen dize parametreleri, dize bir dize ise çalışma zamanının istikrarını bozabilir. |
CA1418: Geçerli platform dizesini kullanma | Platform uyumluluk çözümleyicisi geçerli bir platform adı ve sürümü gerektirir. |
CA1419: 'System.Runtime.InteropServices.SafeHandle' kaynağından türetilen somut türler için kapsayıcı türü kadar görünür bir parametresiz oluşturucu sağlayın | kaynak tarafından oluşturulan birlikte çalışma çözümleriyle, türetilen System.Runtime.InteropServices.SafeHandle bir türün içerme türü kadar görünür olan parametresiz bir oluşturucu sağlamak daha iyi performans ve kullanım sağlar. |
CA1420: Özellik, tür veya öznitelik için çalışma zamanı hazırlama gerekir | Çalışma zamanı hazırlama devre dışı bırakıldığında çalışma zamanı hazırlama gerektiren özelliklerin kullanılması, çalışma zamanı özel durumlarına neden olur. |
CA1421: DisableRuntimeMarshallingAttribute uygulandığında yöntem çalışma zamanı sıralamasını kullanır | Bir yöntem çalışma zamanı hazırlamayı kullanır ve çalışma zamanı hazırlama açıkça devre dışı bırakılır. |
CA1422: Platform uyumluluğunu doğrulama | Belirli bir işletim sisteminde (sürüm) kullanılmayan bir API'yi bu işletim sisteminden (sürüm) erişilebilen bir çağrı sitesinden çağırmak önerilmez. |
CA1501: Aşırı devralmadan kaçının | Devralma hiyerarşisinde düzeyleri dörtten fazla olan türdür. İç içe yuvalanmış hiyerarşileri izlemek, anlamak ve muhafaza etmek zor olabilir. |
CA1502: Aşırı karmaşıklıktan kaçının | Bu kural, sayılarla ve şartlı şubelerle tanımlanan, yönteme giden doğrusal bağımsız yolların sayısını ölçer. |
CA1505: Bakımı yapılamayan kodlardan kaçının | Bir tür veya yöntemin düşük bakım dizin değeri vardır. Düşük bakım dizini muhtemelen koruması zor olan ve yeniden tasarım için iyi bir aday olan tür veya yöntemi içerir. |
CA1506: Aşırı sınıf bağlantısından kaçının | Bu kural türü veya yöntemini içeren benzersiz türde başvuru sayısı belirlenerek eşlenmesiyle sınıfı ölçer. |
CA1507: Dize yerine nameof kullanın | Dize değişmez değeri, bir nameof ifadenin kullanılabilmesi için bağımsız değişken olarak kullanılır. |
CA1508: Geçersiz koşullu koddan kaçının | Bir yöntemin her zaman veya false çalışma zamanında değerlendirilen true koşullu kodu vardır. Bu, koşulun false dalında ölü koda yol açar. |
CA1509: Kod ölçümleri yapılandırma dosyasında geçersiz giriş | CA1501, CA1502, CA1505 ve CA1506 gibi kod ölçümleri kuralları, geçersiz girişi olan adlı CodeMetricsConfig.txt bir yapılandırma dosyası sağladı. |
CA1510: ArgumentNullException throw yardımcısı kullanma | Oluşturma yardımcıları, yeni bir özel durum örneği oluşturan bloklardan daha if basit ve daha verimlidir. |
CA1511: ArgumentException throw yardımcısı kullanma | Oluşturma yardımcıları, yeni bir özel durum örneği oluşturan bloklardan daha if basit ve daha verimlidir. |
CA1512: ArgumentOutOfRangeException throw yardımcısı kullanma | Oluşturma yardımcıları, yeni bir özel durum örneği oluşturan bloklardan daha if basit ve daha verimlidir. |
CA1513: ObjectDisposedException throw yardımcı kullanma | Oluşturma yardımcıları, yeni bir özel durum örneği oluşturan bloklardan daha if basit ve daha verimlidir. |
CA1514: Yedekli uzunluk bağımsız değişkenlerinden kaçının | Bir dizenin veya arabelleğin sonuna dilimlerken yedekli uzunluk bağımsız değişkeni kullanılır. Hesaplanan uzunluk hataya açık olabilir ve ayrıca gereksizdir. |
CA1515: Genel türleri dahili hale getirebilirsiniz | Sınıf kitaplığının aksine, bir uygulamanın API'lerine genel olarak başvurulmuyor, bu nedenle türler iç olarak işaretlenebilir. |
CA1700: Numaralandırma değerlerini 'Ayrılmış' olarak adlandırmayın | Bu kural, "ayrılmış" içeren bir ada sahip numaralandırma üyesi şu anda kullanılmamaktadır ancak yeniden adlandırılabilir veya gelecekteki bir sürüme kaldırıldığını varsayar. Üye kaldırma veya yeniden adlandırma bölünmesi farklıdır. |
CA1707: Tanımlayıcılar alt çizgi içermemelidir | Kural gereği, tanımlayıcı adlar alt çizgi (_) karakterini içermez. Bu kural ad alanlarını, türleri, üyeleri ve parametreleri denetler. |
CA1708: Tanımlayıcılar örnekten daha fazla farklı olmalıdır | Ortak dil çalışma zamanı hedef dilleri büyük/küçük harf duyarlı olması gerekmediğinden ad alanları, türler, üyeler ve parametreler için tanımlayıcılar yalnızca büyük/küçük harfe göre farklılık göstermeyebilir. |
CA1710: Tanımlayıcıların sonekleri doğru olmalıdır | Kural gereği, belli uzatılan türlerin adları ya da belli arayüzlerin uygulanması, ya da bu türlerden türetilen, basit tür veya arayüzden oluşturulan son eke sahiptir. |
CA1711: Tanımlayıcıların sonekleri yanlış olmamalıdır | Kural gereği, yalnızca, belirli temel türleri genişleten veya bazı arabirimleri ya da bu türlerinden türetilmiş türleri uygulayan tür adları belirli ayrılmış öneklerle bitmelidir. Diğer tür adları aşağıdaki ayrılmış sonekleri kullanmamalı. |
CA1712: Numaralandırma değerleri için tür adıyla önek kullanmayın | Numaralandırma üyelerinin adları, tür adı kullanılarak öneklenmemiştir, çünkü geliştirici araçlarının tür bilgisini sağlaması beklenmez. |
CA1713: Olaylarda önce veya sonra önek olmamalıdır | Olay adı "Önce" veya "Sonra" ile başlar. Belirli bir sırayla ilgili olayları adlandırmak için şimdiki veya geçmiş zamanı göreceli konumun sıralı eylemlerini belirtmek için kullanın. |
CA1714: Bayrak numaralandırmalarında çoğul adlar olmalıdır | Ortak bir numaralandırma System.FlagsAttribute özniteliğine sahiptir ve adı "s" ile bitmez. Bileşik FlagsAttribute kullanarak işaretlenen öznitelik birden fazla değer belirtilebilir, çünkü çoğul adları vardır. |
CA1715: Tanımlayıcıların önekleri doğru olmalıdır | Dışarıdan görünen bir arabirimin adı büyük "I" ile başlamıyor. Genel tür parametresi dışarıdan görünen tür veya yöntem adı büyük "T" ile başlamıyor. |
CA1716: Tanımlayıcılar anahtar sözcüklerle eşleşmemelidir | Ad alanı adı veya tür adı ayrılmış anahtar sözcük bir programlama dili ile eşleşir. Tanımlayıcı adı ve türleri için ortak dil çalışma zamanı, hedef diller tarafından tanımlanan anahtar sözcüklerle aynı değildir. |
CA1717: Yalnızca FlagsAttribute numaralandırmalarında çoğul adlar olmalıdır | Adlandırma kuralları numaralandırma için adlandırma aynı anda birden fazla numaralandırma değeri olduğunu gösterir. |
CA1720: Tanımlayıcılar tür adları içermemelidir | Parametre adı dışarıdan görünen üye, veri türü adını içerir ya da açıkça görünen üyenin adı dil özellikli veri türü adı içerir. |
CA1721: Tür adları alma metotlarıyla eşleşmemelidir | Ortak veya korumalı bir üye adı "Get" ile başlar ve aksi durumda ortak veya korumalı özellik adıyla eşleşir. "Get" yöntemlerinin ve özelliklerinin açıkça işlevlerinden ayırt edilebilen adları olması gerekir. |
CA1724: Tür Adları Ad Alanlarıyla Eşleşmemelidir | Tür adları .NET ad alanlarının adlarıyla eşleşmemelidir. Bu kuralın ihlali kitaplığın kullanılabilirliğini azaltabilir. |
CA1725: Parametre adları taban yöntem ile eşleşmelidir | Parametreyi geçersiz kılma hiyerarşisinde tutarlı adlandırma yöntemini geçersiz kılmaları kullanılabilirliği artırır. Temel bildirim alanındaki addan farklı türetilmiş yöntem parametre adı taban yöntemini geçersiz kılma veya yeni aşırı yöntemin yöntem olup olmadığı hakkında karışıklığa neden olabilir. |
CA1727: Adlandırılmış yer tutucular için PascalCase kullanma | Günlüğe kaydetme iletisi şablonundaki adlandırılmış yer tutucular için PascalCase kullanın. |
CA1801: Kullanılmayan parametreleri gözden geçir | Yöntem imzası, yöntemin gövdesinde kullanılmayan bir parametre içerir. |
CA1802: Uygun Yerlerde Değişmez Değerler Kullanın | Alan statik ve salt okunur olarak bildirilir (Visual Basic'te Paylaşılan ve Salt Okunur) ve derleme zamanında hesaplanabilir bir değer kullanılarak başlatılır. Hedeflenen alana atanan değer derleme zamanında hesaplanabilir olduğundan, değerin çalışma zamanı yerine derleme zamanında hesaplanabilmesi için bildirimi bir const (Visual Basic'te Const) alanına değiştirin. |
CA1805: Gereksiz yere başlatmayın | .NET çalışma zamanı, oluşturucuyu çalıştırmadan önce başvuru türlerinin tüm alanlarını varsayılan değerlerine başlatır. Çoğu durumda, bir alanın varsayılan değerine açıkça başlatılması yedekli olur ve bu da bakım maliyetlerine ek olarak performansı düşürebilir (örneğin, daha yüksek derleme boyutuyla). |
CA1806: Yöntem sonuçlarını yoksaymayın | Yeni bir nesne oluşturulur, ancak hiç kullanılmaz veya çağrılan yeni dizeyi oluşturur ve döndürür ve yeni dize hiç kullanılmaz ya da COM veya P/Invoke yöntemi, bir HRESULT ya da hiç kullanılmayan hata kodu döndürür. |
CA1810: Başvuru türü statik alanları satır içi başlatın | Bir tür açık statik yapıcı bildirdiğinde, JIT derleyici her bir statik yöntemi kontrol ekler ve türün yapıcı örneği statik yapıcının daha önceden çağrıldığından emin olur. Statik oluşturucu denetimleri performansı düşürebilir. |
CA1812: Örneklendirilmemiş iç sınıflardan kaçının | Bir derleme düzeyi türünün örneği, derleme içindeki kod tarafından oluşturulmaz. |
CA1813: Korumasız özniteliklerden kaçının | .NET, özel öznitelikleri almak için yöntemler sağlar. Varsayılan olarak, bu yöntemleri öznitelik devralma hiyerarşisinde arar. Öznitelik mühürleme kalıtım hiyerarşisi aracılığıyla aramayı ortadan kaldırır ve performansı artırabilir. |
CA1814: Basit dizileri çok boyutlu dizilere tercih edin | Basit bir dizi, öğeleri dizi olan bir dizidir. Öğeleri olan diziler bazı veri kümeler için daha az harcanmış önde gelen farklı boyutlarda olabilir. |
CA1815: Değer türlerinde eşittir ve işleç eşitliklerinin üzerine yazın | Değer türleri için, Equals'ın devralınmış uygulaması Reflection kitaplığını kullanır ve türdeki tüm alanların içeriğini karşılaştırır. Yansıma hesaplama açısından pahalıdır ve her alan için eşitlik karşılaştırma gereksiz olabilir. Kullanıcıları karşılaştırmak veya örneklerini sıralamak ya da tablo anahtarlarını karma olarak kullanmayı bekliyorsanız, değer türünüz Equals'ı uygulamalıdır. |
CA1816: GC.SuppressFinalize öğesini doğru çağırın | Dispose uygulaması olan bir yöntem GC'yi çağırmaz. SuppressFinalize; veya Dispose uygulaması olmayan bir yöntem GC'yi çağırır. SuppressFinalize; veya bir yöntem GC'i çağırır. SuppressFinalize ve bunun dışında bir şey geçirir (Visual Basic'te Ben). |
CA1819: Özellikler diziler döndürmemelidir | Özellik salt okunur olsa bile özellikleri tarafından döndürülen dizi yazma korumalı değildir. Dizi değiştirilmeye kanıt tutulacak özellik dizisinin bir kopyasını döndürmelidir. Tipik olarak, kullanıcılar bu tür bir özellik aramanın performans üzerindeki olumsuz etkilerini anlamayacaktır. |
CA1820: Dize uzunluğunu kullanarak boş dizeler için sınayın | String.Length özelliği veya String.IsNullOrEmpty yöntemi, Equals kullanılmasından önemli ölçüde daha hızlıdır. |
CA1821: Boş sonlandırıcıları kaldırın | Güncelleştirirken, nesne kullanım süresini izleme söz konusu olduğunda ek performans yükü nedeniyle sonlandırıcılardan kaçının. Boş sonlandırıcı eklenen yükü çeker ve hiçbir avantaj sunmaz. |
CA1822: Üyeleri statik olarak işaretleyin | Örnek verilerine erişmeyen veya örnek yöntemlerini çağırmayan üyeler statik olarak işaretlenebilir (Visual Basic'te paylaşılan). Yöntemleri statik olarak işaretledikten sonra, derleyici sanal olmayan arama sitelerini bu üyelere yayar. Bu, ölçülebilir kazanç performansını performans duyarlı kodunuz için verebilir. |
CA1823: Kullanılmayan özel alanlardan kaçının | Derlemede erişimi görülmeyen özel alanlar algılandı. |
CA1824: Derlemeleri NeutralResourcesLanguageAttribute ile işaretleme | NeutralResourcesLanguage özniteliği, bir derleme için nötr bir kültürün kaynaklarını görüntülemek için kullanılan dilin kaynak yöneticisini bilgilendirir. Bu ilk yüklediğiniz kaynak için arama performansını artırır ve çalışma kümenizi azaltabilir. |
CA1825: Sıfır uzunluklu dizi ayırmalarından kaçının | Sıfır uzunluklu bir dizinin başlatılması gereksiz bellek ayırmaya neden olur. Bunun yerine çağırarak Array.Emptystatik olarak ayrılmış boş dizi örneğini kullanın. Bellek ayırma, bu yöntemin tüm çağrılarında paylaşılır. |
CA1826: Linq Enumerable yöntemi yerine özelliği kullanın | Enumerable LINQ yöntemi, eşdeğer, daha verimli bir özelliği destekleyen bir tür üzerinde kullanıldı. |
CA1827: Herhangi biri kullanılabildiğinde Count/LongCount kullanmayın | Count veya LongCount yöntemin daha verimli olacağı bir yöntem Any kullanılmıştır. |
CA1828: AnyAsync kullanılabildiğinde CountAsync/LongCountAsync kullanmayın | CountAsync veya LongCountAsync yöntemin daha verimli olacağı bir yöntem AnyAsync kullanılmıştır. |
CA1829: Enumerable.Count yöntemi yerine Length/Count özelliğini kullanın | Count LINQ yöntemi eşdeğer, daha verimli Length veya Count özelliği destekleyen bir tür üzerinde kullanılmıştır. |
CA1830: StringBuilder'da kesin türdeki Ekleme ve Ekleme yöntemi aşırı yüklemelerini tercih edin | Append ve Insert dışındaki Stringbirden çok tür için aşırı yüklemeler sağlar. Mümkün olduğunda, ToString() ve dize tabanlı aşırı yükleme yerine kesin türdeki aşırı yüklemeleri tercih edin. |
CA1831: Uygun olduğunda dize için Aralık tabanlı dizin oluşturucular yerine AsSpan kullanın | Bir dizede aralık dizin oluşturucu kullanırken ve değeri Örtük olarak ReadOnlySpan<karakter> türüne atarken, dizenin istenen bölümünün bir kopyasını üreten yerine yöntemi Substring kullanılır Slice. |
CA1832: Bir dizinin ReadOnlySpan veya ReadOnlyMemory bölümünü almak için Aralık tabanlı dizin oluşturucular yerine AsSpan veya AsMemory kullanın | Bir dizide aralık dizin oluşturucu kullanırken ve değeri bir ReadOnlySpan<T> veya ReadOnlyMemory<T> türüne örtük olarak atarken, dizinin istenen bölümünün bir kopyasını oluşturan yerine Sliceyöntemi GetSubArray kullanılır. |
CA1833: Bir dizinin Span veya Memory bölümünü almak için Aralık tabanlı dizin oluşturucular yerine AsSpan veya AsMemory kullanın | Bir dizide aralık dizin oluşturucu kullanırken ve değeri bir Span<T> veya Memory<T> türüne örtük olarak atarken, dizinin istenen bölümünün bir kopyasını oluşturan yerine Sliceyöntemi GetSubArray kullanılır. |
CA1834: Tek karakterli dizeler için StringBuilder.Append(char) kullanın | StringBuilder bağımsız değişkeni olarak bir alan aşırı Append char yüklemesine sahiptir. Performans nedenleriyle aşırı yüklemeyi çağırmayı char tercih eder. |
CA1835: 'ReadAsync' ve 'WriteAsync' için 'Bellek' tabanlı aşırı yüklemeleri tercih edin | 'Stream', ilk bağımsız değişken olarak 'Memory<Byte>' alan bir 'ReadAsync' aşırı yüklemesine ve ilk bağımsız değişken olarak 'ReadOnlyMemory<Byte>' alan bir 'WriteAsync' aşırı yüklemesine sahiptir. Daha verimli olan bellek tabanlı aşırı yüklemeleri çağırmayı tercih edin. |
CA1836: Kullanılabilir olduğunda tercih et IsEmpty Count |
Nesnenin herhangi bir öğe içerip içermediğini belirlemek için , Count<TSource>(IEnumerable<TSource>) Length LongCount<TSource>(IEnumerable<TSource>) veya değerinden Count daha verimli olan özelliği tercih edin.IsEmpty |
CA1837: Yerine kullanın Environment.ProcessId Process.GetCurrentProcess().Id |
Environment.ProcessId , değerinden Process.GetCurrentProcess().Id daha basit ve daha hızlıdır. |
CA1838: P/Invokes parametrelerinden kaçının StringBuilder |
'StringBuilder' için marshalling her zaman yerel bir arabellek kopyası oluşturur ve bu da tek bir marshalling işlemi için birden çok ayırmaya neden olur. |
CA1839: Process.GetCurrentProcess() yerine Environment.ProcessPath kullanın. MainModule.FileName | Environment.ProcessPath , değerinden Process.GetCurrentProcess().MainModule.FileName daha basit ve daha hızlıdır. |
CA1840: Thread.CurrentThread.ManagedThreadId yerine Environment.CurrentManagedThreadId kullanın | Environment.CurrentManagedThreadId değerinden Thread.CurrentThread.ManagedThreadId daha kompakt ve verimlidir. |
CA1841: Sözlük İçeren yöntemleri tercih edin | veya koleksiyonunda çağırmak Contains genellikle sözlüğü çağırmaktan Keys veya ContainsValue sözlüğün kendisinden daha ContainsKey pahalı olabilir.Values |
CA1842: 'WhenAll'ı tek bir görevle kullanmayın | Tek bir görevle kullanmak WhenAll performans kaybına neden olabilir. Bunun yerine görevi bekler veya döndürür. |
CA1843: Tek bir görevle 'WaitAll' kullanmayın | Tek bir görevle kullanmak WaitAll performans kaybına neden olabilir. Bunun yerine görevi bekler veya döndürür. |
CA1844: 'Stream' alt sınıfına alırken zaman uyumsuz yöntemlerin bellek tabanlı geçersiz kılmalarını sağlayın | Performansı geliştirmek için 'Stream' alt sınıfını oluştururken bellek tabanlı zaman uyumsuz yöntemleri geçersiz kılın. Ardından dizi tabanlı yöntemleri bellek tabanlı yöntemler açısından uygulayın. |
CA1845: Span tabanlı 'string' kullanın. Concat' | ve yerine ve string.Concat birleştirme işlecini Substring kullanmak AsSpan daha verimlidir. |
CA1846: Tercih et AsSpan Substring |
AsSpan değerinden daha Substring verimlidir. Substring bir O(n) dize kopyası gerçekleştirir, ancak AsSpan gerçekleştirmez ve sabit bir maliyeti vardır. AsSpan ayrıca herhangi bir yığın ayırması gerçekleştirmez. |
CA1847: Tek karakterli arama için karakter değişmez değeri kullanma | Tek bir karakter aramak yerine String.Contains(string) kullanınString.Contains(char) . |
CA1848: LoggerMessage temsilcilerini kullanma | Gelişmiş performans için temsilcileri kullanın LoggerMessage . |
CA1849: Zaman uyumsuz yöntem içindeyken zaman uyumsuz yöntemleri çağırma | Zaten zaman uyumsuz olan bir yöntemde, diğer yöntemlere yapılan çağrılar, mevcut oldukları zaman uyumsuz sürümlerine yönelik olmalıdır. |
CA1850: Statik HashData yöntemi tercih edin ComputeHash |
Çağrılacak ComputeHash örneği oluşturmak ve yönetmek yerine statik HashData yöntemi kullanmak daha verimlidirHashAlgorithm . |
CA1851: Olası birden çok koleksiyon numaralandırması IEnumerable |
Olası birden çok koleksiyon numaralandırması IEnumerable . Birden çok numaralandırmayı önleyen bir uygulama kullanmayı göz önünde bulundurun. |
CA1852: İç türleri mühürleme | Derlemesi dışında erişilmeyen ve içeren derleme içinde alt türü olmayan bir tür mühürlenmez. |
CA1853: 'Dictionary.ContainsKey(key)' için gereksiz çağrı | ile Dictionary.ContainsKey(key) korunmaya Dictionary.Remove(key) gerek yoktur. Dictionary<TKey,TValue>.Remove(TKey) zaten anahtarın var olup olmadığını denetler ve yoksa atamaz. |
CA1854: 'IDictionary.TryGetValue(TKey, out TValue)' yöntemini tercih edin | 'ContainsKey' denetimiyle korunan bir Sözlük dizin oluşturucu erişimi yerine 'TryGetValue' seçeneğini tercih edin. Hem 'ContainsKey' hem de dizin oluşturucu anahtarı arar, bu nedenle 'TryGetValue' kullanıldığında ek arama engellenir. |
CA1855: Span<T> kullanın. Span<T> yerine Clear() . Fill() | Çağırmak Span<T>.Clear() , span öğelerini varsayılan değerle doldurmak için çağırmaktan Span<T>.Fill(T) daha verimlidir. |
CA1856: ConstantExpected özniteliğinin yanlış kullanımı | ConstantExpectedAttribute Özniteliği bir parametreye doğru uygulanmadı. |
CA1857: parametresi en iyi performans için bir sabit bekler | ile ConstantExpectedAttributeaçıklama ekleyen bir parametreye geçersiz bir bağımsız değişken geçirilir. |
CA1858: IndexOf yerine StartsWith kullanın | Dizenin belirli bir ön ek ile başlayıp başlamadığını denetlemek için çağırmaktan String.IndexOf daha verimlidirString.StartsWith. |
CA1859: Gelişmiş performans için mümkün olduğunda somut türler kullanın | Kod, arabirim türlerini veya soyut türleri kullanarak gereksiz arabirim çağrılarına veya sanal çağrılara yol açar. |
CA1860: 'Enumerable.Any()' uzantı yöntemini kullanmaktan kaçının | Bir koleksiyon türünün herhangi bir öğeye sahip olup olmadığını belirlemek için çağrısı Enumerable.Any yapmak yerine , Count veya IsEmpty (mümkünse) kullanmak Length daha verimli ve daha nettir. |
CA1861: Bağımsız değişken olarak sabit dizilerden kaçının | Bağımsız değişken olarak geçirilen sabit diziler yeniden kullanılmaz ve bu da performans ek yükü anlamına gelir. Performansı artırmak için bunları 'statik salt okunur' alanlara ayıklamayı göz önünde bulundurun. |
CA1862: Büyük/küçük harfe duyarlı olmayan dize karşılaştırmaları gerçekleştirmek için 'StringComparison' yöntemi aşırı yüklemelerini kullanın | Kod çağırdığında ToLower() veya ToUpper() büyük/küçük harfe duyarlı olmayan bir dize karşılaştırması gerçekleştirdiğinde, gereksiz bir ayırma gerçekleştirilir. |
CA1863: 'CompositeFormat' kullanın | Biçimlendirme maliyetini azaltmak için veya için bağımsız değişken olarak bir CompositeFormat örneği önbelleğe String.Format StringBuilder.AppendFormat alın ve kullanın. |
CA1864: 'IDictionary.TryAdd(TKey, TValue)' yöntemini tercih edin | Dictionary<TKey,TValue>.Add Hem hem de Dictionary<TKey,TValue>.ContainsKey(TKey) yedekli bir arama gerçekleştirin. değerini çağırmak Dictionary<TKey,TValue>.TryAdddaha verimlidir. Bu, değerin eklenip eklenmediğini belirten bir bool değer döndürür. TryAdd anahtar zaten varsa anahtarın değerinin üzerine yazmaz. |
CA1865-CA1867: Karakter aşırı yükleme kullanma | Karakter aşırı yüklemesi, tek karakterli bir dize için daha iyi performans gösteren bir aşırı yüklemedir. |
CA1868: Kümeler için gereksiz 'İçerir' çağrısı | ICollection<T>.Remove(T) Hem hem de ISet<T>.Add(T) önceden çağrılmaya ICollection<T>.Contains(T) yedekli hale getiren bir arama gerçekleştirin. Öğenin eklenip eklenmediğini veya kaldırıldığını belirten bir Boole değeri döndüren veya Remove(T) doğrudan çağırmak Add(T) daha verimlidir. |
CA1869: 'JsonSerializerOptions' örneklerini önbelleğe alma ve yeniden kullanma | System.Text.Json serileştirmeyle ilgili meta verileri sağlanan örnekte dahili olarak önbelleğe aldığı için, serileştirme veya seri durumdan çıkarma için yerel bir örneğinin JsonSerializerOptions kullanılması, kodunuz birden çok kez yürütülürse uygulamanızın performansını önemli ölçüde düşürebilir. |
CA1870: Önbelleğe alınmış bir 'SearchValues' örneği kullanın | Önbelleğe alınmış SearchValues<T> örnek kullanmak, değerleri doğrudan 'IndexOfAny' veya 'ContainsAny' öğesine geçirmekten daha verimlidir. |
CA1871: 'ArgumentNullException.ThrowIfNull' öğesine null atanabilir bir yapı geçirmeyin | 'ArgumentNullException.ThrowIfNull' bir 'object' kabul eder, bu nedenle null atanabilir bir yapı geçirmek değerin kutulanmasına neden olabilir. |
CA1872: 'BitConverter.ToString' tabanlı çağrı zincirleri yerine 'Convert.ToHexString' ve 'Convert.ToHexStringLower' tercih edin | Baytları onaltılık dize gösterimine kodlarken veya Convert.ToHexStringLower kullanınConvert.ToHexString. Bu yöntemler, ve tirelerini değiştirmek için ile birlikte String.Replace kullanmaktan BitConverter.ToString daha verimli ve String.ToLowerayırma dostudur. |
CA2000: Kapsamı kaybetmeden önce verileri atın | Bir nesnenin sonlandırıcısının çalışmasını engelleyecek olağanüstü bir durum gerçekleşebileceği için, nesne ona olan tüm başvurular kapsam dışına çıkmadan açıkça atılmalıdır. |
CA2002: Zayıf kimliği olan nesneleri kilitlemeyin | Bir nesneye uygulama etki alanları arasından erişilebiliyorsa o nesnenin zayıf bir kimliğe sahip olduğu söylenir. Zayıf kimliğe sahip bir nesne üzerinde kilit almayı deneyen iş parçacığı aynı nesne üzerinde bir kilide sahip olan farklı uygulama etki alanı içindeki ikinci iş parçacığı tarafından engellenebilir. |
CA2007: Doğrudan görev beklemeyin | Zaman uyumsuz bir yöntem doğrudan bir Task bekler. Zaman uyumsuz bir yöntem doğrudan bir Task yöntem beklediğinde, devamlılık görevi oluşturan aynı iş parçacığında gerçekleşir. Bu davranış performans açısından maliyetli olabilir ve kullanıcı arabirimi iş parçacığında kilitlenmeye neden olabilir. Devam etme niyetinizi haber vermek için aramayı Task.ConfigureAwait(Boolean) göz önünde bulundurun. |
CA2008: TaskScheduler geçirmeden görev oluşturmayın | Görev oluşturma veya devam etme işlemi, parametre belirtmeyen TaskScheduler bir yöntem aşırı yüklemesi kullanır. |
CA2009: ImmutableCollection değerinde ToImmutableCollection çağrısı yapma | ToImmutable yöntemi, ad alanından System.Collections.Immutable sabit bir koleksiyonda gereksiz yere çağrıldı. |
CA2011: Ayarlayıcı içinde özellik atama | Bir özelliğe yanlışlıkla kendi kümesi erişimcisinde bir değer atandı. |
CA2012: ValueTasks'i doğru kullanma | Üye çağrılarından döndürülen ValueTask'ler doğrudan beklenmelidir. Bir ValueTask'i birden çok kez kullanma veya tamamlanmadan önce sonucuna doğrudan erişme girişimleri bir özel duruma veya bozulmaya neden olabilir. Böyle bir ValueTask'in yoksayılması büyük olasılıkla işlevsel bir hatanın göstergesidir ve performansı düşürebilir. |
CA2013: ReferenceEquals'i değer türleriyle kullanmayın | kullanarak System.Object.ReferenceEqualsdeğerleri karşılaştırırken, objA ve objB değer türleriyse, yöntemine ReferenceEquals geçirilmeden önce kutulanırlar. Bu, hem objA hem de objB bir değer türünün aynı örneğini temsil etmese bile yöntemin ReferenceEquals yine de false döndürdüğü anlamına gelir. |
CA2014: Döngülerde stackalloc kullanmayın. | Stackalloc tarafından ayrılan yığın alanı yalnızca geçerli yöntemin çağrısının sonunda serbest bırakılır. Döngüde kullanmak, ilişkisiz yığın büyümesine ve nihai yığın taşma koşullarına neden olabilir. |
CA2015: MemoryManager<T'den türetilen türler için sonlandırıcı tanımlama> | türetilen MemoryManager<T> bir türe sonlandırıcı eklemek, bellek tarafından kullanılmaya Span<T>devam ederken boşaltılabilir. |
CA2016: CancellationToken parametresini bir tane alan yöntemlere iletin | İşlem iptal bildirimlerinin CancellationToken düzgün yayılmasını sağlamak için parametresini bir tane alan yöntemlere iletin veya belirteci kasıtlı olarak yaymadığını belirtmek için açıkça geçirin CancellationToken.None . |
CA2017: Parametre sayısı uyuşmazlığı | Günlük iletisi şablonunda sağlanan parametre sayısı, adlandırılmış yer tutucu sayısıyla eşleşmiyor. |
CA2018: için count Buffer.BlockCopy bağımsız değişken, kopyalanacak bayt sayısını belirtmelidir |
kullanılırken Buffer.BlockCopy count bağımsız değişkeni kopyalanacak bayt sayısını belirtir. Yalnızca öğeleri tam olarak bir bayt boyutunda olan dizilerde bağımsız değişken için count kullanmalısınızArray.Length . byte , sbyte ve bool dizileri tek bayt boyutunda öğelere sahiptir. |
CA2019: ThreadStatic alanlar satır içi başlatma kullanmamalıdır |
ile ThreadStaticAttribute ek açıklama ekli alan satır içinde veya açıkça bir static (Shared Visual Basic'te) oluşturucuda başlatılır. |
CA2020: IntPtr/UIntPtr'nin yerleşik işleçlerinden kaynaklanan davranış değişikliğini önleme | .NET 7'ye eklenen bazı yerleşik işleçler, .NET 6 ve önceki sürümlerdeki kullanıcı tanımlı işleçlerden farklı davranır. Taşma sırasında işaretsiz bağlam oluşturan bazı işleçler, denetlenen bağlam içinde sarmalanmadıkça artık oluşturmaz. Daha önce denetlenen bağlamı oluşturmamış olan bazı işleçler artık işaretlenmemiş bağlam içinde sarmalanmadığı sürece oluşturur. |
CA2021: Uyumsuz türlerle Enumerable.Cast<T> veya Enumerable.OfType<T> çağrılmayın | çağrısı Enumerable.Cast<TResult>(IEnumerable) veya Enumerable.OfType<TResult>(IEnumerable) giriş koleksiyonunun türüyle uyumlu olmayan bir tür parametresi belirtir. |
CA2022: Stream.Read ile uygun olmayan okumalardan kaçının | çağrısı Stream.Read istenenden daha az bayt döndürebilir ve sonuç olarak dönüş değeri işaretlenmemişse güvenilir olmayan kod elde edilir. |
CA2100: SQL sorgularını güvenlik açıkları için gözden geçirin | Bir yöntem, yönteme dize değişkeninden oluşturulmuş dize kullanarak System.Data.IDbCommand.CommandText özelliğini ayarlar. Bu kural, dize değişkeninin kullanıcı girişi içerdiğini varsayar. Kullanıcı girişi ile oluşturulan SQL komut dizesi, SQL enjeksiyon saldırılarına karşı savunmasız durumdadır. |
CA2101: P/Invoke dize bağımsız değişkenleri için sıralamayı belirtin | Bir platform çağırma üyesi kısmen güvenilen arayanlara izin verir, bir dize parametresine sahiptir ve dize açıkça sıralanmaz. Bu, olası bir güvenlik açığına neden olabilir. |
CA2109: Görünen olay işleyicileri gözden geçirin | Ortak veya korunan olay işleme yöntemi algılandı. Olay işleme yöntemleri kesinlikle gerekli olmadığı sürece maruz bırakılmamalıdır. |
CA2119: Özel arabirimleri karşılayan yöntemleri mühürleyin | Devralınabilir genel tür, iç (Visual Basic'te Arkadaş) arabiriminin geçersiz kılınabilir bir yöntem uygulaması sağlar. Bu kuralın ihlalini düzeltmek için yöntemin, derlemenin dışından geçersiz kılınmasını önleyin. |
CA2153: Bozuk Durum Özel Durumlarını işlemekten kaçının | Bozuk Durum Özel Durumları (CSE) işleminizde bellek bozulması olduğunu gösterir. İşlemin kilitlenmesine izin vermek yerine bunları yakalamak, bir saldırganın bozuk bellek bölgesine bir açık oluşturabilmesi durumunda güvenlik açıklarına yol açabilir. |
CA2200: Yığın ayrıntılarını korumak için yeniden fırlatma | Tekrar fırlatılan bir özel durum ve fırlatma açıklamasında açıkça belirtilen özel durum. Bir özel durum throw deyiminde özel durum belirterek yeniden fırlatılırsa yöntem listesi özel durum döndüren özgün yöntem ile kaybolan geçerli yöntem arasında çağırır. |
CA2201: Ayrılmış özel durum türleri oluşturmayın | Bu özgün hata algılama ve hata ayıklamayı zorlaştırır. |
CA2207: Değer türü statik alanları satır içi başlatın | Bir değer türü açık bir statik oluşturucu bildirir. Bu kural ihlalini düzeltmek için bildirildiğinde, tüm statik veriyi başlatın ve statik oluşturucuyu kaldırın. |
CA2208: Bağımsız değişken özel durumlarını doğru örnekleyin | bir özel durum türünün varsayılan (parametresiz) oluşturucusunun çağrısı yapılır veya türünden türetilen veya türünden türetilen ArgumentException ArgumentException bir özel durum türünün parametreli oluşturucusundan yanlış dize bağımsız değişkeni geçirilir. |
CA2211: Sabit olmayan alanlar görünür olmamalıdır | Ne sabitler, ne de salt okunur olan statik alanlar güvenli iş parçacığı değildir. Böyle bir alana erişim dikkatli bir şekilde denetlenebilir ve sınıf nesnesi erişimi eşitlemek için gelişmiş programlama tekniklerini gerektirir. |
CA2213: Atılabilen alanlar atılmalıdır | IDisposable uygulayan türlerin alanları System.IDisposable uygulayan bir türle bildirilir. Bir Dispose yöntemi alanının tanıtıcısının bildirim türü Dispose yöntemi tarafından çağrılmaz. |
CA2214: Geçersiz kılınabilir yöntemleri oluşturucular içinde çağırmayın | Bir oluşturucu bir sanal yöntemi çağırdığında, yöntemini çağıran örneğin oluşturucu yürütülmemiş olabilir. |
CA2215: Atma yöntemleri taban sınıf atmayı çağırmalıdır | Tür atılabilen bir türden devralınırsa, kendi Dispose yönteminden basit tür olan Dispose yöntemini çağırmalıdır. |
CA2216: Atılabilir türler sonlandırıcıyı bildirmelidir | System.IDisposable uygulayan yöntem ve yönetilmeyen kaynakların kullanımını öneren alanlar Object.Finalize'da açıklandığı gibi sonlandırıcıyı uygulamazlar. |
CA2217: Numaralandırmaları FlagsAttribute ile işaretlemeyin | Dışarıdan görünen FlagsAttribute ile işaretlenmiş numaralandırma ve ikinin katı olmayan ya da numaralandırma üzerinde tanımlanan diğer değerlerin kombinasyonu olmayan bir ya da daha fazla değer vardır. |
CA2218: GetHashCode'u Eşittir'i geçersiz kılarak geçersiz kılın | Ortak tür geçersiz kılar System.Object.Equals ancak geçersiz kılmaz System.Object.GetHashCode. |
CA2219: Özel durum yan tümceleri içinde özel durum harekete geçirmeyin | Bir istisna sonlandırıcı ya da arıza yan tümcesine neden olduğunda, yeni istisna aktif istisnayı saklar. Bir filtre yan tümcesinde özel durum oluştuğunda, çalışma zamanı özel durumu sessizce yakalar. Bu özgün hata algılama ve hata ayıklamayı zorlaştırır. |
CA2224: Eşittir işlecini aşırı yükleyerek eşittiri geçersiz kılın | Ortak tür, eşitlik işlecini uygular ancak geçersiz kılmaz System.Object.Equals. |
CA2225: İşleç aşırı yüklemeleri adlandırılmış alternatiflere sahiptir | Operatör aşırı yüklemesi bulundu ve beklenen adlandırılmış alternatif yöntem bulunamadı. Adlandırılmış alternatif üye operatörün sağladığı gibi aynı fonksiyonlara erişmeyi sağlar ve aşırı yüklenmiş operatörlere destek olmayan dilleri programlayan programcılar için bunlar sağlanmıştır. |
CA2226: İşleçler simetrik aşırı yüklemelere sahip olmalıdır | Bir tür, eşitlik ya da eşitsizlik operatörünü uygular ve ters işleci uygulamaz. |
CA2227: Koleksiyon özellikleri salt okunur olmalıdır | Yazılabilir koleksiyon özelliği kullanıcının koleksiyonun tamamını farklı bir koleksiyonla değiştirmesine izin verir. Salt okunur özelliği değiştirilmesini durdurur ancak yine de tekil üyelerin ayarlamasına izin verir. |
CA2229: Serileştirme oluşturucularını uygulayın | Bu kural ihlalini düzeltmek için seri hale getirme yapıcısını uygular. Kapalı bir sınıf için kurucusunu özel yapın; aksi takdirde korunmuş yapın. |
CA2231: ValueType.Equals değerini geçersiz kılmada eşittir işlecini aşırı yükle | Bir değer türü Object.Equals'ı geçersiz kılar, ama eşitlik işlecini uygulamaz. |
CA2234: Dizeler yerine System.Uri nesneleri gönderin | Adında "URI", "URI", "urn", "urn", "url" veya "url" içeren bir dize parametresi olan yöntem çağrısı yapıldı. Bildirim türü yöntemi, System.Uri parametresini aşırı yüklemeye uyan yöntemi içerir. |
CA2235: Tüm serileştirilebilir olmayan alanları işaretleyin | Seri hale getirilemeyen bir örnek alan türü seri hale getirilebilir bir tür içinde bildirilir. |
CA2237: ISerializable türleri SerializableAttribute ile işaretleyin | Ortak dil çalışma zamanı tarafından seri hale getirilebilir olarak tanınması için, türler ISerializable arabirimini uygulaması aracılığıyla özel seri hale getirme yordamı kullanıldığında SerializableAttribute özniteliği kullanılarak işaretlenmelidir. |
CA2241: Biçimlendirme yöntemlerine doğru bağımsız değişkenleri sağlayın | System.String.Format için geçirilen biçim, her bir nesne bağımsız değişkeninden sorumlu olan öğe biçimini içermez. |
CA2242: NaN için doğru sınayın | Bu ifade, değeri Single.Nan veya Double.Nan'a karşı test eder. Single.IsNan(Single) ya da Double.IsNan(Double) değerini test etmek için kullanın. |
CA2243: Öznitelik dize harfleri doğru çözümlenmelidir | Bir öznitelik dize literal parametresi, URL, GUID ya da sürüm için doğru ayrıştırmaz. |
CA2244: Dizine alınan öğe başlatmalarını yinelemeyin | Nesne başlatıcıda aynı sabit dizine sahip birden fazla dizinlenmiş öğe başlatıcısı vardır. Son başlatıcı dışında tümü yedeklidir. |
CA2245: Kendisine özellik atama | Bir özellik kendisine yanlışlıkla atandı. |
CA2246: Aynı deyimde bir simge ve üyesi atama | Aynı deyimde bir simgenin ve üyesinin( yani bir alanın veya özelliğin) atanması önerilmez. Üye erişiminin, atamadan önce simgenin eski değerini mi yoksa bu deyimdeki atamadaki yeni değeri mi kullanması amaçlandığı net değildir. |
CA2247: TaskCompletionSource oluşturucusna geçirilen bağımsız değişken TaskContinuationOptions sabit listesi yerine TaskCreationOptions sabit listesi olmalıdır. | TaskCompletionSource'ta, temel görevi denetleen TaskCreationOptions'ı alan oluşturucular ve görevde depolanan nesne durumunu alan oluşturucular vardır. TaskCreationOptions yerine yanlışlıkla TaskContinuationOptions geçirilmesi, çağrının seçenekleri durum olarak işlemesine neden olur. |
CA2248: Enum.HasFlag için doğru sabit listesi bağımsız değişkeni sağlayın | Yöntem çağrısına HasFlag bağımsız değişken olarak geçirilen sabit listesi türü, çağrılan sabit listesi türünden farklıdır. |
CA2249: String.IndexOf yerine String.Contains kullanmayı göz önünde bulundurun | string.IndexOf Bir alt dizenin varlığını/yokluğunu denetlemek için sonucun kullanıldığı yere yapılan çağrılar ile string.Contains değiştirilebilir. |
CA2250: Kullan ThrowIfCancellationRequested |
ThrowIfCancellationRequested belirtecin iptal edilip edilmediğini otomatik olarak denetler ve varsa atar OperationCanceledException . |
CA2251: Üzerinde kullanın String.Equals String.Compare |
sonucunu String.Compare sıfırla karşılaştırmak yerine hem daha net hem de daha hızlı kullanılırString.Equals . |
CA2252: Önizleme özelliklerini kabul etme | Önizleme API'lerini kullanmadan önce özellikleri önizlemeyi kabul edin. |
CA2253: Adlandırılmış yer tutucular sayısal değerler olmamalıdır | Günlük iletisi şablonundaki adlandırılmış yer tutucular yalnızca sayısal karakterlerden oluşmalıdır. |
CA2254: Şablon statik bir ifade olmalıdır | Günlük iletisi şablonu aramalar arasında değişiklik göstermelidir. |
CA2255: ModuleInitializer Öznitelik kitaplıklarda kullanılmamalıdır |
Modül başlatıcıları, uygulama kodu yürütülmeye başlamadan önce uygulamanın bileşenlerinin başlatılmasını sağlamak için uygulama kodu tarafından kullanılması amaçlanmıştır. |
CA2256: Üst arabirimlerde bildirilen tüm üyelerin DynamicInterfaceCastableImplementation-attributed arabiriminde bir uygulaması olmalıdır | ile DynamicInterfaceCastableImplementationAttribute özniteliklendirilen türler, türü uygulayan bir tür için arabirim uygulaması görevi görür IDynamicInterfaceCastable . Sonuç olarak, devralınan arabirimlerde tanımlanan tüm üyelerin bir uygulamasını sağlaması gerekir, çünkü uygulayan IDynamicInterfaceCastable tür aksi takdirde bunları sağlamaz. |
CA2257: 'DynamicInterfaceCastableImplementationAttribute' ile bir arabirimde tanımlanan üyeler 'statik' olmalıdır | Uygulayan IDynamicInterfaceCastable bir tür meta verilerde dinamik arabirim uygulamayabileceği için, bu tür üzerinde tanımlanan açık bir uygulama olmayan bir örnek arabirimi üyesine yapılan çağrılar çalışma zamanında başarısız olabilir. Çalışma zamanı hatalarından kaçınmak için yeni arabirim üyelerini static işaretleyin. |
CA2258: Visual Basic'te 'DynamicInterfaceCastableImplementation' arabirimi sağlanması desteklenmiyor | İşlevsel DynamicInterfaceCastableImplementationAttribute öznitelikli bir arabirim sağlamak için Visual Basic'te desteklenmeyen Varsayılan Arabirim Üyeleri özelliği gerekir. |
CA2259: Yalnızca statik alanlarla kullanıldığından emin olun ThreadStatic |
ThreadStaticAttributeyalnızca (Shared Visual Basic'te) alanları etkiler static . Örnek alanlarına uygulandığında özniteliğinin davranış üzerinde hiçbir etkisi yoktur. |
CA2260: Genel matematik arabirimlerini doğru uygulama | Genel matematik arabirimleri, türetilmiş türün kendi kendine yinelenen tür parametresi için kullanılmasını gerektirir. |
CA2261: ile kullanmayın ConfigureAwaitOptions.SuppressThrowing Task<TResult> |
Bu ConfigureAwaitOptions.SuppressThrowing seçenek genel Task<TResult> tarafından desteklenmez çünkü bu geçersiz TResult bir döndürülmesine neden olabilir. |
CA2262: Düzgün ayarla MaxResponseHeadersLength |
Değerin doğru sağlandığından MaxResponseHeadersLength emin olun. Bu değer kilobayt cinsinden ölçülür. |
CA2263: Tür bilindiğinde genel aşırı yüklemeyi tercih edin | Genel bir aşırı yükleme kullanmak, tür bilindiğinde bir System.Type bağımsız değişken geçirmek için tercih edilir, çünkü bunlar geliştirilmiş derleme zamanı denetimleriyle daha temiz ve daha tür güvenli kodu teşvik eder. |
CA2264: 'ArgumentNullException.ThrowIfNull' öğesine null atanamayan bir değer geçirmeyin | Geçirilen bağımsız değişken 'null' olduğunda 'ArgumentNullException.ThrowIfNull' oluşturulur. Null değer atanamayan yapılar ve 'nameof()' ve 'new' ifadeleri gibi bazı yapıların hiçbir zaman null olmadığından 'ArgumentNullException.ThrowIfNull' hiçbir zaman oluşturmaz. |
CA2265: veya ile karşılaştırma Span<T> null default |
Bir yayılma alanının null hedeflenenle karşılaştırılması veya default yapılmaması. default null ve değişmez değeri örtük olarak olarak olarak Span<T>.Empty dönüştürülür. |
CA2300: Güvenli olmayan seri durumdan çıkarıcı BinaryFormatter kullanmayın | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2301: BinaryFormatter.Binder'ı ayarlamadan BinaryFormatter.Deserialize çağrısı yapma | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2302: BinaryFormatter.Deserialize çağrılmadan önce BinaryFormatter.Binder'ın ayarlandığından emin olun | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2305: Güvenli olmayan seri durumdan çıkarıcı LosFormatter kullanmayın | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2310: Güvenli olmayan seri durumdan çıkarıcı NetDataContractSerializer kullanmayın | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2311: NetDataContractSerializer.Binder'ı ayarlamadan seri durumdan çıkarma | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2312: Seri durumdan çıkarmadan önce NetDataContractSerializer.Binder'ın ayarlandığından emin olun | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2315: Güvenli olmayan seri durumdan çıkarıcı ObjectStateFormatter kullanmayın | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2321: SimpleTypeResolver kullanarak JavaScriptSerializer ile seri durumdan çıkarma | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2322: Seri durumdan çıkarmadan önce JavaScriptSerializer'ın SimpleTypeResolver ile başlatılmadığından emin olun | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2326: TypeNameHandling değerlerini None dışında kullanmayın | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2327: Güvenli olmayan JsonSerializerSettings kullanmayın | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2328: JsonSerializerSettings'in güvenli olduğundan emin olun | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2329: Güvenli olmayan bir yapılandırma kullanarak JsonSerializer ile seri durumdan çıkarma | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2330: Seri durumdan çıkarırken JsonSerializer'ın güvenli bir yapılandırması olduğundan emin olun | Güvenilmeyen verilerin seri durumdan çıkarılması sırasında güvenli olmayan seri durumdan çıkarıcılar savunmasızdır. Saldırgan, kötü amaçlı yan etkilere sahip nesneler eklemek için seri hale getirilmiş verileri beklenmeyen türler içerecek şekilde değiştirebilir. |
CA2350: DataTable.ReadXml() girişinin güvenilir olduğundan emin olun | Bir saldırgan, güvenilmeyen girişle seri durumdan çıkarırken DataTable hizmet reddi saldırısı gerçekleştirmek için kötü amaçlı girişler oluşturabilir. Bilinmeyen uzaktan kod yürütme güvenlik açıkları olabilir. |
CA2351: DataSet.ReadXml() girişinin güvenilir olduğundan emin olun | Bir saldırgan, güvenilmeyen girişle seri durumdan çıkarırken DataSet hizmet reddi saldırısı gerçekleştirmek için kötü amaçlı girişler oluşturabilir. Bilinmeyen uzaktan kod yürütme güvenlik açıkları olabilir. |
CA2352: Seri hale getirilebilir türde güvenli olmayan DataSet veya DataTable, uzaktan kod yürütme saldırılarına karşı savunmasız olabilir | ile SerializableAttribute işaretlenen bir sınıf veya yapı, veya DataSet DataTable alanı veya özelliği içerir ve öğesi yoktur GeneratedCodeAttribute. |
CA2353: Seri hale getirilebilir türde güvenli olmayan DataSet veya DataTable | XML serileştirme özniteliği veya veri sözleşmesi özniteliği ile işaretlenmiş bir sınıf veya yapı ya da DataTable alan DataSet ya da özellik içerir. |
CA2354: Seri durumdan çıkarılmış nesne grafında güvenli olmayan DataSet veya DataTable, uzaktan kod yürütme saldırısına karşı savunmasız olabilir | Serileştirilmiş bir System.Runtime.Serialization.IFormatter serileştirilmiş ile seri durumdan çıkarma ve türün nesne grafı veya DataSet DataTableiçerebilir. |
CA2355: Seri durumdan çıkarılmış nesne grafında güvenli olmayan DataSet veya DataTable | Yayınlanmış veya belirtilen türün nesne grafı veya DataSet DataTableiçerebilirken seri durumdan çıkarma. |
CA2356: Web seri durumdan çıkarılmış nesne grafında güvenli olmayan DataSet veya DataTable | veya içeren bir System.Web.Services.WebMethodAttribute yöntemin veya System.ServiceModel.OperationContractAttribute DataTableöğesine başvurabilen bir DataSet parametresi vardır. |
CA2361: DataSet.ReadXml() içeren otomatik oluşturulan sınıfın güvenilmeyen verilerle kullanılmadığından emin olun | Bir saldırgan, güvenilmeyen girişle seri durumdan çıkarırken DataSet hizmet reddi saldırısı gerçekleştirmek için kötü amaçlı girişler oluşturabilir. Bilinmeyen uzaktan kod yürütme güvenlik açıkları olabilir. |
CA2362: Otomatik olarak oluşturulan serileştirilebilir türdeki güvenli olmayan DataSet veya DataTable, uzaktan kod yürütme saldırılarına karşı savunmasız olabilir | ile güvenilmeyen girişi BinaryFormatter seri durumdan çıkarırken ve seri durumdan çıkarılmış nesne grafı veya DataSet DataTableiçerdiğinde, saldırgan uzaktan kod yürütme saldırısı gerçekleştirmek için kötü amaçlı bir yük oluşturabilir. |
CA3001: SQL ekleme güvenlik açıkları için kodu gözden geçirme | Güvenilmeyen giriş ve SQL komutlarıyla çalışırken SQL ekleme saldırılarına dikkat edin. SQL ekleme saldırısı kötü amaçlı SQL komutlarını yürüterek uygulamanızın güvenliğini ve bütünlüğünü tehlikeye atabilir. |
CA3002: XSS güvenlik açıkları için kodu gözden geçirme | Web isteklerinden gelen güvenilmeyen girişlerle çalışırken siteler arası betik (XSS) saldırılarına dikkat edin. XSS saldırısı ham HTML çıkışına güvenilmeyen giriş ekler ve saldırganın kötü amaçlı betikleri yürütmesine veya web sayfanızdaki içeriği kötü amaçlı olarak değiştirmesine olanak sağlar. |
CA3003: Dosya yolu ekleme güvenlik açıkları için kodu gözden geçirin | Web isteklerinden gelen güvenilmeyen girişlerle çalışırken, dosyaların yollarını belirtirken kullanıcı tarafından denetlenen girişi kullanmaya dikkat edin. |
CA3004: Bilgilerin açığa çıkmasıyla ilgili güvenlik açıkları için kodu gözden geçirin | Özel durum bilgilerinin açıklanması, saldırganlara uygulamanızın iç işlevleri hakkında içgörüler sağlar ve bu da saldırganların yararlanabilecekleri diğer güvenlik açıklarını bulmasına yardımcı olabilir. |
CA3005: LDAP ekleme güvenlik açıkları için kodu gözden geçirme | Güvenilmeyen girişlerle çalışırken Basit Dizin Erişim Protokolü (LDAP) ekleme saldırılarına dikkat edin. Saldırgan, bilgi dizinlerine karşı kötü amaçlı LDAP deyimleri çalıştırabilir. Dizin hizmetlerine erişmek için dinamik LDAP deyimleri oluşturmak için kullanıcı girişi kullanan uygulamalar özellikle savunmasızdır. |
CA3006: İşlem komutu ekleme güvenlik açıkları için kodu gözden geçirme | Güvenilmeyen girişlerle çalışırken, komut ekleme saldırılarına dikkat edin. Komut ekleme saldırısı, temel alınan işletim sisteminde kötü amaçlı komutlar yürüterek sunucunuzun güvenliğini ve bütünlüğünü tehlikeye atabilir. |
CA3007: Açık yeniden yönlendirme güvenlik açıkları için kodu gözden geçirme | Güvenilmeyen girişlerle çalışırken açık yeniden yönlendirme güvenlik açıklarına dikkat edin. Saldırgan, açık yeniden yönlendirme güvenlik açığından yararlanarak web sitenizi kullanarak geçerli bir URL'nin görünümünü verebilir, ancak istenmeyen bir ziyaretçiyi kimlik avına veya başka bir kötü amaçlı web sayfasına yönlendirebilir. |
CA3008: XPath ekleme güvenlik açıkları için kodu gözden geçirme | Güvenilmeyen girişlerle çalışırken XPath ekleme saldırılarına dikkat edin. Güvenilmeyen giriş kullanarak XPath sorguları oluşturmak, saldırganın istenmeyen bir sonuç döndürmek için sorguyu kötü amaçlı olarak işlemesine ve sorgulanan XML'nin içeriğini açığa çıkarmasına olanak tanıyabilir. |
CA3009: XML ekleme güvenlik açıkları için kodu gözden geçirme | Güvenilmeyen girişlerle çalışırken XML ekleme saldırılarına dikkat edin. |
CA3010: XAML ekleme güvenlik açıkları için kodu gözden geçirme | Güvenilmeyen girişlerle çalışırken XAML ekleme saldırılarına dikkat edin. XAML, nesne örnekleme ve yürütmeyi doğrudan temsil eden bir işaretleme dilidir. Bu, XAML'de oluşturulan öğelerin sistem kaynaklarıyla (örneğin, ağ erişimi ve dosya sistemi GÇ) etkileşim kurabileceği anlamına gelir. |
CA3011: DLL ekleme güvenlik açıkları için kodu gözden geçirme | Güvenilmeyen girişlerle çalışırken, güvenilmeyen kodu yüklemeye dikkat edin. Web uygulamanız güvenilmeyen kodu yüklerse, bir saldırgan işleminize kötü amaçlı DLL'ler ekleyip kötü amaçlı kod yürütebilir. |
CA3012: Regex ekleme güvenlik açıkları için kodu gözden geçirme | Güvenilmeyen girişlerle çalışırken regex ekleme saldırılarına dikkat edin. Saldırgan normal bir ifadeyi kötü amaçlı olarak değiştirmek, regex'in istenmeyen sonuçlarla eşleşmesini sağlamak veya regex'in hizmet reddi saldırısına neden olan aşırı CPU tüketmesini sağlamak için regex ekleme özelliğini kullanabilir. |
CA3061: URL'ye göre şema eklemeyin | Tehlikeli dış başvurulara neden olabileceğinden Add yönteminin güvenli olmayan aşırı yüklemesini kullanmayın. |
CA3075: Güvensiz DTD İşleme | Güvenli olmayan DTDProcessing örnekleri kullanıyorsanız veya dış varlık kaynaklarına başvurursanız, ayrıştırıcı güvenilmeyen girişi kabul edebilir ve hassas bilgileri saldırganlara açıklayabilir. |
CA3076: Güvensiz XSLT Betiği Yürütme | .NET uygulamalarında Genişletilebilir Stil Sayfası Dil Dönüşümlerini (XSLT) güvenli olmayan bir şekilde yürütürseniz, işlemci hassas bilgileri saldırganlara açıklayan ve Hizmet Reddi ve Siteler Arası saldırılara yol açabilecek güvenilmeyen URI başvurularını çözebilir. |
CA3077: API Tasarımı, XML Belgesi ve XML Metin Okuyucusunda Güvensiz İşleme | XMLDocument ve XMLTextReader'dan türetilen bir API tasarlarken DtdProcessing'e dikkat edin. Dış varlık kaynaklarına başvururken veya çözümlenirken güvenli olmayan DTDProcessing örneklerinin kullanılması veya XML'de güvenli olmayan değerler ayarlanması bilgilerin açığa çıkmasına neden olabilir. |
CA3147: Fiil işleyicilerini ValidateAntiForgeryToken ile işaretleme | ASP.NET MVC denetleyicisi tasarlarken siteler arası istek sahteciliği saldırılarına dikkat edin. Siteler arası istek sahteciliği saldırısı, kimliği doğrulanmış bir kullanıcıdan ASP.NET MVC denetleyicinize kötü amaçlı istekler gönderebilir. |
CA5350: Zayıf Şifreleme Algoritmaları Kullanmayın | Zayıf şifreleme algoritmaları ve karma işlevleri bugün çeşitli nedenlerle kullanılır, ancak korudukları verilerin gizliliğini veya bütünlüğünü garanti etmek için kullanılmamalıdır. Bu kural kodda TripleDES, SHA1 veya RIPEMD160 algoritmaları bulduğunda tetikler. |
CA5351: Bozuk Şifreleme Algoritmaları Kullanmayın | Bozuk şifreleme algoritmaları güvenli olarak kabul edilmez ve kullanımları kesinlikle önerilmez. Bu kural, kodda MD5 karma algoritmasını veya DES veya RC2 şifreleme algoritmalarını bulduğunda tetikler. |
CA5358: Güvenli Olmayan Şifreleme Modlarını Kullanmayın | Güvenli Olmayan Şifreleme Modlarını Kullanmayın |
CA5359: Sertifika doğrulamayı devre dışı bırakma | Sertifika, sunucunun kimliğini doğrulamaya yardımcı olabilir. İsteklerin istenen sunucuya gönderildiğinden emin olmak için istemciler sunucu sertifikasını doğrulamalıdır. ServerCertificateValidationCallback her zaman döndürürse true , tüm sertifikalar doğrulamayı geçirir. |
CA5360: Seri durumdan çıkarmada tehlikeli yöntemleri çağırmayın | Güvenli olmayan seri durumdan çıkarma, bir uygulamanın mantığını kötüye kullanmak, Hizmet Reddi (DoS) saldırısı uygulamak ve hatta seri durumdan çıkarıldıktan sonra rastgele kod yürütmek için güvenilmeyen veriler kullanıldığında ortaya çıkan bir güvenlik açığıdır. Uygulama, kendi denetimi altındaki güvenilmeyen verileri seri durumdan çıkarırken kötü amaçlı kullanıcıların bu seri durumdan çıkarma özelliklerini kötüye kullanmaları sık sık mümkündür. Özellikle seri durumdan çıkarma işleminde tehlikeli yöntemleri çağırın. Güvenli olmayan seri durumdan çıkarma saldırılarının başarılı olması, saldırganın DoS saldırıları, kimlik doğrulama atlamaları ve uzaktan kod yürütme gibi saldırıları gerçekleştirmesine olanak sağlayabilir. |
CA5361: Güçlü şifrelemenin Schannel kullanımını devre dışı bırakma | ayarı Switch.System.Net.DontEnableSchUseStrongCrypto true , giden Aktarım Katmanı Güvenliği (TLS) bağlantılarında kullanılan şifrelemeyi zayıflatır. Daha zayıf şifreleme, uygulamanızla sunucu arasındaki iletişimin gizliliğini tehlikeye atarak saldırganların hassas verileri dinlemesini kolaylaştırır. |
CA5362: Seri durumdan çıkarılmış nesne grafında olası başvuru döngüsü | Güvenilmeyen verilerin seri durumdan çıkarılması durumunda, seri durumdan çıkarılmış nesne grafını işleyen herhangi bir kodun sonsuz döngülere girmeden başvuru döngülerini işlemesi gerekir. Bu hem seri durumdan çıkarma geri çağırmasının parçası olan kodu hem de seri durumdan çıkarma tamamlandıktan sonra nesne grafını işleyen kodu içerir. Aksi takdirde, bir saldırgan başvuru döngüsü içeren kötü amaçlı verilerle Hizmet Reddi saldırısı gerçekleştirebilir. |
CA5363: İstek doğrulamayı devre dışı bırakma | İstek doğrulama, ASP.NET HTTP isteklerini inceleyen ve siteler arası betik oluşturma da dahil olmak üzere ekleme saldırılarına yol açabilecek tehlikeli olabilecek içerik içerip içermediklerini belirleyen bir özelliktir. |
CA5364: Kullanım dışı bırakılan güvenlik protokollerini kullanmayın | Aktarım Katmanı Güvenliği (TLS), çoğunlukla Köprü Metni Aktarım Protokolü Güvenli (HTTPS) ile bilgisayarlar arasındaki iletişimin güvenliğini sağlar. TLS'nin eski protokol sürümleri TLS 1.2 ve TLS 1.3'ten daha az güvenlidir ve yeni güvenlik açıklarına sahip olma olasılığı daha yüksektir. Riski en aza indirmek için eski protokol sürümlerinden kaçının. |
CA5365: HTTP Üst Bilgi Denetimini Devre Dışı Bırakma | HTTP üst bilgi denetimi, yanıt üst bilgilerinde bulunan satır başı ve yeni satır karakterlerinin (\r ve \n) kodlamasını etkinleştirir. Bu kodlama, üst bilginin içerdiği güvenilmeyen verileri yankılayan bir uygulamadan yararlanan ekleme saldırılarını önlemeye yardımcı olabilir. |
CA5366: DataSet Okuma XML'i için XmlReader kullanma | Güvenilmeyen verilerle XML okumak için kullanmak DataSet tehlikeli dış başvurular yükleyebilir. Bu, güvenli bir çözümleyici ile veya DTD işleme devre dışı bırakılarak kısıtlanmalıdır XmlReader . |
CA5367: İşaretçi Alanlarıyla Türleri SeriLeştirmeyin | Bu kural, işaretçi alanı veya özelliği olan serileştirilebilir bir sınıf olup olmadığını denetler. Serileştirilemedi üyeler, statik üyeler veya ile NonSerializedAttributeişaretlenmiş alanlar gibi bir işaretçi olabilir. |
CA5368: Sayfadan türetilen sınıflar için ViewStateUserKey değerini ayarlayın | özelliğinin ViewStateUserKey ayarlanması, tek tek kullanıcılar için görünüm durumu değişkenine bir tanımlayıcı atamanıza izin vererek uygulamanıza yönelik saldırıları önlemenize yardımcı olabilir, böylece saldırganlar bir saldırı oluşturmak için değişkeni kullanamaz. Aksi takdirde, siteler arası istek sahteciliği için güvenlik açıkları olacaktır. |
CA5369: Seri Durumdan Çıkarmak için XmlReader Kullanma | Güvenilmeyen DTD ve XML şemalarının işlenmesi tehlikeli dış başvuruların yüklenmesine olanak tanıyabilir. Bu, güvenli bir çözümleyici ile XmlReader kullanılarak veya DTD ve XML satır içi şema işleme devre dışı bırakılarak kısıtlanmalıdır. |
CA5370: Okuyucu doğrulama için XmlReader kullanma | Güvenilmeyen DTD ve XML şemalarının işlenmesi tehlikeli dış başvuruların yüklenmesini sağlayabilir. Bu tehlikeli yükleme, güvenli çözümleyicisi olan bir XmlReader kullanılarak veya DTD ve XML satır içi şema işleme devre dışı bırakılarak kısıtlanabilir. |
CA5371: Şema okuma için XmlReader kullanma | Güvenilmeyen DTD ve XML şemalarının işlenmesi tehlikeli dış başvuruların yüklenmesini sağlayabilir. XmlReader'ı güvenli bir çözümleyiciyle veya DTD ve XML satır içi şema işleme devre dışı bırakılmış olarak kullanmak bunu kısıtlar. |
CA5372: XPathDocument için XmlReader kullanma | Güvenilmeyen verilerden XML'nin işlenmesi tehlikeli dış başvurular yükleyebilir. Bu, güvenli bir çözümleyici ile XmlReader kullanılarak veya DTD işleme devre dışı bırakılarak kısıtlanabilir. |
CA5373: Eski anahtar türetme işlevini kullanmayın | Bu kural, zayıf anahtar türetme yöntemleri ve Rfc2898DeriveBytes.CryptDeriveKey çağrısını algılarSystem.Security.Cryptography.PasswordDeriveBytes. System.Security.Cryptography.PasswordDeriveBytes zayıf bir PBKDF1 algoritması kullandı. |
CA5374: XslTransform Kullanmayın | Bu kural kodda örneği olup olmadığını System.Xml.Xsl.XslTransform denetler. System.Xml.Xsl.XslTransform artık kullanım dışıdır ve kullanılmamalıdır. |
CA5375: Hesap paylaşılan erişim imzası kullanmayın | Hesap SAS'sı, hizmet SAS'siyle izin verilmeyen blob kapsayıcıları, tablolar, kuyruklar ve dosya paylaşımlarındaki okuma, yazma ve silme işlemlerine erişim yetkisi verebilir. Ancak kapsayıcı düzeyinde ilkeleri desteklemez ve verilen izinler üzerinde daha az esnekliğe ve denetime sahiptir. Kötü amaçlı kullanıcılar bunu aldıktan sonra depolama hesabınızın gizliliği kolayca tehlikeye girer. |
CA5376: SharedAccessProtocol HttpsOnly kullanma | SAS, HTTP üzerinde düz metin olarak taşınabilen hassas verilerdir. |
CA5377: Kapsayıcı düzeyi erişim ilkesini kullanma | Kapsayıcı düzeyinde erişim ilkesi istediğiniz zaman değiştirilebilir veya iptal edilebilir. Verilen izinler üzerinde daha fazla esneklik ve denetim sağlar. |
CA5378: ServicePointManagerSecurityProtocols'ı devre dışı bırakma | true Windows İletişim Çerçevesi 'nin (WCF) Aktarım Katmanı Güvenliği (TLS) bağlantılarını TLS 1.0 ile sınırlandırmak için ayarıSwitch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols . TLS'nin bu sürümü kullanım dışı bırakılacaktır. |
CA5379: Zayıf anahtar türetme işlevi algoritması kullanmayın | Rfc2898DeriveBytes sınıfı varsayılan olarak algoritmayı SHA1 kullanır. Oluşturucunun bazı aşırı yüklemelerinde kullanılacak karma algoritmasını veya üzerini SHA256 belirtmeniz gerekir. Özelliğin HashAlgorithm yalnızca bir get erişimciye sahip olduğunu ve değiştiricisi olmadığını overridden unutmayın. |
CA5380: Kök depoya sertifika eklemeyin | Bu kural, Güvenilen Kök Sertifika Yetkilileri sertifika deposuna sertifika ekleyen kodu algılar. Varsayılan olarak, Güvenilen Kök Sertifika Yetkilileri sertifika deposu, Microsoft Kök Sertifika Programı gereksinimlerini karşılayan bir dizi genel CA ile yapılandırılır. |
CA5381: Sertifikaların kök depoya eklenmediğinden emin olun | Bu kural, Güvenilen Kök Sertifika Yetkilileri sertifika deposuna sertifika ekleme olasılığı olan kodu algılar. Varsayılan olarak, Güvenilen Kök Sertifika Yetkilileri sertifika deposu, Microsoft Kök Sertifika Programı gereksinimlerini karşılayan bir dizi genel sertifika yetkilisi (CA) ile yapılandırılır. |
CA5382: ASP.NET Core'da güvenli tanımlama bilgileri kullanma | HTTPS üzerinden kullanılabilen uygulamalar, tarayıcıya tanımlama bilgisinin yalnızca Güvenli Yuva Katmanı (SSL) kullanılarak iletilmesi gerektiğini belirten güvenli tanımlama bilgileri kullanmalıdır. |
CA5383: ASP.NET Core'da güvenli tanımlama bilgileri kullandığınızdan emin olun | HTTPS üzerinden kullanılabilen uygulamalar, tarayıcıya tanımlama bilgisinin yalnızca Güvenli Yuva Katmanı (SSL) kullanılarak iletilmesi gerektiğini belirten güvenli tanımlama bilgileri kullanmalıdır. |
CA5384: Dijital imza algoritması (DSA) kullanmayın | DSA zayıf bir asimetrik şifreleme algoritmasıdır. |
CA5385: Yeterli anahtar boyutuna sahip Rivest–Shamir–Adleman (RSA) algoritması kullanın | 2048 bitten küçük bir RSA anahtarı deneme yanılma saldırılarına karşı daha savunmasızdır. |
CA5386: SecurityProtocolType değerini sabit kodlamaktan kaçının | Aktarım Katmanı Güvenliği (TLS), çoğunlukla Köprü Metni Aktarım Protokolü Güvenli (HTTPS) ile bilgisayarlar arasındaki iletişimin güvenliğini sağlar. TlS 1.0 ve TLS 1.1 protokol sürümleri kullanım dışı bırakılmıştır, TLS 1.2 ve TLS 1.3 ise günceldir. Gelecekte TLS 1.2 ve TLS 1.3 kullanım dışı bırakılabilir. Uygulamanızın güvenli kalmasını sağlamak için protokol sürümünü sabit kodlamaktan ve en az .NET Framework v4.7.1'i hedeflemekten kaçının. |
CA5387: Yetersiz yineleme sayısıyla zayıf anahtar türetme işlevi kullanmayın | Bu kural, tarafından 100.000'den az yineleme sayısına sahip bir şifreleme anahtarının oluşturulıp Rfc2898DeriveBytes oluşturulmadığını denetler. Daha yüksek yineleme sayısı, oluşturulan şifreleme anahtarını tahmin etmeye çalışan sözlük saldırılarına karşı azaltmaya yardımcı olabilir. |
CA5388: Zayıf anahtar türetme işlevini kullanırken yeterli yineleme sayısını sağlayın | Bu kural, tarafından 100.000'den az olabilecek bir yineleme sayısıyla şifreleme anahtarının oluşturulıp Rfc2898DeriveBytes oluşturulmadığını denetler. Daha yüksek yineleme sayısı, oluşturulan şifreleme anahtarını tahmin etmeye çalışan sözlük saldırılarına karşı azaltmaya yardımcı olabilir. |
CA5389: Arşiv öğesinin yolunu hedef dosya sistemi yoluna eklemeyin | Dosya yolu göreli olabilir ve beklenen dosya sistemi hedef yolunun dışında dosya sistemi erişimine yol açarak kötü amaçlı yapılandırma değişikliklerine ve lay-and-wait tekniğiyle uzaktan kod yürütülmesine yol açabilir. |
CA5390: Şifreleme anahtarını sabit kodlamayın | Simetrik algoritmanın başarılı olması için gizli anahtarın yalnızca gönderen ve alıcı tarafından bilinmesi gerekir. Bir anahtar sabit kodlandığında kolayca bulunur. Derlenmiş ikili dosyalar olsa bile, kötü amaçlı kullanıcıların ayıklaması kolaydır. Özel anahtarın gizliliği ihlal edildikten sonra şifre metninin şifresi doğrudan çözülebilir ve artık korunmaz. |
CA5391: ASP.NET Core MVC denetleyicilerinde antiforgery belirteçleri kullanma | POST PUT Bir , , PATCH veya DELETE isteğinin, bir sahteciliğe karşı koruma belirtecini doğrulamadan işlenmesi siteler arası istek sahteciliği saldırılarına karşı savunmasız olabilir. Siteler arası istek sahteciliği saldırısı, kimliği doğrulanmış bir kullanıcıdan ASP.NET Core MVC denetleyicinize kötü amaçlı istekler gönderebilir. |
CA5392: P/Invokes için DefaultDllImportSearchPaths özniteliğini kullanın | Varsayılan olarak P/Invoke işlevi, kitaplığın yüklenecek geçerli çalışma dizini de dahil olmak üzere bir dizi dizini yoklayarak DllImportAttribute çalışır. Bu, belirli uygulamalar için dll ele geçirmesine yol açan bir güvenlik sorunu olabilir. |
CA5393: Güvenli olmayan DllImportSearchPath değeri kullanmayın | Varsayılan DLL arama dizinlerinde ve derleme dizinlerinde kötü amaçlı bir DLL olabilir. Ya da uygulamanızın nereden çalıştırıldığına bağlı olarak, uygulamanın dizininde kötü amaçlı bir DLL olabilir. |
CA5394: Güvenli olmayan rastgelelik kullanmayın | Kriptografik olarak zayıf bir sahte rastgele sayı oluşturucu kullanmak, saldırganın hangi güvenlik duyarlı değerin oluşturulacağını tahmin etmesine olanak tanıyabilir. |
CA5395: Eylem yöntemleri için HttpVerb özniteliğini kaçırma | Verileri oluşturan, düzenleyen, silen veya başka bir şekilde değiştiren tüm eylem yöntemlerinin siteler arası istek sahteciliği saldırılarına karşı koruma özniteliğiyle korunması gerekir. GET işlemi gerçekleştirmek, yan etkisi olmayan ve kalıcı verilerinizi değiştirmeyen güvenli bir işlem olmalıdır. |
CA5396: HttpCookie için HttpOnly değerini true olarak ayarlayın | Derinlemesine savunma önlemi olarak, güvenlik duyarlı HTTP tanımlama bilgilerinin HttpOnly olarak işaretlendiğinden emin olun. Bu, web tarayıcılarının betiklerin tanımlama bilgilerine erişmesine izin vermemesi gerektiğini gösterir. Eklenen kötü amaçlı betikler, tanımlama bilgilerini çalmanın yaygın bir yoludur. |
CA5397: Kullanım dışı bırakılmış SslProtocols değerlerini kullanmayın | Aktarım Katmanı Güvenliği (TLS), çoğunlukla Köprü Metni Aktarım Protokolü Güvenli (HTTPS) ile bilgisayarlar arasındaki iletişimin güvenliğini sağlar. TLS'nin eski protokol sürümleri TLS 1.2 ve TLS 1.3'ten daha az güvenlidir ve yeni güvenlik açıklarına sahip olma olasılığı daha yüksektir. Riski en aza indirmek için eski protokol sürümlerinden kaçının. |
CA5398: Sabit kodlanmış SslProtocols değerlerinden kaçının | Aktarım Katmanı Güvenliği (TLS), çoğunlukla Köprü Metni Aktarım Protokolü Güvenli (HTTPS) ile bilgisayarlar arasındaki iletişimin güvenliğini sağlar. TlS 1.0 ve TLS 1.1 protokol sürümleri kullanım dışı bırakılmıştır, TLS 1.2 ve TLS 1.3 ise günceldir. Gelecekte TLS 1.2 ve TLS 1.3 kullanım dışı bırakılabilir. Uygulamanızın güvenli kalmasını sağlamak için protokol sürümünü sabit kodlamaktan kaçının. |
CA5399: HttpClient sertifika iptal listesi denetimini kesinlikle devre dışı bırak | İptal edilen sertifikaya artık güvenilmiyor. Saldırganlar tarafından bazı kötü amaçlı verileri geçirirken veya HTTPS iletişiminde hassas verileri çalarken kullanılabilir. |
CA5400: HttpClient sertifika iptal listesi denetiminin devre dışı bırakılmadığından emin olun | İptal edilen sertifikaya artık güvenilmiyor. Saldırganlar tarafından bazı kötü amaçlı verileri geçirirken veya HTTPS iletişiminde hassas verileri çalarken kullanılabilir. |
CA5401: CreateEncryptor'ı varsayılan olmayan IV ile kullanmayın | Simetrik şifreleme, sözlük saldırılarını önlemek için her zaman tekrarlanamayan bir başlatma vektöru kullanmalıdır. |
CA5402: CreateEncryptor'ı varsayılan IV ile kullanma | Simetrik şifreleme, sözlük saldırılarını önlemek için her zaman tekrarlanamayan bir başlatma vektöru kullanmalıdır. |
CA5403: Sertifikayı sabit kodlamayın | data Veya X509Certificate oluşturucusunun or rawData X509Certificate2 parametresi sabit kodlanmış. |
CA5404: Belirteç doğrulama denetimlerini devre dışı bırakma | TokenValidationParameters belirteç doğrulamasını denetleyen özellikler olarak false ayarlanmamalıdır. |
CA5405: Temsilcilerde belirteç doğrulamayı her zaman atlamayın | öğesine atanan AudienceValidator veya LifetimeValidator her zaman geri çağırma döndürür true . |
IL3000: Tek bir dosya olarak yayımlarken Derleme dosya yoluna erişmekten kaçının | Tek bir dosya olarak yayımlarken Derleme dosya yoluna erişmekten kaçının. |
IL3001: Tek dosya olarak yayımlarken Derleme dosya yoluna erişmekten kaçının | Tek bir dosya olarak yayımlarken Derleme dosya yoluna erişmekten kaçının. |
IL3002: Tek bir dosya olarak yayımlarken 'RequiresAssemblyFilesAttribute' ek açıklamalı üyeleri çağırmaktan kaçının | Tek bir dosya olarak yayımlarken 'RequiresAssemblyFilesAttribute' ile açıklama eklenen üyeleri çağırmaktan kaçının |
IL3003: 'RequiresAssemblyFilesAttribute' ek açıklamaları tüm arabirim uygulamaları veya geçersiz kılmaları arasında eşleşmelidir. | 'RequiresAssemblyFilesAttribute' ek açıklamaları tüm arabirim uygulamaları veya geçersiz kılmaları arasında eşleşmelidir. |
Gösterge
Aşağıdaki tabloda, başvuru belgelerindeki her kural için sağlanan bilgi türü gösterilmektedir.
Öğe | Açıklama |
---|---|
Tür | Kuralın TypeName değeri. |
Kural Kimliği | Kuralın benzersiz tanımlayıcısı. RuleId ve Category, bir uyarının kaynak içi bastırılması için kullanılır. |
Kategori | Kuralın kategorisi, örneğin güvenlik. |
Hataya neden olan veya bozulmayan düzeltme | Kuralın ihlaline yönelik düzeltmenin hataya neden olan bir değişiklik olup olmadığı. Hataya neden olan değişiklik, ihlale neden olan hedefe bağımlılığı olan bir derlemenin yeni sabit sürümle yeniden derlenmeyeceği veya değişiklik nedeniyle çalışma zamanında başarısız olabileceği anlamına gelir. Birden çok düzeltme mevcut olduğunda ve en az bir düzeltme hataya neden olan bir değişiklik olduğunda ve bir düzeltme olmadığında hem 'Hataya Neden Olan' hem de 'Kırılmayan' belirtilir. |
Neden | Kuralın bir uyarı oluşturmasına neden olan belirli yönetilen kod. |
Açıklama | Uyarının arkasındaki sorunları açıklar. |
İhlalleri düzeltme | Kuralı karşılamak ve uyarı oluşturmasını önlemek için kaynak kodun nasıl değiştireceğini açıklar. |
Uyarıların ne zaman bastırılması gerekiyor? | Kuraldan gelen bir uyarıyı gizlemenin ne zaman güvenli olduğunu açıklar. |
Örnek kod | Kuralı ihlal eden örnekler ve kuralı karşılayan düzeltilmiş örnekler. |
İlgili kurallar | İlgili kurallar. |
GitHub'da bizimle işbirliği yapın
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.