Compartir a través de


Conjunto de reglas de análisis de código Reglas de corrección extendidas de Microsoft

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 de análisis de código Reglas de corrección básica de Microsofty Conjunto de reglas de análisis de código Reglas mínimas recomendadas de Microsoft.

En la tabla siguiente se describen todas las reglas del conjunto Reglas de corrección extendidas de Microsoft.

Regla

Descripción

CA1032: Implementar constructores de excepción estándar

El error al proporcionar el conjunto completo de constructores puede dificultar el control correcto de las excepciones.

CA1054: Los parámetros de URI no deben ser cadenas

Si un método toma una representación de cadena de un identificador URI, debe proporcionarse la sobrecarga correspondiente que toma una instancia de la clase URI, que proporciona estos servicios de forma segura.

CA1055: Los valores devueltos URI no deben ser cadenas

La regla supone que el método devuelve un identificador uniforme de recursos (URI). Las representaciones de cadena de identificadores URI tienen tendencia a analizar y codificar errores, por lo que pueden crear puntos vulnerables en la seguridad. La clase System.Uri proporciona estos servicios de una manera segura.

CA1056: Las propiedades URI no deben ser cadenas

La regla supone que la propiedad representa un Identificador uniforme de recursos (URI). Las representaciones de cadena de identificadores URI tienen tendencia a analizar y codificar errores, por lo que pueden crear puntos vulnerables en la seguridad. La clase System.Uri proporciona estos servicios de una manera segura.

CA1057: Las sobrecargas URI de cadena llaman a sobrecargas System.Uri

Un tipo declara sobrecargas de método que solamente se distinguen por la sustitución de un parámetro de cadena por un parámetro System.Uri. La sobrecarga que toma el parámetro de cadena no llama a la sobrecarga que toma el parámetro URI.

CA1402: Evite sobrecargas en interfaces visibles para COM

Cuando se exponen métodos sobrecargados a los clientes COM, sólo la primera sobrecarga de método conserva su nombre. Las sobrecargas subsiguientes reciben un nombre único resultante de anexar al nombre un carácter de subrayado (_) y un entero correspondiente al orden de declaración de la sobrecarga.

CA1406: Evite argumentos Int64 para clientes Visual Basic 6

Los clientes COM de Visual Basic 6 no pueden tener acceso a los enteros de 64 bits.

CA1407: Evite miembros estáticos en tipos visibles para COM

COM no es compatible con métodos static.

CA1408: No utilizar AutoDual ClassInterfaceType

Los tipos que utilizan una interfaz dual permiten a los clientes enlazarse a un diseño de interfaz concreto. Cualquier cambio que se introduzca en una versión futura en el diseño del tipo o en cualquier tipo base provocará un error en los clientes COM que están enlazados a la interfaz. De forma predeterminada, si no se especifica el atributo ClassInterfaceAttribute, se utiliza una interfaz solo de envío.

CA1409: Los tipos visibles COM se deben poder crear

Un tipo de referencia marcado específicamente como visible para COM contiene un constructor parametrizado público pero no contiene un constructor (sin parámetros) predeterminado público. Un tipo sin un constructor predeterminado público no se puede crear mediante clientes COM.

CA1411: Los métodos de registro COM no deben ser visibles

Un método marcado con el atributo System.Runtime.InteropServices.ComRegisterFunctionAttribute o el atributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute es visible externamente.

CA1412: Marcar las interfaces ComSource como IDispatch

Un tipo se marca con el atributo System.Runtime.InteropServices.ComSourceInterfacesAttribute y por lo menos una de las interfaces especificadas no se marca con el atributo System.Runtime.InteropServices.InterfaceTypeAttribute establecido en ComInterfaceType.InterfaceIsIDispatch.

CA1413: Evite campos no públicos en tipos de valor visibles para COM

Los campos de instancia no públicos de tipos de valor visibles para COM están visibles para los clientes COM. Revise el contenido de los campos para obtener información que no deba exponerse o que tendrá un impacto sobre la seguridad o un diseño no deseado.

CA1414: Marque los argumentos P/Invoke booleanos con MarshalAs

El tipo de datos booleano tiene varias representaciones en el código no administrado.

CA1600: No utilizar la prioridad del proceso inactiva

No establezca la prioridad de proceso en Idle. Los procesos con System.Diagnostics.ProcessPriorityClass.Idle ocupan la CPU cuando, de otro modo, estaría inactiva y, por consiguiente, bloquean el estado de espera.

CA1601: No utilizar temporizadores que impidan los cambios de estado de energía

Una actividad periódica más frecuente hará que la CPU no esté disponible e interferirá con los temporizadores de inactividad para ahorro de energía que apagan el monitor y los discos duros.

CA1821: Quitar los finalizadores vacíos

Siempre que pueda, evite los finalizadores debido a la sobrecarga de rendimiento adicional necesaria para el seguimiento de la duración del objeto. Un finalizador vacío produce una sobrecarga adicional sin ningún beneficio.

CA1824: Marque los ensamblados con NeutralResourcesLanguageAttribute

El atributo NeutralResourcesLanguage informa a ResourceManager del idioma utilizado para mostrar los recursos de la referencia cultural neutral de un ensamblado. Esto mejora el rendimiento de la búsqueda del primer recurso que se carga y puede reducir el espacio de trabajo.

CA2001: Evitar llamar a métodos problemáticos

Un miembro llama a un método potencialmente peligroso o problemático.

CA2003: No tratar fibras como subprocesos

Un subproceso administrado se trata como un subproceso de Win32.

CA2204: Debe escribir correctamente los literales

Una cadena literal en el cuerpo de un método contiene una o varias palabras que la biblioteca de correctores ortográficos de Microsoft no reconoce.

CA2211: Los campos no constantes no deben ser visibles

Los campos estáticos que no son constantes ni de sólo lectura no son seguros para subprocesos. Obtener acceso a este tipo de campo se debe controlar cuidadosamente y requiere técnicas de programación avanzadas para sincronizar el acceso al objeto de clase.

CA2217: No marcar enumeraciones con FlagsAttribute

Una enumeración visible externamente está marcada con FlagsAttribute y tiene uno o varios valores que no son potencias de dos o una combinación de los otros valores definidos en la enumeración.

CA2218: Reemplazar el método GetHashCode al reemplazar el método Equals

GetHashCode devuelve un valor basado en la instancia actual que es adecuado para los algoritmos hash y las estructuras de datos como una tabla hash. Dos objetos que son del mismo tipo y son iguales deben devolver el mismo código hash.

CA2219: No producir excepciones en cláusulas de excepción

Cuando se genera una excepción en una cláusula finally o fault, la nueva excepción oculta la excepción activa. Cuando se genera una excepción en una cláusula filter, el runtime la detecta automáticamente. Esto hace que el error original sea difícil de detectar y depurar.

CA2225: Las sobrecargas del operador tienen alternativas con nombre

Se detectó una sobrecarga del operador y no se encontró el método alternativo con el nombre esperado. El miembro alternativo con nombre proporciona acceso a la misma funcionalidad que el operador; esto se hace para los desarrolladores que programan en lenguajes que no admiten operadores sobrecargados.

CA2228: No enviar formatos de recursos no lanzados

Es posible que las versiones admitidas de .NET Framework no puedan utilizar los archivos de recursos compilados con versiones preliminares de .NET Framework.

CA2230: Usar parámetros para argumentos de variable

Un tipo público o protegido contiene un método público o protegido que utiliza la convención de llamada VarArgs en lugar de la palabra clave params.

CA2233: Las operaciones no deben desbordarse

Las operaciones aritméticas no deben realizarse sin validar primero los operandos para asegurarse de que el resultado de la operación no se encuentra fuera del intervalo de valores posible de los tipos de datos que se utilicen.

CA2234: Pase objetos System.Uri en lugar de cadenas

Se realiza una llamada a un método que tiene un parámetro de cadena cuyo nombre contiene "uri", "URI", "urn", "URN", "url" o "URL". El tipo declarativo del método contiene una sobrecarga de método correspondiente que tiene un parámetro System.Uri.

CA2243: Los literales de cadena de atributo se deben analizar correctamente

El parámetro de literal de cadena de un atributo no se analiza correctamente para una dirección URL, un GUID o una versión.