Aracılığıyla paylaş


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ştiricisi abstract ile bildirilen yöntemler.

  • (Overridable Visual Basic'te) değiştiricisi virtual ile bildirilen yöntemler.

  • (Overrides Visual Basic'te) değiştiricisi override ile bildirilen yöntemler.

  • Visual Basic'te (Declare deyimi) değiştiricisi extern ile bildirilen yöntemler.

Bu kural, atma simgesiyle adlandırılan parametrelere bayrak eklemez, örneğin, _, _1ve _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 parametresine this 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);
}