Conjunto de reglas Reglas de directrices de diseño ampliadas para código administrado

El conjunto de reglas de directrices de diseño extendidas de Microsoft amplía las reglas de directrices de diseño básicas para maximizar las soluciones a las incidencias de facilidad de uso y capacidad de mantenimiento notificadas. Se pone especial énfasis en las directrices de nomenclatura. Debe considerar incluir este conjunto de reglas si el proyecto incluye código de bibliotecas o si desea exigir los más altos estándares para escribir código fácil de mantener.

Las reglas de directrices de diseño extendidas incluyen todas las reglas del conjunto de reglas de directrices de diseño básicas, que incluye las reglas del conjunto de reglas recomendadas administradas.

En la tabla siguiente se describen todas las reglas del conjunto de reglas de directrices de diseño extendidas 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
CA1000 No declarar miembros estáticos en tipos genéricos
CA1002 No exponer listas genéricas
CA1003 Utilizar instancias genéricas de controlador de eventos
CA1004 Los métodos genéricos deben proporcionar un parámetro de tipo
CA1005 Evitar los parámetros excesivos en tipos genéricos
CA1006 No anidar tipos genéricos en signaturas de miembro
CA1007 Utilizar valores genéricos cuando sea posible
CA1008 Las enumeraciones deben tener un valor igual a cero
CA1010 Las colecciones deben implementar la interfaz genérica
CA1011 Considerar pasar los tipos base como parámetros
CA1012 Los tipos abstractos no deberían tener constructores
CA1013 El operador de sobrecarga es igual que la suma y resta de sobrecarga
CA1014 Marcar los ensamblados con CLSCompliantAttribute
CA1017 Marcar los ensamblados con ComVisibleAttribute
CA1018 Marcar atributos con AttributeUsageAttribute
CA1019 Definir descriptores de acceso para los argumentos de atributo
CA1023 Los indizadores no deben ser multidimensionales
CA1024 Utilizar las propiedades donde corresponda
CA1025 Reemplazar argumentos repetitivos por una matriz de parámetros
CA1026 No deben usarse parámetros predeterminados
CA1027 Marcar enumeraciones con FlagsAttribute
CA1028 El almacenamiento de la enumeración debe ser de tipo Int32
CA1030 Utilizar eventos cuando sea apropiado
CA1031 No capturar los tipos de excepción general
CA1032 Implementar constructores de excepción estándar
CA1034 Los tipos anidados no deben ser visibles
CA1035 Las implementaciones de ICollection tienen miembros fuertemente tipados
CA1036 Invalidar métodos en tipos comparables
CA1038 Los enumeradores deben estar fuertemente tipados
CA1039 Las listas están fuertemente tipadas
CA1041 Proporcionar un mensaje ObsoleteAttribute
CA1043 Utilizar un argumento integral o de cadena en indizadores
CA1044 Las propiedades no deben ser de solo escritura
CA1046 No sobrecargar el operador de igualdad en los tipos de referencia
CA1047 No declarar miembros protegidos en tipos sellados
CA1048 No declarar miembros virtuales en tipos sellados
CA1050 Declarar tipos en espacios de nombres
CA1051 No declarar campos de instancia visibles
CA1052 Los tipos titulares estáticos deben estar sellados
CA1053 Los tipos titulares estáticos no deben tener constructores
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
CA1058 Los tipos no deben ampliar ciertos tipos base
CA1059 Los miembros no deben exponer algunos tipos concretos
CA1064 Las excepciones deben ser públicas
CA1500 Los nombres de las variables no deben coincidir con los nombres de los campos
CA1502 Evitar una complejidad excesiva
CA1708 Los identificadores se deben diferenciar en algo más que en el uso de mayúsculas y minúsculas
CA1716 Los identificadores no deben coincidir con palabras clave
CA1801 Revisar parámetros sin utilizar
CA1804 Quitar variables locales no utilizadas
CA1809 Evitar las variables locales excesivas
CA1810 Inicializar campos estáticos de tipo de referencia insertados
CA1811 Evitar código privado al que no se llama
CA1812 Evitar las clases internas sin instancia
CA1813 Evitar los atributos no sellados
CA1814 Preferir matrices escalonadas antes que multidimensionales
CA1815 Invalidar Equals y el operador Equals en los tipos de valores
CA1819 Las propiedades no deben devolver matrices
CA1820 Comprobar si las cadenas están vacías mediante la longitud de cadena
CA1822 Marcar miembros como estáticos
CA1823 Evitar los campos privados sin utilizar
CA2201 No provocar tipos de excepción reservados
CA2205 Utilizar equivalentes administrados de la API Win32
CA2208 Crear instancias de las excepciones del argumento correctamente
CA2211 Los campos no constantes no deben ser visibles
CA2217 No marcar enumeraciones con FlagsAttribute
CA2219 No producir excepciones en cláusulas de excepción
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
CA2225 Las sobrecargas del operador tienen alternativas con nombre
CA2226 Los operadores deben tener sobrecargas simétricas
CA2227 Las propiedades de la colección deben ser de solo lectura
CA2230 Usar parámetros en argumentos de variable
CA2234 Pasar objetos System.Uri en lugar de cadenas
CA2239 Proporcionar métodos de deserialización para campos opcionales
CA1020 Evitar los espacios de nombres con pocos tipos
CA1021 Evitar los parámetros out
CA1040 Evitar las interfaces vacías
CA1045 No pasar tipos por referencia
CA1062 Validar argumentos de métodos públicos
CA1501 Evitar una herencia excesiva
CA1504 Revisar los nombres de campos erróneos
CA1505 Evitar código que no se puede mantener
CA1506 Evitar el acoplamiento excesivo de clases
CA1700 No nombrar valores de enumeración como 'Reserved'
CA1701 En las palabras compuestas de la cadena de recursos se deben utilizar mayúsculas y minúsculas correctamente
CA1702 En las palabras compuestas se deben utilizar mayúsculas y minúsculas correctamente
CA1703 La ortografía de las cadenas de recursos debe ser correcta
CA1704 La ortografía de los identificadores debe ser correcta
CA1707 Los identificadores no deben contener caracteres de subrayado
CA1709 Los identificadores deben utilizar las mayúsculas y minúsculas correctamente
CA1710 Los identificadores deben tener un sufijo correcto
CA1711 Los identificadores no deben tener un sufijo incorrecto
CA1712 No utilizar prefijos en valores de enumeración con el nombre del tipo
CA1713 Los eventos no deben tener prefijos antes ni después
CA1714 Las enumeraciones Flags deben tener nombres en plural
CA1715 Los identificadores deben tener el prefijo correcto
CA1717 Solo las enumeraciones FlagsAttribute deben tener nombres en plural
CA1719 Los nombres de parámetro no deben coincidir con los nombres de miembro
CA1720 Los identificadores no deben contener nombres de tipo
CA1721 Los nombres de propiedades no deben coincidir con los métodos get
CA1722 Los identificadores no deben tener un prefijo incorrecto
CA1724 Los nombres de tipo no deben coincidir con los espacios de nombres
CA1725 Los nombres de parámetro deben coincidir con la declaración base
CA1726 Utilizar términos preferidos
CA2204 Los literales deben estar escritos correctamente