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 |
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de