Compartir a través de


Conjunto de reglas Reglas de directrices de diseño básicas para código administrado

Puede utilizar el conjunto Reglas de directrices de diseño básicas de Microsoft para centrarse en facilitar la comprensión y el uso del código.Se recomienda incluir este conjunto de reglas si el proyecto incluye código de bibliotecas o si desea exigir procedimientos recomendados para el código que es fácil de mantener.

El conjunto Reglas de directrices de diseño básicas incluye todas las reglas del conjunto Reglas mínimas recomendadas de Microsoft.Para obtener una lista de las reglas mínimas, vea 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 básicas de Microsoft.

Regla

Descripción

CA1001

Los tipos que poseen campos descartables deben ser descartables

CA1009

Declarar los controladores de eventos 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 clases base

CA1063

Implementar 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 estar visibles para COM

CA1404

Llamar a GetLastError inmediatamente después de P/Invoke

CA1405

Los tipos base de los tipos visibles para COM deben estar visibles para COM

CA1410

Los métodos de registro COM se deben adjuntar

CA1415

Declarar elementos P/Invoke correctamente

CA1821

Quitar los finalizadores vacíos

CA1900

Los campos de tipo de valor deben ser portables

CA1901

Las declaraciones P/Invoke deben ser portables

CA2002

No bloquear objetos con identidad débil

CA2100

Revisar las consultas SQL en busca de vulnerabilidades de seguridad

CA2101

Especificar los cálculos de referencias para argumentos de cadena P/Invoke

CA2108

Revisar la seguridad declarativa en los tipos de valor

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 sólo a métodos APTCA

CA2117

Los tipos APTCA sólo amplían tipos base APTCA

CA2122

No exponer indirectamente métodos con peticiones de vínculos

CA2123

Las peticiones de vínculos de reemplazo 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 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 métodos de serialización correctamente

CA2240

Implementar ISerializable correctamente

CA2241

Proporcionar argumentos correctos a 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 de controlador de eventos

CA1004

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

CA1005

Evite 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

Considere pasar los tipos base como parámetros

CA1012

Los tipos abstractos no deben tener constructores

CA1013

El operador de sobrecarga equivale a la suma y la 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 debe 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 un argumento integral o de cadena para los indizadores

CA1044

Las propiedades no deben ser de sólo 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

Declarar 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 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 la excesiva complejidad

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 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 las 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 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

Los finalizadores deben protegerse

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