Compartir a través de


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

El conjunto Reglas de directrices de diseño extendidas de Microsoft expande las reglas de directrices de diseño básicas para maximizar los problemas de mantenimiento y uso que se notifican.Se pone especial énfasis en las directrices de nomenclatura.Debe 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 que resulte fácil de mantener.

Las Reglas de directrices de diseño extendidas incluye todas las Reglas de directrices de diseño básicas de Microsoft.Estas últimas incluyen todas las Reglas mínimas recomendadas de Microsoft.Para obtener más información, vea Conjunto de reglas Reglas de directrices de diseño básicas para código administrado y Conjunto de reglas Reglas recomendadas administradas para código administrado.

En la tabla siguiente se describen todas las reglas del conjunto Reglas de directrices de diseño extendidas de Microsoft.

Regla

Descripción

CA1001

Los tipos que poseen campos desechables deben ser desechables

CA1009

Declare los controladores de evento correctamente

CA1016

Marcar los ensamblados con AssemblyVersionAttribute

CA1033

Los tipos secundarios deberían poder llamar a los métodos de interfaz

CA1049

Los tipos que poseen recursos nativos deben ser descartables

CA1060

Mueva P/Invokes a la clase NativeMethods

CA1061

No oculte métodos de clases base

CA1063

Implemente IDisposable correctamente

CA1065

No producir excepciones en ubicaciones inesperadas

CA1301

Evitar aceleradores duplicados

CA1400

Deben existir 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 para COM

CA1404

Llame a GetLastError inmediatamente después de P/Invoke

CA1405

Los tipos base de tipos visibles para COM deben ser visibles para COM

CA1410

Los métodos de registro COM se deben adjuntar

CA1415

Declare los elementos P/Invoke correctamente

CA1821

Quitar los finalizadores vacíos

CA1900

Los campos de tipos de valor deberían ser portátiles

CA1901

Las declaraciones P/Invoke deben ser portátiles

CA2002

No bloquear objetos con identidad débil

CA2100

Revisar las consultas SQL en busca de vulnerabilidades de seguridad

CA2101

Especifique cálculo de referencias para argumentos de cadena P/Invoke

CA2108

Revisar la seguridad declarativa en los tipos de valor

CA2111

Los punteros no deberían estar visibles

CA2112

Los tipos seguros no deberían exponer campos

CA2114

La seguridad del método debería 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 reemplazo deberían 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 cuando reemplazan 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

Iniciar de nuevo para preservar los detalles de la pila

CA2202

No aplicar Dispose a los objetos varias veces

CA2207

Inicializar campos estáticos de tipo de valor insertados

CA2212

No marcar los componentes con servicio como WebMethod

CA2213

Aplique Dispose a los campos a los que se pueda

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 de igualdad al reemplazar el tipo de valor de igualdad

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 los métodos de serialización de forma correcta

CA2240

Implementar ISerializable correctamente

CA2241

Proporcionar argumentos correctos para los métodos de formato

CA2242

Prueba para NaN correcta

CA1000

No declarar miembros estáticos en tipos genéricos

CA1002

No exponer listas genéricas

CA1003

Utilizar instancias genéricas del controlador de eventos

CA1004

Los métodos genéricos deben proporcionar un parámetro de tipo

CA1005

Evitar parámetros excesivos en tipos genéricos

CA1006

No anidar tipos genéricos en firmas 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

Reemplaza argumentos repetitivos con una matriz de parámetros

CA1026

No debería utilizar 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 argumento integral o de cadena para los 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 sealed

CA1048

No declarar miembros virtuales en tipos sealed

CA1050

Declare tipos en espacios de nombres

CA1051

No declarar campos de instancia visibles

CA1052

Los tipos titulares estáticos deben ser sealed

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

Evite la excesiva complejidad

CA1708

Los identificadores se deberían diferenciar en algo más que en el uso de mayúsculas y minúsculas

CA1716

Los identificadores no deberían coincidir con palabras clave

CA1801

Revisar parámetros sin utilizar

CA1804

Quitar variables locales no utilizadas

CA1809

Evitar 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 atributos no sellados

CA1814

Preferir las matrices escalonadas antes que multidimensionales

CA1815

Invalidar Equals y el operador Equals en los tipos de valores

CA1819

Las propiedades no deberían devolver matrices

CA1820

Comprobar si las cadenas están vacías mediante la longitud de cadena

CA1822

Marcar el miembro como estático

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

Debe proteger los finalizadores

CA2222

No reducir la visibilidad del miembro heredado

CA2223

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

CA2224

Reemplazar 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 sólo lectura

CA2230

Usar parámetros para argumentos de variable

CA2234

Pasar objetos System.Uri en lugar de cadenas

CA2239

Proporcionar métodos de deserialización para campos opcionales

CA1020

Evitar espacios de nombres con pocos tipos

CA1021

Evitar parámetros out

CA1040

Evitar 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 el código difícil de 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 deberían utilizar las mayúsculas y minúsculas correctamente

CA1702

En las palabras compuestas se deberían utilizar las mayúsculas y minúsculas correctamente

CA1703

Las cadenas de recursos deberían tener la ortografía correcta

CA1704

Los identificadores deberían tener la ortografía correcta

CA1707

Los identificadores no deberían contener subrayado

CA1709

Los identificadores deberían utilizar las mayúsculas y minúsculas correctamente

CA1710

Los identificadores deberían tener el sufijo correcto

CA1711

Los identificadores no deberían tener el sufijo incorrecto

CA1712

No utilizar prefijos en valores de enumeración con el nombre del tipo

CA1713

Los eventos no deberían tener prefijos antes ni después

CA1714

Las enumeraciones Flags deberían tener nombres en plural

CA1715

Los identificadores deberían tener el prefijo correcto

CA1717

Solo las enumeraciones FlagsAttribute deberían tener nombres en plural

CA1719

Los nombres de parámetro no deberían coincidir con los nombres de miembro

CA1720

Los identificadores no deberían contener nombres de tipo

CA1721

Los nombres de propiedades no deberían coincidir con los métodos Get

CA1722

Los identificadores no deberían tener el prefijo incorrecto

CA1724

Los nombres de tipo no deben coincidir con los espacios de nombres

CA1725

Los nombres de parámetro deberían coincidir con la declaración base

CA1726

Utilizar términos preferidos

CA2204

Los literales se deberían escribir correctamente