CA1801: Kullanılmayan parametreleri gözden geçir
Özellik | Değer |
---|---|
Kural Kimliği | CA1801 |
Başlık | Kullanılmayan parametreleri gözden geçirin |
Kategori | Kullanım |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan - Yaptığınız değişiklik ne olursa olsun üye derlemenin dışında görünmüyorsa. Hataya neden olmayan - Üyeyi gövdesinde parametresini kullanacak şekilde değiştirirseniz. Breaking - Parametresini kaldırırsanız ve derlemenin dışında görünür durumdaysa. |
.NET 9'da varsayılan olarak etkin | Hayır |
Neden
Yöntem imzası, yöntem gövdesinde kullanılmayan bir parametre içerir.
Bu kural aşağıdaki yöntem türlerini incelemez:
Temsilci tarafından başvuruda olunan yöntemler.
Olay işleyicisi olarak kullanılan yöntemler.
Serileştirme oluşturucuları (yönergelere bakın).
Serileştirme GetObjectData yöntemleri.
(
MustOverride
Visual Basic'te) değiştiricisiabstract
ile bildirilen yöntemler.(
Overridable
Visual Basic'te) değiştiricisivirtual
ile bildirilen yöntemler.(
Overrides
Visual Basic'te) değiştiricisioverride
ile bildirilen yöntemler.Visual Basic'te (
Declare
deyimi) değiştiricisiextern
ile bildirilen yöntemler.
Bu kural, atma simgesiyle adlandırılan parametrelere bayrak eklemez, örneğin, _
, _1
ve _2
. Bu, imza gereksinimleri için gereken parametrelerde uyarı gürültüsünü azaltır; örneğin, temsilci olarak kullanılan bir yöntem, özel özniteliklere sahip bir parametre veya çalışma zamanında değerine bir çerçeve tarafından örtük olarak erişilen ancak kodda başvurulmayan bir parametre.
Not
Bu kural IDE0060 lehine kullanım dışı bırakılmıştır. derlemede IDE0060 çözümleyicisini zorlama hakkında bilgi için bkz . kod stili çözümleme.
Kural açıklaması
Sanal olmayan yöntemlerde bulunan ve yöntem gövdesinde kullanılmayan parametreleri gözden geçirerek bunlara erişilememesiyle ilgili bir yanlışlık olmadığından emin olun. Kullanılmayan parametreler bakım ve performans maliyetlerine neden olur.
Bazen, bu kuralın ihlali yöntemindeki bir uygulama hatasına işaret edebilir. Örneğin, parametre yöntem gövdesinde kullanılmış olmalıdır. Parametrenin geriye dönük uyumluluk nedeniyle mevcut olması gerekiyorsa bu kuralın uyarılarını bastırın.
İhlalleri düzeltme
Bu kuralın ihlalini düzeltmek için kullanılmayan parametreyi kaldırın (hataya neden olan bir değişiklik) veya yöntem gövdesinde parametresini kullanın (hataya neden olmayan bir değişiklik).
Uyarıların ne zaman bastırılması gerekiyor?
Bu kuraldan bir uyarıyı engellemek güvenlidir:
Daha önce gönderilen ve düzeltmenin hataya neden olacak kodda.
this
için özel bir uzantı yöntemindeki parametresi içinMicrosoft.VisualStudio.TestTools.UnitTesting.Assert. sınıfındaki Assert işlevler statiktir, bu nedenle yöntem gövdesinde parametresinethis
erişmeye gerek yoktur.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA1801
// The code that's violating the rule is on this line.
#pragma warning restore CA1801
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1801.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Çözümlemek için kod yapılandırma
Bu kuralın kod tabanınızın hangi bölümlerinde çalıştırılacaklarını yapılandırmak için aşağıdaki seçeneği kullanın.
Bu seçeneği yalnızca bu kural için, geçerli olduğu tüm kurallar için veya bu kategorideki (Performans) tüm kurallar için yapılandırabilirsiniz. Daha fazla bilgi için bkz . Kod kalitesi kuralı yapılandırma seçenekleri.
Belirli API yüzeylerini ekleme
Bu kuralın üzerinde çalıştırılacak kod tabanınızın hangi bölümlerini erişilebilirliklerine göre yapılandırabilirsiniz. Örneğin, kuralın yalnızca genel olmayan API yüzeyinde çalıştırılması gerektiğini belirtmek için projenizdeki bir .editorconfig dosyasına aşağıdaki anahtar-değer çiftini ekleyin:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Varsayılan olarak, CA1801 kuralı tüm API yüzeyleri (genel, iç ve özel) için geçerlidir.
Örnek
Aşağıdaki örnekte iki yöntem gösterilmektedir. Bir yöntem kuralı ihlal eder ve diğer yöntem kuralı karşılar.
// This method violates the rule.
public static string GetSomething(int first, int second)
{
return first.ToString(CultureInfo.InvariantCulture);
}
// This method satisfies the rule.
public static string GetSomethingElse(int first)
{
return first.ToString(CultureInfo.InvariantCulture);
}