Conjunto de reglas Reglas de corrección extendidas para código administrado

El conjunto de reglas Reglas de corrección extendida de Microsoft maximiza los errores de uso de la lógica y del marco notificados por el análisis de código. Se pone énfasis adicional en escenarios específicos, como la interoperabilidad COM y las aplicaciones móviles. Debe considerar incluir este conjunto de reglas si uno de estos escenarios se aplica al proyecto o para encontrar problemas adicionales en el proyecto.

El conjunto de reglas Reglas de corrección básicas de Microsoft incluye las reglas que están en el conjunto de reglas Reglas de corrección básica, que contiene las reglas que están en el conjunto de reglas Reglas recomendadas administradas.

En la tabla siguiente se describen todas las reglas del conjunto de reglas Reglas de corrección extendida de Microsoft.

Regla Descripción
CA1001 Los tipos que poseen campos descartables deben ser descartables
CA1009 Declarar los controladores de evento correctamente
CA1016 Marcar los ensamblados con AssemblyVersionAttribute
CA1033 Los tipos secundarios deben poder llamar a los métodos de interfaz
CA1049 Los tipos que poseen recursos nativos deben ser descartables
CA1060 Mover P/Invokes a la clase NativeMethods
CA1061 No ocultar métodos de clase base
CA1063 Implementar IDisposable correctamente
CA1065 No producir excepciones en ubicaciones inesperadas
CA1301 Evitar los aceleradores duplicados
CA1400 Debe haber puntos de entrada P/Invoke
CA1401 Los elementos P/Invoke no deben estar visibles
CA1403 Los tipos de diseño automático no deben ser visibles a través de COM
CA1404 Llamar a GetLastError inmediatamente después de P/Invoke
CA1405 Los tipos base de tipos visibles a través de COM deben ser visibles a través de COM
CA1410 Los métodos de registro COM deben coincidir
CA1415 Declarar elementos P/Invoke correctamente
CA1821 Quitar finalizadores vacíos
CA1900 Los campos de tipo de valor deben ser portátiles
CA1901 Las declaraciones P/Invoke deben ser portátiles
CA2002 No bloquear objetos con identidad débil
CA2100 Revisar consultas SQL para comprobar si tienen vulnerabilidades de seguridad
CA2101 Especificar serialización en argumentos de cadena P/Invoke
CA2108 Revisar la seguridad declarativa en los tipos de valores
CA2111 Los punteros no deben estar visibles
CA2112 Los tipos seguros no deben exponer campos
CA2114 La seguridad del método debe ser un supraconjunto del tipo
CA2116 Los métodos APTCA deben llamar solo a métodos APTCA
CA2117 Los tipos APTCA solo amplían tipos base APTCA
CA2122 No exponer indirectamente métodos con peticiones de vínculos
CA2123 Las peticiones de vínculos de invalidaciones deben ser idénticas a la base
CA2124 Incluir cláusulas finally vulnerables en un bloque try externo
CA2126 Las peticiones de vínculos de tipos requieren peticiones de herencias
CA2131 Los tipos críticos para la seguridad no pueden participar en la equivalencia de tipos
CA2132 Los constructores predeterminados deben ser al menos tan críticos para la seguridad como los constructores predeterminados de tipo base
CA2133 Los delegados deben enlazarse a métodos con una transparencia coherente
CA2134 Los métodos deben mantener una transparencia coherente al invalidar métodos base
CA2137 Los métodos transparentes deben contener solo IL que se pueda comprobar
CA2138 Los métodos transparentes no deben llamar a métodos con el atributo SuppressUnmanagedCodeSecurity
CA2140 El código transparente no debe hacer referencia a elementos críticos para la seguridad
CA2141 Los métodos transparentes no deben satisfacer LinkDemands
CA2146 Los tipos deben ser al menos tan críticos para la seguridad como sus interfaces y tipos base
CA2147 Los métodos transparentes no pueden usar aserciones de seguridad
CA2149 Los métodos transparentes no deben llamar a código nativo
CA2200 Reiniciar para mantener los detalles de la pila
CA2202 No usar Dispose varias veces en objetos
CA2207 Inicializar campos estáticos de tipo de valor insertados
CA2212 No marcar los componentes con servicio como WebMethod
CA2213 Los campos descartables deben ser descartables
CA2214 No llamar a métodos reemplazables en constructores
CA2216 Los tipos descartables deben declarar el finalizador
CA2220 Los finalizadores deben llamar al finalizador de la clase base
CA2229 Implementar constructores de serialización
CA2231 Sobrecargar el operador equals al invalidar ValueType.Equals
CA2232 Marcar puntos de entrada de Windows Forms con STAThread
CA2235 Marcar todos los campos no serializables
CA2236 Llamar a métodos de clase base en tipos ISerializable
CA2237 Marcar los tipos ISerializable con SerializableAttribute
CA2238 Implementar métodos de serialización correctamente
CA2240 Implementar ISerializable correctamente
CA2241 Proporcionar argumentos correctos a los métodos de formato
CA2242 Comprobar NaN correctamente
CA1008 Las enumeraciones deben tener un valor igual a cero
CA1013 El operador de sobrecarga es igual que la suma y resta de sobrecarga
CA1303 No pasar literales como parámetros localizados
CA1308 Normalizar cadenas en mayúsculas
CA1806 No omitir resultados del método
CA1816 Llamar a GC.SuppressFinalize correctamente
CA1819 Las propiedades no deben devolver matrices
CA1820 Comprobar si las cadenas están vacías mediante la longitud de cadena
CA1903 Usar solo API de la versión de .NET Framework de destino
CA2004 Quitar las llamadas a GC.KeepAlive
CA2006 Utilizar SafeHandle para encapsular recursos nativos
CA2102 Detectar las excepciones que no son CLSCompliant en los controladores generales
CA2104 No declarar tipos de referencias mutables de solo lectura
CA2105 Los campos de matrices no deben ser de solo lectura
CA2106 Proteger las aserciones
CA2115 Llamar a Call GC.KeepAlive cuando se utilicen recursos nativos
CA2119 Sellar los métodos que satisfacen las interfaces privadas
CA2120 Proteger los constructores de serializaciones
CA2121 Los constructores estáticos deben ser privados
CA2130 Las constantes críticas para la seguridad deben ser transparentes
CA2205 Utilizar equivalentes administrados de la API Win32
CA2215 Los métodos Dispose deben llamar al método Dispose de la clase base
CA2221 Los finalizadores deben estar protegidos
CA2222 No disminuir la visibilidad del miembro heredado
CA2223 Los miembros deben diferenciarse por algo más que por un tipo de valor devuelto
CA2224 Invalidar Equals al sobrecargar operadores de igualdad
CA2226 Los operadores deben tener sobrecargas simétricas
CA2227 Las propiedades de la colección deben ser de solo lectura
CA2239 Proporcionar métodos de deserialización para campos opcionales
CA1032 Implementar constructores de excepción estándar
CA1054 Los parámetros de URI no deben ser cadenas
CA1055 Los valores devueltos URI no deben ser cadenas
CA1056 Las propiedades URI no deben ser cadenas
CA1057 Las sobrecargas URI de cadena llaman a sobrecargas System.Uri
CA1402 Evitar las sobrecargas en interfaces visibles a través de COM
CA1406 Evitar los argumentos Int64 en clientes Visual Basic 6
CA1407 Evitar los miembros estáticos en tipos visibles a través de COM
CA1408 No utilizar AutoDual ClassInterfaceType
CA1409 Los tipos visibles a través de COM se deben poder crear
CA1411 Los métodos de registro COM no deben ser visibles
CA1412 Marcar las interfaces ComSource como IDispatch
CA1413 Evitar los campos no públicos en tipos de valor visibles a través de COM
CA1414 Marcar los argumentos P/Invoke booleanos con MarshalAs
CA1600 No utilizar la prioridad del proceso inactiva
CA1601 No utilizar temporizadores que impidan los cambios de estado de energía
CA1824 Marcar los ensamblados con NeutralResourcesLanguageAttribute
CA2001 Evitar llamar a métodos problemáticos
CA2003 No tratar fibras como subprocesos
CA2135 Los ensamblados de nivel 2 no deben contener LinkDemands
CA2136 Los miembros no deben tener anotaciones de transparencia en conflicto
CA2139 Los métodos transparentes no pueden usar el atributo HandleProcessCorruptingExceptions
CA2142 El código transparente no debe protegerse con LinkDemands
CA2143 Los métodos transparentes no deben usar peticiones de seguridad
CA2144 El código transparente no debe cargar ensamblados desde matrices de bytes
CA2145 Los métodos transparentes no deben ser representativos con el atributo SuppressUnmanagedCodeSecurityAttribute
CA2204 Los literales deben estar escritos correctamente
CA2211 Los campos no constantes no deben ser visibles
CA2217 No marcar enumeraciones con FlagsAttribute
CA2218 Invalidar el método GetHashCode al invalidar el método Equals
CA2219 No producir excepciones en cláusulas de excepción
CA2225 Las sobrecargas del operador tienen alternativas con nombre
CA2228 No enviar formatos de recursos no lanzados
CA2230 Usar parámetros en argumentos de variable
CA2233 Las operaciones no deben desbordarse
CA2234 Pasar objetos System.Uri en lugar de cadenas
CA2243 Los literales de cadena de atributo se deben analizar correctamente