Share via


CA1801: A nem használt paraméterek áttekintése

Tulajdonság Érték
Szabályazonosító CA1801
Cím A nem használt paraméterek áttekintése
Kategória Használat
A javítás kompatibilitástörő vagy nem törik Nem törés – Ha a tag nem látható a szerelvényen kívül, a módosítástól függetlenül.

Nem törés – Ha módosítja a tagot a paraméter törzsén belüli használatára.

Törés – Ha eltávolítja a paramétert, és az a szerelvényen kívül látható.
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

A metódusadák olyan paramétert tartalmaznak, amelyet nem használnak a metódus törzsében.

Ez a szabály nem vizsgálja a következő módszereket:

  • Meghatalmazott által hivatkozott metódusok.

  • Eseménykezelőként használt metódusok.

  • Szerializálási konstruktorok (lásd az irányelveket).

  • Szerializálási GetObjectData módszerek.

  • A (MustOverrideVisual Basic) módosítóval abstract deklarált metódusok.

  • A (OverridableVisual Basic) módosítóval virtual deklarált metódusok.

  • A (OverridesVisual Basic) módosítóval override deklarált metódusok.

  • A (DeclareVisual Basic) módosítóval deklarált extern metódusok.

Ez a szabály nem jelöli meg az elvetés szimbólummal elnevezett paramétereket, _például , _1és _2. Ez csökkenti az aláírási követelményekhez szükséges paraméterek figyelmeztetési zaját, például egy delegáltként használt metódust, egy speciális attribútumokkal rendelkező paramétert, vagy egy olyan paramétert, amelynek az értékét implicit módon éri el egy keretrendszer, de a kód nem hivatkozik rá.

Megjegyzés:

Ez a szabály elavult a IDE0060 javára. A IDE0060-elemző buildben való kikényszerítésével kapcsolatos további információkért lásd a kódstílus-elemzést.

Szabály leírása

Tekintse át a nem virtuális metódusok azon paramétereit, amelyeket a metódus törzsében nem használnak annak ellenőrzésére, hogy nem áll-e fenn helytelenség a hozzáférésük sikertelensége miatt. A nem használt paraméterek karbantartási és teljesítményköltségeket vonnak maga után.

Előfordulhat, hogy a szabály megsértése egy implementációs hibára mutat a metódusban. A paramétert például a metódus törzsében kellett volna használni. A szabály figyelmeztetéseinek mellőzése, ha a paraméternek a visszamenőleges kompatibilitás miatt kell léteznie.

Szabálysértések kijavítása

A szabály megsértésének kijavításához távolítsa el a nem használt paramétert (kompatibilitástörő változás), vagy használja a paramétert a metódus törzsében (nem törhető változás).

Mikor kell letiltani a figyelmeztetéseket?

A szabály figyelmeztetését nyugodtan letilthatja:

  • A korábban kiszállított kódban, amelynek javítása kompatibilitástörő változás lenne.

  • this A paraméter egy egyéni bővítménymetódusban a következőhözMicrosoft.VisualStudio.TestTools.UnitTesting.Assert: . Az osztály függvényei Assert statikusak, ezért nem szükséges hozzáférni a this paraméterhez a metódus törzsében.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

#pragma warning disable CA1801
// The code that's violating the rule is on this line.
#pragma warning restore CA1801

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_diagnostic.CA1801.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.

Kód konfigurálása elemzéshez

A következő beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa ezt a szabályt.

Ezt a beállítást konfigurálhatja csak erre a szabályra, az összes szabályra, vagy az ebben a kategóriában (Teljesítmény) érvényes összes szabályra. További információ: Kódminőségi szabály konfigurációs beállításai.

Adott API-felületek belefoglalása

A kódbázis azon részeit konfigurálhatja, amelyeken futtathatja ezt a szabályt az akadálymentességük alapján. Ha például meg szeretné adni, hogy a szabály csak a nem nyilvános API-felületen fusson, adja hozzá a következő kulcs-érték párot a projekt egyik .editorconfig fájljához:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Alapértelmezés szerint a CA1801 szabály minden API-felületre (nyilvános, belső és privát) érvényes.

Példa

Az alábbi példa két módszert mutat be. Az egyik metódus megsérti a szabályt, a másik pedig megfelel a szabálynak.

// 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);
}