Compartir a través de


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

El conjunto Reglas de corrección extendidas de Microsoft maximiza los errores de uso del marco de trabajo y de lógica que notifica el análisis de código.Se hace hincapié en escenarios concretos como la interoperabilidad COM y las aplicaciones móviles.Considere incluir este conjunto de reglas si alguno de estos escenarios es aplicable a su proyecto o para buscar problemas adicionales del proyecto.

El conjunto Reglas de corrección extendidas de Microsoft incluye las reglas del conjunto Reglas de corrección básica de Microsoft.Este conjunto incluye las reglas del conjunto Reglas mínimas recomendadas de Microsoft.Para obtener más información, vea Conjunto de reglas Reglas de corrección 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 corrección extendidas 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 deberían 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 tipos visibles para COM deben ser visibles para COM

CA1410

Los métodos de registro COM se deben adjuntar

CA1415

Declarar elementos P/Invoke correctamente

CA1821

Quitar finalizadores vacíos

CA1900

Los campos de tipos 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

Especifique 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 desechar objetos varias veces

CA2207

Inicializar campos estáticos de tipo de valor insertados

CA2212

No marcar los componentes con servicio como WebMethod

CA2213

Los campos desechables se deben ser desechar

CA2214

No llamar a métodos reemplazables en constructores

CA2216

Los tipos desechables deben declarar el finalizador

CA2220

Los finalizadores deben llamar al finalizador de la clase base

CA2229

Implementar constructores de serialización

CA2231

El operador de sobrecarga equivale a cancelar 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 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

CA1008

Las enumeraciones deben tener un valor igual a cero

CA1013

El operador de sobrecarga equivale a la suma y la resta de sobrecarga

CA1303

No pasar literales como parámetros localizados

CA1308

Normalizar las cadenas en mayúsculas

CA1806

No omitir resultados del método

CA1816

Llamar a GC.SuppressFinalize correctamente

CA1819

Las propiedades no deberían devolver matrices

CA1820

Prueba para cadenas 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 sólo lectura

CA2105

Los campos de matrices no deben ser de sólo lectura

CA2106

Asegurar aserciones

CA2115

Llamar a GC.KeepAlive cuando se utilicen recursos nativos

CA2119

Sellar los métodos que cumplen 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 a Dispose de clase base

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

CA2226

Los operadores deben tener sobrecargas simétricas

CA2227

Las propiedades de la colección deben ser de sólo 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 sobrecargas en interfaces visibles para COM

CA1406

Evitar argumentos Int64 para clientes Visual Basic 6

CA1407

Evitar miembros estáticos en tipos visibles para COM

CA1408

No utilizar AutoDual ClassInterfaceType

CA1409

Los tipos visibles 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 campos no públicos en tipos de valor visibles para 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 se debería proteger 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 se deben escribir correctamente

CA2211

Los campos no constantes no deben ser visibles

CA2217

No marcar enumeraciones con FlagsAttribute

CA2218

Reemplazar el método GetHashCode al reemplazar 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 para 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