Share via


Advertencias sobre uso

Las advertencias de uso admiten el uso apropiado de .NET Framework.

En esta sección

Regla

Descripción

CA1801: Revisar parámetros sin utilizar

Una firma de método incluye un parámetro que no se utiliza en el cuerpo del método.

CA1806: No omitir resultados del método

Se crea un nuevo objeto pero nunca se utiliza, o se llama a un método que crea y devuelve una nueva cadena y esta nunca se utiliza, o un método COM o P/Invoke devuelve un código de error o HRESULT que nunca se utiliza.

CA1816: Llamar a GC.SuppressFinalize correctamente

Un método que es una implementación de Dispose no llama a GC.SuppressFinalize, o un método que no es una implementación de Dispose llama a GC.SuppressFinalize, o un método llama a GC.SuppressFinalize y pasa algo distinto de "this" (Me en Visual Basic).

CA2200: Iniciar de nuevo para preservar los detalles de la pila

Se vuelve a producir una excepción y se especifica explícitamente en la instrucción throw.Si se vuelve a producir una excepción especificándola en la instrucción throw, se pierde la lista de llamadas al método entre el método original que produjo la excepción y el método actual.

CA2201: No provocar tipos de excepción reservados

Esto hace que el error original sea difícil de detectar y depurar.

CA2202: No aplicar Dispose a los objetos varias veces

La implementación de un método contiene rutas de acceso del código que podrían provocar varias llamadas a System.IDisposable.Dispose o a un equivalente de Dispose (como un método Close() en algunos tipos) en el mismo objeto.

CA2204: Debe escribir correctamente los literales

Una cadena literal en el cuerpo de un método contiene una o varias palabras que la biblioteca de correctores ortográficos de Microsoft no reconoce.

CA2205: Utilizar equivalentes administrados de la API Win32

Se define un método de invocación de plataforma y hay un método con la funcionalidad equivalente en la biblioteca de clases de .NET Framework.

CA2207: Inicializar campos estáticos de tipo de valor insertados

Un tipo de valor declara un constructor estático explícito.Para corregir una infracción de esta regla, inicialice todos los datos estáticos cuando se declara y quite el constructor estático.

CA2208: Crear instancias de las excepciones del argumento correctamente

Se realiza una llamada al constructor predeterminado (sin parámetros) de un tipo de excepción que es o deriva de ArgumentException, o se pasa un argumento de cadena incorrecto a un constructor parametrizado de un tipo de excepción que es o deriva de ArgumentException.

CA2211: Los campos no constantes no deben ser visibles

Los campos estáticos que no son constantes ni de sólo lectura no son seguros para subprocesos.Obtener acceso a este tipo de campo se debe controlar cuidadosamente y requiere técnicas de programación avanzadas para sincronizar el acceso al objeto de clase.

CA2212: No marcar los componentes con servicio como WebMethod

Un método en un tipo que hereda de System.EnterpriseServices.ServicedComponent está marcado con System.Web.Services.WebMethodAttribute.Dado que un método ServicedComponent y WebMethodAttribute tienen comportamientos y requisitos conflictivos para el flujo de transacción y el contexto, el comportamiento del método es incorrecto en algunas situaciones.

CA2213: Aplique Dispose a los campos a los que se pueda

Un tipo que implementa System.IDisposable declara campos que son de tipos que también implementan IDisposable.El método Dispose del tipo declarativo no llama al método Dispose del campo.

CA2214: No llamar a métodos reemplazables en constructores

Cuando un constructor llama a un método virtual, es posible que no se haya ejecutado el constructor para la instancia que invoca el método.

CA2215: Los métodos Dispose deben llamar a Dispose de clase base

Si un tipo hereda de un tipo descartable, debe llamar al método Dispose del tipo base desde su propio método Dispose.

CA2216: Los tipos descartables deben declarar el finalizador

Un tipo que implementa System.IDisposable y tiene campos que sugieren el uso de recursos no administrados, no implementa un finalizador descrito por Object.Finalize.

CA2217: No marcar enumeraciones con FlagsAttribute

Una enumeración visible externamente está marcada con FlagsAttribute y tiene uno o varios valores que no son potencias de dos o una combinación de los otros valores definidos en la enumeración.

CA2218: Reemplazar el método GetHashCode al reemplazar el método Equals

GetHashCode devuelve un valor basado en la instancia actual que es adecuado para los algoritmos hash y las estructuras de datos como una tabla hash.Dos objetos que son del mismo tipo y son iguales deben devolver el mismo código hash.

CA2219: No producir excepciones en cláusulas de excepción

Cuando se genera una excepción en una cláusula finally o fault, la nueva excepción oculta la excepción activa.Cuando se genera una excepción en una cláusula filter, el runtime la detecta automáticamente.Esto hace que el error original sea difícil de detectar y depurar.

CA2220: Los finalizadores deben llamar al finalizador de la clase base

La finalización se debe difundir a través de la jerarquía de herencia.Para garantizar esto, los tipos deben llamar a su método Finalize de clase base en su propio método Finalize.

CA2221: Debe proteger los finalizadores

Los finalizadores deben utilizar el modificador de acceso de familia.

CA2222: No reducir la visibilidad del miembro heredado

No debería cambiar el modificador de acceso para los miembros heredados.Cambiando un miembro heredado a privado no evita que los llamadores tengan acceso a la implementación de la clase base del método.

CA2223: Los miembros deben diferenciarse por algo más que por un tipo de valor devuelto

Aunque Common Language Runtime permite utilizar tipos de valor devuelto para diferenciar miembros idénticos, esta característica no se encuentra en Common Language Specification ni es una característica común de los lenguajes de programación de .NET.

CA2224: Reemplazar Equals al sobrecargar operadores de igualdad

Un tipo público implementa el operador de igualdad, pero no reemplaza Object.Equals.

CA2225: Las sobrecargas del operador tienen alternativas con nombre

Se detectó una sobrecarga del operador y no se encontró el método alternativo con el nombre esperado.El miembro alternativo con nombre proporciona acceso a la misma funcionalidad que el operador; esto se hace para los desarrolladores que programan en lenguajes que no admiten operadores sobrecargados.

CA2226: Los operadores deben tener sobrecargar simétricas

Un tipo implementa el operador de igualdad o de desigualdad y no implementa el operador opuesto.

CA2227: Las propiedades de la colección deben ser de solo lectura

Una propiedad de colección grabable permite al usuario reemplazar la colección por otra diferente.Una propiedad de sólo lectura impide que la colección se reemplace, pero sí permite establecer miembros individuales.

CA2228: No enviar formatos de recursos no lanzados

Las versiones admitidas de .NET Framework no podrían utilizar los archivos de recursos compilados con versiones preliminares de .NET Framework.

CA2229: Implementar constructores de serialización

Para corregir una infracción de esta regla, implemente el constructor de serialización.Para una clase sellada, marque el constructor como privado; de lo contrario, márquelo como protegido.

CA2230: Usar parámetros para argumentos de variable

Un tipo público o protegido contiene un método público o protegido que utiliza la convención de llamada VarArgs en lugar de la palabra clave params.

CA2231: Sobrecargar el operador de igualdad al reemplazar el tipo de valor de igualdad

Un tipo de valor reemplaza Object.Equals pero no implementa el operador de igualdad.

CA2232: Marcar puntos de entrada de Windows Forms con STAThread

STAThreadAttribute indica que el modelo de subprocesos de COM para la aplicación es un contenedor uniproceso.Este atributo debe estar presente en el punto de entrada de cualquier aplicación que utilice Formularios Windows Forms; si se omite, los componentes de Windows podrían no funcionar correctamente.

CA2233: Las operaciones no deben desbordarse

Las operaciones aritméticas no deben realizarse sin validar primero los operandos para asegurarse de que el resultado de la operación no se encuentra fuera del intervalo de valores posible de los tipos de datos que se utilicen.

CA2234: Pase objetos System.Uri en lugar de cadenas

Se realiza una llamada a un método que tiene un parámetro de cadena cuyo nombre contiene "uri", "URI", "urn", "URN", "url" o "URL".El tipo declarativo del método contiene una sobrecarga de método correspondiente que tiene un parámetro System.Uri.

CA2235: Marcar todos los campos no serializables

Un campo de instancia de un tipo que no es serializable se declara en un tipo que es serializable.

LCA2236: Llamar a métodos de clase base en tipos ISerializable

Para corregir una infracción de esta regla, llame al método de tipo base GetObjectData o al constructor de serialización desde el constructor o el método de tipo derivado correspondiente.

CA2237: Marcar los tipos ISerializable con SerializableAttribute

Para que los tipos sean reconocidos como serializables por Common Language Runtime, deben estar marcados con el atributo SerializableAttribute incluso si el tipo utiliza una rutina de serialización personalizada a través de la implementación de la interfaz ISerializable.

CA2238: Implementar los métodos de serialización de forma correcta

Un método que controla un evento de serialización no especifica la firma correcta, el tipo de valor devuelto ni la visibilidad.

CA2239: Proporcionar métodos de deserialización para campos opcionales

Un tipo tiene un campo que está marcado con el atributo System.Runtime.Serialization.OptionalFieldAttribute y el tipo no proporciona métodos de control de eventos de deserialización.

CA2240: Implementar ISerializable correctamente

Para corregir una infracción de esta regla, haga que el método GetObjectData sea visible y reemplazable, y asegúrese de que todos los campos de instancia se incluyan en el proceso de serialización o se marquen explícitamente con el atributo NonSerializedAttribute.

CA2241: Proporcionar argumentos correctos para los métodos de formato

El argumento format pasado a System.String.Format no contiene un elemento de formato que corresponda a cada argumento de objeto o viceversa.

CA2242: Prueba para NaN correcta

Esta expresión prueba un valor respecto a Single.Nan o Double.Nan.Utilice IsNan(Single) o Double.IsNan(Double) para probar el valor.

CA2243: Los literales de cadena de atributo se deben analizar correctamente

El parámetro de literal de cadena de un atributo no se analiza correctamente para una dirección URL, un GUID o una versión.