CA1801: Revisar parámetros sin utilizar
Propiedad | Value |
---|---|
Identificador de la regla | CA1801 |
Título | Revisar parámetros sin utilizar |
Categoría | Uso |
La corrección es problemática o no problemática | No problemática: si el miembro no es visible fuera del ensamblado, independientemente del cambio que realice. No problemática: si cambia el miembro para usar el parámetro dentro de su cuerpo. Problemática: si quita el parámetro y es visible fuera del ensamblado. |
Habilitado de forma predeterminada en .NET 8 | No |
Causa
Una firma de método incluye un parámetro que no se utiliza en el cuerpo del método.
Esta regla no examina los siguientes tipos de métodos:
Métodos a los que hace referencia un delegado.
Métodos usados como controladores de eventos.
Constructores de serialización (vea las instrucciones).
Métodos de serialización GetObjectData.
Métodos declarados con el modificador
abstract
(MustOverride
en Visual Basic).Métodos declarados con el modificador
virtual
(Overridable
en Visual Basic).Métodos declarados con el modificador
override
(Overrides
en Visual Basic).Métodos declarados con el modificador
extern
(instrucciónDeclare
en Visual Basic).
Esta regla no marca los parámetros que se denominan con el símbolo de descarte (por ejemplo, _
, _1
y _2
). Esto reduce el ruido de advertencia en los parámetros necesarios para los requisitos de firma; por ejemplo, un método que se usa como delegado, un parámetro con atributos especiales o un parámetro a cuyo valor un marco accede implícitamente en tiempo de ejecución, pero al que no se hace referencia en el código.
Nota
La regla ha quedado en desuso y se ha reemplazado por IDE0060. Para obtener información sobre cómo aplicar el analizador de IDE0060 en la compilación, vea Análisis de estilo de código.
Descripción de la regla
Revise los parámetros de los métodos no virtuales que no se usan en el cuerpo del método para asegurarse de que no existe ninguna incorrección entorno al error de acceso. Los parámetros sin usar incurren en costos de mantenimiento y rendimiento.
A veces, una infracción de esta regla puede apuntar a un error de implementación en el método. Por ejemplo, el parámetro se debería haber utilizado en el cuerpo del método. Suprima las advertencias de esta regla si el parámetro debe existir debido a la compatibilidad con versiones anteriores.
Cómo corregir infracciones
Para corregir una infracción de esta regla, quite el parámetro sin usar (una corrección problemática) o use el parámetro en el cuerpo del método (una corrección no problemática).
Cuándo suprimir las advertencias
Se puede suprimir una advertencia de esta regla:
En código enviado previamente para el que la corrección sea problemática.
En el parámetro
this
de un método de extensión personalizado para Microsoft.VisualStudio.TestTools.UnitTesting.Assert. Las funciones de la clase Assert son estáticas, por lo que no es necesario acceder al parámetrothis
en el cuerpo del método.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA1801
// The code that's violating the rule is on this line.
#pragma warning restore CA1801
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA1801.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.
Configuración del código para analizar
Use la opción siguiente para configurar en qué partes del código base ejecutar esta regla.
Puede configurar esta opción solo para esta regla, para todas las reglas a las que se aplica o para todas las reglas de esta categoría (Rendimiento) a las que se aplica. Para más información, vea Opciones de configuración de reglas de calidad de código.
Incluir superficies de API específicas
Puede configurar en qué partes del código base ejecutar esta regla, en función de su accesibilidad. Por ejemplo, para especificar que la regla solo se debe ejecutar en la superficie de API no públicas, agregue el siguiente par clave-valor a un archivo .editorconfig en el proyecto:
dotnet_code_quality.CAXXXX.api_surface = private, internal
De forma predeterminada, la regla CA1801 se aplica a todas las superficies de API (públicas, internas y privadas).
Ejemplo
En el ejemplo siguiente se muestran dos métodos. Un método infringe la regla, y el otro la cumple.
// 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);
}