Advertencias de análisis de código para código administrado por CheckIdCode Analysis Warnings for Managed Code by CheckId

En la tabla siguiente se enumeran las advertencias de análisis de código para código administrado ordenadas por el identificador CheckId de la advertencia.The following table lists Code Analysis warnings for managed code by the CheckId identifier of the warning.

AdvertenciasWarnings

Identificador de comprobaciónCheckId AdvertenciaWarning DescripciónDescription
CA1000CA1000 CA1000: No declarar miembros estáticos en tipos genéricosCA1000: Do not declare static members on generic types Cuando se llama a un miembro estático de un tipo genérico, se debe especificar el argumento de tipo correspondiente a ese tipo.When a static member of a generic type is called, the type argument must be specified for the type. Cuando se llama a un miembro de instancia genérico que no admite la interferencia, se debe especificar el argumento de tipo para el miembro.When a generic instance member that does not support inference is called, the type argument must be specified for the member. En estos dos casos, la sintaxis para especificar el argumento de tipo es diferente y resulta fácil confundirse.In these two cases, the syntax for specifying the type argument is different and easily confused.
CA1001CA1001 CA1001: Los tipos que poseen campos descartables deben ser descartablesCA1001: Types that own disposable fields should be disposable Una clase declara e implementa un campo de instancia que es de tipo System.IDisposable y la clase no implementa IDisposable.A class declares and implements an instance field that is a System.IDisposable type, and the class does not implement IDisposable. Una clase que declara un campo IDisposable posee indirectamente un recurso no administrado y debería implementar la interfaz IDisposable.A class that declares an IDisposable field indirectly owns an unmanaged resource and should implement the IDisposable interface.
CA1002CA1002 CA1002: No exponer listas genéricasCA1002: Do not expose generic lists System.Collections.Generic.List < (de <(T >) >) es una colección genérica diseñada para el rendimiento, no para la herencia.System.Collections.Generic.List<(Of <(T>)>) is a generic collection that is designed for performance, not inheritance. Por consiguiente, List no contiene ningún miembro virtual.Therefore, List does not contain any virtual members. En su lugar, se debe exponer las colecciones genéricas diseñadas para herencia.The generic collections that are designed for inheritance should be exposed instead.
CA1003CA1003 CA1003: Utilizar instancias genéricas de controlador de eventosCA1003: Use generic event handler instances Un tipo contiene un delegado que devuelve void cuya firma contiene dos parámetros (el primero un objeto y el segundo un tipo asignable a EventArgs), y el ensamblado que lo contiene tiene como destino de Microsoft .NET Framework 2.0.A type contains a delegate that returns void, whose signature contains two parameters (the first an object and the second a type that is assignable to EventArgs), and the containing assembly targets Microsoft .NET Framework 2.0.
CA1004CA1004 CA1004: Los métodos genéricos deben proporcionar un parámetro de tipoCA1004: Generic methods should provide type parameter La inferencia es el modo en que se determina el argumento de tipo de un método genérico partiendo del tipo de argumento pasado al método, en lugar de especificar directamente el argumento de tipo.Inference is how the type argument of a generic method is determined by the type of argument that is passed to the method, instead of by the explicit specification of the type argument. Para habilitar la inferencia, la firma de parámetro de un método genérico debe incluir un parámetro del mismo tipo que el parámetro type del método.To enable inference, the parameter signature of a generic method must include a parameter that is of the same type as the type parameter for the method. En este caso, no es necesario especificar el argumento de tipo.In this case, the type argument does not have to be specified. Cuando se utiliza la inferencia para todos los parámetros de tipo, la sintaxis para llamar a los métodos de instancia genéricos y no genéricos es la misma; esto simplifica la capacidad de uso de los métodos genéricos.When using inference for all type parameters, the syntax for calling generic and non-generic instance methods is identical; this simplifies the usability of generic methods.
CA1005CA1005 CA1005: Evite parámetros excesivos en tipos genéricosCA1005: Avoid excessive parameters on generic types Cuantos más parámetros de tipo contenga un tipo genérico, más difícil resulta saber y recordar qué representa cada uno de ellos.The more type parameters a generic type contains, the more difficult it is to know and remember what each type parameter represents. Esto resulta evidente normalmente con un parámetro de tipo, como en List<T > y en algunos casos con dos parámetros de tipo, como en Dictionary<TKey, TValue >.It is usually obvious with one type parameter, as in List<T>, and in certain cases that have two type parameters, as in Dictionary<TKey, TValue>. Sin embargo, si hay más de dos parámetros de tipo, la dificultad se vuelve demasiado grande para la mayoría de los usuarios.However, if more than two type parameters exist, the difficulty becomes too great for most users.
CA1006CA1006 CA1006: No anidar tipos genéricos en firmas de miembroCA1006: Do not nest generic types in member signatures Un argumento de tipo anidado es un argumento de tipo que también es un tipo genérico.A nested type argument is a type argument that is also a generic type. Para llamar a un miembro cuya firma contenga un argumento de tipo anidado, el usuario debe crear instancias de un tipo genérico y pasar este tipo al constructor de un segundo tipo genérico.To call a member whose signature contains a nested type argument, the user must instantiate one generic type and pass this type to the constructor of a second generic type. El procedimiento y la sintaxis necesarios para ello son complejos, por lo que es preferible evitarlo.The required procedure and syntax are complex and should be avoided.
CA1007CA1007 CA1007: Utilizar valores genéricos cuando sea posibleCA1007: Use generics where appropriate Un método visible externamente contiene un parámetro de referencia de tipo System.Object.An externally visible method contains a reference parameter of type System.Object. El uso de un método genérico permite pasar al método todos los tipos, sujeto a las restricciones que puedan ser de aplicación, sin convertirlos antes al tipo del parámetro de referencia.Use of a generic method enables all types, subject to constraints, to be passed to the method without first casting the type to the reference parameter type.
CA1008CA1008 CA1008: Las enumeraciones deben tener un valor igual a ceroCA1008: Enums should have zero value El valor predeterminado de una enumeración no inicializada, igual que otros tipos de valor, es cero.The default value of an uninitialized enumeration, just as other value types, is zero. Una enumeración con atributo y sin marcadores debería definir un miembro con el valor de cero de modo que el valor predeterminado sea un valor válido de la enumeración.A nonflags-attributed enumeration should define a member by using the value of zero so that the default value is a valid value of the enumeration. Si una enumeración a la que se le haya aplicado el atributo FlagsAttribute define un miembro con valor cero, su nombre debe ser "None" para indicar que no se han establecido valores en la enumeración.If an enumeration that has the FlagsAttribute attribute applied defines a zero-valued member, its name should be "None" to indicate that no values have been set in the enumeration.
CA1009CA1009 CA1009: Declare los controladores de evento correctamenteCA1009: Declare event handlers correctly Los métodos de control de eventos toman dos parámetros.Event handler methods take two parameters. El primero es de tipo System.Object y se denomina "sender".The first is of type System.Object and is named "sender". Éste es el objeto que provocó el evento.This is the object that raised the event. El segundo parámetro es de tipo System.EventArgs y se denomina "e".The second parameter is of type System.EventArgs and is named "e". Estos son los datos están asociados a este evento.This is the data that is associated with the event. Los métodos de control de eventos no deben devolver un valor; en el lenguaje de programación C#, esto se indica mediante el tipo de valor devuelto void.Event handler methods should not return a value; in the C# programming language, this is indicated by the return type void.
CA1010CA1010 CA1010: Las colecciones deben implementar la interfaz genéricaCA1010: Collections should implement generic interface Para ampliar la utilidad de una colección, implemente una de las interfaces de colección genéricas.To broaden the usability of a collection, implement one of the generic collection interfaces. Entonces podrá utilizar la colección para rellenar tipos de colecciones genéricas.Then the collection can be used to populate generic collection types.
CA1011CA1011 CA1011: Considere pasar los tipos base como parámetrosCA1011: Consider passing base types as parameters Cuando en una declaración de método se especifica un tipo base como parámetro, cualquier tipo derivado del tipo base puede pasarse al método como el argumento correspondiente.When a base type is specified as a parameter in a method declaration, any type that is derived from the base type can be passed as the corresponding argument to the method. Si la funcionalidad adicional proporcionada por el tipo de parámetro derivado no resulta necesaria, el uso del tipo base permite que el método se utilice más ampliamente.If the additional functionality that is provided by the derived parameter type is not required, use of the base type enables wider use of the method.
CA1012CA1012 CA1012: Los tipos abstractos no deberían tener constructoresCA1012: Abstract types should not have constructors Los tipos derivados pueden llamar solo a los constructores de tipos abstractos.Constructors on abstract types can be called only by derived types. Puesto que los constructores públicos crean instancias de un tipo y no se pueden crear instancias de un tipo abstracto, no es correcto diseñar un tipo abstracto con un constructor público.Because public constructors create instances of a type, and you cannot create instances of an abstract type, an abstract type that has a public constructor is incorrectly designed.
CA1013CA1013 CA1013: El operador de sobrecarga es igual que la suma y resta de sobrecargaCA1013: Overload operator equals on overloading add and subtract Un tipo público o protegido implementa los operadores de suma o resta sin implementar el operador de igualdad.A public or protected type implements the addition or subtraction operators without implementing the equality operator.
CA1014CA1014 CA1014: Marque los ensamblados con CLSCompliantAttributeCA1014: Mark assemblies with CLSCompliantAttribute La Common Language Specification (CLS) define las restricciones de nomenclatura, los tipos de datos y las reglas a las que los ensamblados deben ajustarse si se van a utilizar los lenguajes de programación.The Common Language Specification (CLS) defines naming restrictions, data types, and rules to which assemblies must conform if they will be used across programming languages. Los procedimientos de diseño establecen que todos los ensamblados deben indicar explícitamente la conformidad a CLS mediante el atributo CLSCompliantAttribute.Good design dictates that all assemblies explicitly indicate CLS compliance by using CLSCompliantAttribute . Si este atributo no está presente en un ensamblado, el ensamblado no es conforme.If this attribute is not present on an assembly, the assembly is not compliant.
CA1016CA1016 CA1016: Marcar los ensamblados con AssemblyVersionAttributeCA1016: Mark assemblies with AssemblyVersionAttribute .NET Framework.NET Framework utiliza el número de versión para identificar de forma única un ensamblado y para enlazarse a los tipos de ensamblados con nombre seguro.The .NET Framework.NET Framework uses the version number to uniquely identify an assembly, and to bind to types in strongly named assemblies. El número de versión se utiliza junto con la versión y la directiva del fabricante.The version number is used together with version and publisher policy. De forma predeterminada, las aplicaciones sólo se ejecutan con la versión de ensamblado con la que se compilaron.By default, applications run only with the assembly version with which they were built.
CA1017CA1017 CA1017: Marque los ensamblados con ComVisibleAttributeCA1017: Mark assemblies with ComVisibleAttribute ComVisibleAttribute determina cómo obtienen acceso los clientes COM al código administrado.ComVisibleAttribute determines how COM clients access managed code. Los procedimientos de diseño recomendados dictan que los ensamblados indican explícitamente la visibilidad COM.Good design dictates that assemblies explicitly indicate COM visibility. La visibilidad COM se puede establecer para un ensamblado completo y, a continuación, se puede invalidar para los tipos individuales y los miembros de tipo.COM visibility can be set for the whole assembly and then overridden for individual types and type members. Si este atributo no está presente, el contenido del ensamblado es visible para los clientes COM.If this attribute is not present, the contents of the assembly are visible to COM clients.
CA1018CA1018 CA1018: Marcar atributos con AttributeUsageAttributeCA1018: Mark attributes with AttributeUsageAttribute Cuando defina un atributo personalizado, márquelo utilizando AttributeUsageAttribute para indicar dónde se puede aplicar en el código fuente.When you define a custom attribute, mark it by using AttributeUsageAttribute to indicate where in the source code the custom attribute can be applied. El significado de un atributo y el uso que se le va a dar determinará sus ubicaciones válidas en código.The meaning and intended usage of an attribute will determine its valid locations in code.
CA1019CA1019 CA1019: Definir descriptores de acceso para los argumentos de atributoCA1019: Define accessors for attribute arguments Los atributos pueden definir argumentos obligatorios que deben especificarse al aplicar el atributo a un destino.Attributes can define mandatory arguments that must be specified when you apply the attribute to a target. Éstos también se denominan argumentos posicionales porque se proporcionan para atribuir constructores como parámetros posicionales.These are also known as positional arguments because they are supplied to attribute constructors as positional parameters. Para cada argumento obligatorio, el atributo debe proporcionar también una propiedad de sólo lectura correspondiente de modo que el valor del argumento se pueda recuperar en tiempo de ejecución.For every mandatory argument, the attribute should also provide a corresponding read-only property so that the value of the argument can be retrieved at execution time. Los atributos también pueden definir argumentos opcionales, que también se denominan argumentos con nombre.Attributes can also define optional arguments, which are also known as named arguments. Estos argumentos se proporcionan para atribuir constructores por nombre y deben tener una propiedad de lectura/escritura correspondiente.These arguments are supplied to attribute constructors by name and should have a corresponding read/write property.
CA1020CA1020 CA1020: Evitar espacios de nombres con pocos tiposCA1020: Avoid namespaces with few types Asegúrese de que hay una organización lógica para cada espacio de nombres y que existe una razón para colocar los tipos en un espacio de nombres apenas lleno.Make sure that each of your namespaces has a logical organization, and that a valid reason exists for putting types in a sparsely populated namespace.
CA1021CA1021 CA1021: Evitar parámetros outCA1021: Avoid out parameters Para pasar tipos por referencia (utilizando los parámetros out o ref) es necesario tener experiencia con punteros, saber la diferencia entre los tipos de referencia y los tipos de valor, y controlar métodos con varios valores devueltos.Passing types by reference (using out or ref) requires experience with pointers, understanding how value types and reference types differ, and handling methods with multiple return values. Además, no se suele saber qué diferencia hay entre los parámetros out y ref.Also, the difference between out and ref parameters is not widely understood.
CA1023CA1023 CA1023: Los indizadores no deben ser multidimensionalesCA1023: Indexers should not be multidimensional Los indizadores (es decir, las propiedades indizadas) deben utilizar un índice único.Indexers (that is, indexed properties) should use a single index. Los indizadores multidimensionales pueden reducir de forma significativa la utilidad de la biblioteca.Multidimensional indexers can significantly reduce the usability of the library.
CA1024CA1024 CA1024: Utilizar las propiedades donde correspondaCA1024: Use properties where appropriate Un método público o protegido tiene un nombre que comienza por "Get", no toma ningún parámetro y devuelve un valor que no es una matriz.A public or protected method has a name that starts with "Get", takes no parameters, and returns a value that is not an array. El método podría ser un buen candidato para convertirse en propiedad.The method might be a good candidate to become a property.
CA1025CA1025 CA1025: Reemplaza argumentos repetitivos con una matriz de parámetrosCA1025: Replace repetitive arguments with params array Utilice una matriz de parámetros en lugar de argumentos repetidos si no conoce el número exacto de argumentos y si los argumentos de variable son del mismo tipo o pueden pasarse como si fueran del mismo tipo.Use a parameter array instead of repeated arguments when the exact number of arguments is unknown and when the variable arguments are the same type or can be passed as the same type.
CA1026CA1026 CA1026: No debería utilizar parámetros predeterminadosCA1026: Default parameters should not be used Los métodos que utilizan parámetros predeterminados están permitidos en CLS; sin embargo, CLS permite que los compiladores omitan los valores asignados a estos parámetros.Methods that use default parameters are allowed under the CLS; however, the CLS lets compilers ignore the values that are assigned to these parameters. Para seguir utilizando el comportamiento que desea en los lenguajes de programación, los métodos que utilizan parámetros predeterminados deberían reemplazarse con sobrecargas de métodos que proporcionen los parámetros predeterminados.To maintain the behavior that you want across programming languages, methods that use default parameters should be replaced by method overloads that provide the default parameters.
CA1027CA1027 CA1027: Marcar enumeraciones con FlagsAttributeCA1027: Mark enums with FlagsAttribute Una enumeración es un tipo de valor que define un conjunto de constantes con nombre relacionadas.An enumeration is a value type that defines a set of related named constants. Aplique FlagsAttribute a una enumeración cuando se pueda combinar con sentido sus constantes con nombre.Apply FlagsAttribute to an enumeration when its named constants can be meaningfully combined.
CA1028CA1028 CA1028: El almacenamiento de la enumeración debe ser de tipo Int32CA1028: Enum storage should be Int32 Una enumeración es un tipo de valor que define un conjunto de constantes con nombre relacionadas.An enumeration is a value type that defines a set of related named constants. De manera predeterminada, el tipo de datos System.Int32 se utiliza para almacenar el valor constante.By default, the System.Int32 data type is used to store the constant value. Aunque puede cambiar este tipo subyacente, no es necesario ni se recomienda en la mayoría de los escenarios.Although you can change this underlying type, it is not required or recommended for most scenarios.
CA1030CA1030 CA1030: Utilizar eventos cuando sea apropiadoCA1030: Use events where appropriate Esta regla detecta métodos que tienen nombres que normalmente se utilizarían para eventos.This rule detects methods that have names that ordinarily would be used for events. Si se llama a un método en respuesta a un cambio de estado claramente definido, un controlador de eventos debe invocar al método.If a method is called in response to a clearly defined state change, the method should be invoked by an event handler. Los objetos que llaman al método deben provocar eventos en lugar de llamar directamente al método.Objects that call the method should raise events instead of calling the method directly.
CA1031CA1031 CA1031: No capturar los tipos de excepción generalCA1031: Do not catch general exception types No se deben capturar excepciones generales.General exceptions should not be caught. Detecte una excepción más específica o vuelva a producir una excepción general como la última instrucción del bloque Catch.Catch a more specific exception, or rethrow the general exception as the last statement in the catch block.
CA1032CA1032 CA1032: Implementar constructores de excepción estándarCA1032: Implement standard exception constructors El error al proporcionar el conjunto completo de constructores puede dificultar el control correcto de las excepciones.Failure to provide the full set of constructors can make it difficult to correctly handle exceptions.
CA1033CA1033 CA1033: Los tipos secundarios deberían poder llamar a los métodos de interfazCA1033: Interface methods should be callable by child types Un tipo no sellado visible externamente proporciona un método explícito de implementación de una interfaz pública pero no proporciona un método visible externamente alternativo con el mismo nombre.An unsealed externally visible type provides an explicit method implementation of a public interface and does not provide an alternative externally visible method that has the same name.
CA1034CA1034 CA1034: Los tipos anidados no deben ser visiblesCA1034: Nested types should not be visible Los tipos anidados son tipos declarados en el ámbito de otro tipo.A nested type is a type that is declared in the scope of another type. Los tipos anidados son útiles para encapsular los detalles de la implementación privada del tipo contenido.Nested types are useful to encapsulate private implementation details of the containing type. Los tipos anidados, utilizados para este propósito, no deben ser visibles externamente.Used for this purpose, nested types should not be externally visible.
CA1035CA1035 CA1035: Las implementaciones de ICollection tienen miembros fuertemente tipadosCA1035: ICollection implementations have strongly typed members Esta regla requiere que las implementaciones de ICollection proporcionen miembros fuertemente tipados para que los usuarios no necesiten convertir los argumentos en el tipo Object cuando utilicen la funcionalidad proporcionada por la interfaz.This rule requires ICollection implementations to provide strongly typed members so that users are not required to cast arguments to the Object type when they use the functionality that is provided by the interface. Esta regla supone que el tipo que implementa ICollection lo hace para administrar una colección de instancias de un tipo que es más fuerte que Object.This rule assumes that the type that implements ICollection does so to manage a collection of instances of a type that is stronger than Object.
CA1036CA1036 CA1036: Invalidar métodos en tipos comparablesCA1036: Override methods on comparable types Un tipo público o protegido implementa la interfaz System.IComparable.A public or protected type implements the System.IComparable interface. No invalida Object.Equals ni sobrecarga al operador específico del lenguaje para la igualdad, desigualdad, menor que o mayor que.It does not override Object.Equals nor does it overload the language-specific operator for equality, inequality, less than, or greater than.
CA1038CA1038 CA1038: Los enumeradores deben estar fuertemente tipadosCA1038: Enumerators should be strongly typed Esta regla requiere que las implementaciones de IEnumerator también proporcionen una versión fuertemente tipada de la propiedad Current para que los usuarios no tengan que convertir el valor devuelto en un tipo inflexible cuando utilicen la funcionalidad proporcionada por la interfaz.This rule requires IEnumerator implementations to also provide a strongly typed version of the Current property so that users are not required to cast the return value to the strong type when they use the functionality that is provided by the interface.
CA1039CA1039 CA1039: Las listas están fuertemente tipadasCA1039: Lists are strongly typed Esta regla requiere que las implementaciones de IList proporcionen miembros fuertemente tipados para que los usuarios no necesiten convertir los argumentos en el tipo System.Object cuando utilicen la funcionalidad proporcionada por la interfaz.This rule requires IList implementations to provide strongly typed members so that users are not required to cast arguments to the System.Object type when they use the functionality that is provided by the interface.
CA1040CA1040 CA1040: Evitar interfaces vacíasCA1040: Avoid empty interfaces Las interfaces definen miembros que proporcionan un comportamiento o acuerdo de uso.Interfaces define members that provide a behavior or usage contract. Cualquier tipo puede adoptar la funcionalidad descrita por la interfaz sin tener en cuenta dónde aparece el tipo en la jerarquía de herencia.The functionality that is described by the interface can be adopted by any type, regardless of where the type appears in the inheritance hierarchy. Un tipo implementa una interfaz proporcionando las implementaciones para los miembros de la interfaz.A type implements an interface by providing implementations for the members of the interface. Una interfaz vacía no define ningún miembro; por consiguiente, no define ningún contrato que se pueda implementar.An empty interface does not define any members; therefore, it does not define a contract that can be implemented.
CA1041CA1041 CA1041: Proporcionar un mensaje ObsoleteAttributeCA1041: Provide ObsoleteAttribute message Un tipo o miembro se marca con un atributo System.ObsoleteAttribute para el que no se ha especificado su propiedad ObsoleteAttribute.Message.A type or member is marked by using a System.ObsoleteAttribute attribute that does not have its ObsoleteAttribute.Message property specified. Cuando se compila un tipo o miembro marcado con ObsoleteAttribute, se muestra la propiedad Message del atributo.When a type or member that is marked by using ObsoleteAttribute is compiled, the Message property of the attribute is displayed. Esto proporciona información al usuario sobre el miembro o tipo obsoleto.This gives the user information about the obsolete type or member.
CA1043CA1043 CA1043: Utilizar argumento integral o de cadena para los indizadoresCA1043: Use integral or string argument for indexers Los indizadores (es decir, las propiedades indizadas) deben utilizar tipos enteros o de cadena para el índice.Indexers (that is, indexed properties) should use integral or string types for the index. Estos tipos se utilizan normalmente para indizar las estructuras de datos y aumentan la utilidad de la biblioteca.These types are typically used for indexing data structures and they increase the usability of the library. El uso del tipo Object debería limitarse a los casos en los que el tipo entero o de cadena no se puede especificar en tiempo de diseño.Use of the Object type should be restricted to those cases where the specific integral or string type cannot be specified at design time.
CA1044CA1044 CA1044: Las propiedades no deben ser de solo escrituraCA1044: Properties should not be write only Aunque es aceptable y a menudo necesario tener una propiedad de solo lectura, las directrices de diseño prohíben el uso de propiedades de solo escritura.Although it is acceptable and often necessary to have a read-only property, the design guidelines prohibit the use of write-only properties. Esto es porque si se deja que un usuario configure un valor, y a continuación se impide que el usuario vea ese valor, no proporciona ninguna seguridad.This is because letting a user set a value, and then preventing the user from viewing that value, does not provide any security. Además, sin acceso de lectura, no se puede ver el estado de los objetos compartidos, lo que limita su utilidad.Also, without read access, the state of shared objects cannot be viewed, which limits their usefulness.
CA1045CA1045 CA1045: No pasar tipos por referenciaCA1045: Do not pass types by reference Para pasar tipos por referencia (utilizando los parámetros out o ref) es necesario tener experiencia con punteros, saber la diferencia entre los tipos de referencia y los tipos de valor, y controlar métodos con varios valores devueltos.Passing types by reference (using out or ref) requires experience with pointers, understanding how value types and reference types differ, and handling methods that have multiple return values. Los arquitectos de bibliotecas cuyos diseños están destinados a los usuarios en general no deben esperar que los usuarios dominen el uso de los parámetros out o ref.Library architects who design for a general audience should not expect users to master working with out or ref parameters.
CA1046CA1046 CA1046: No sobrecargar el operador de igualdad en los tipos de referenciaCA1046: Do not overload operator equals on reference types Para los tipos de referencia, la implementación predeterminada del operador de igualdad casi siempre es correcta.For reference types, the default implementation of the equality operator is almost always correct. De manera predeterminada, dos referencias son iguales sólo si señalan al mismo objeto.By default, two references are equal only if they point to the same object.
CA1047CA1047 CA1047: No declarar miembros protegidos en tipos sealedCA1047: Do not declare protected members in sealed types Los tipos declaran miembros protegidos para que los tipos heredados puedan obtener acceso o reemplazar el miembro.Types declare protected members so that inheriting types can access or override the member. Por definición, no se puede heredar de tipos sealed, lo que significa que no se puede llamar a los métodos protegidos en tipos sealed.By definition, sealed types cannot be inherited, which means that protected methods on sealed types cannot be called.
CA1048CA1048 CA1048: No declarar miembros virtuales en tipos sealedCA1048: Do not declare virtual members in sealed types Los tipos declaran los métodos como virtuales para que los tipos heredados puedan reemplazar la implementación del método virtual.Types declare methods as virtual so that inheriting types can override the implementation of the virtual method. Por definición, no se puede heredar de un tipo sealed.By definition, a sealed type cannot be inherited. Esto hace que un método virtual en un tipo sealed no tenga sentido.This makes a virtual method on a sealed type meaningless.
CA1049CA1049 CA1049: Los tipos que poseen recursos nativos deben ser descartablesCA1049: Types that own native resources should be disposable Los tipos que se asignan a recursos no administrados deberían implementar IDisposable para permitir que los llamadores liberen estos recursos a petición y reduzcan el período de duración de los objetos que contienen los recursos.Types that allocate unmanaged resources should implement IDisposable to enable callers to release those resources on demand and to shorten the lifetimes of the objects that hold the resources.
CA1050CA1050 CA1050: Declare tipos en espacios de nombresCA1050: Declare types in namespaces Los tipos se declaran dentro de los espacios de nombres para evitar conflictos de nombre y como una forma de organizar los tipos relacionados en una jerarquía de objetos.Types are declared in namespaces to prevent name collisions and as a way to organize related types in an object hierarchy.
CA1051CA1051 CA1051: No declarar campos de instancia visiblesCA1051: Do not declare visible instance fields El uso principal de un campo debe ser como un detalle de implementación.The primary use of a field should be as an implementation detail. Los campos deben ser privados o internos y deben exponerse utilizando propiedades.Fields should be private or internal and should be exposed by using properties.
CA1052CA1052 CA1052: Los tipos titulares estáticos deben ser sealedCA1052: Static holder types should be sealed Un tipo público o protegido solamente contiene miembros estáticos y no se declara con el modificador sealed (NotInheritable) (Referencia de C#).A public or protected type contains only static members and is not declared by using the sealed (C# Reference) (NotInheritable) modifier. Un tipo que no está diseñado para heredarse debería marcarse con el modificador sealed para impedir su uso como tipo base.A type that is not meant to be inherited should be marked by using the sealed modifier to prevent its use as a base type.
CA1053CA1053 CA1053: Los tipos titulares estáticos no deben tener constructoresCA1053: Static holder types should not have constructors Un tipo público o público anidado declara sólo miembros estáticos y tiene un constructor predeterminado público o protegido.A public or nested public type declares only static members and has a public or protected default constructor. El constructor no es necesario puesto que al llamar a los miembros estáticos no se requiere una instancia del tipo.The constructor is unnecessary because calling static members does not require an instance of the type. La sobrecarga de la cadena debería llamar a la sobrecarga del identificador URI utilizando el argumento string por motivos de seguridad y protección.The string overload should call the uniform resource identifier (URI) overload by using the string argument for safety and security.
CA1054CA1054 CA1054: Los parámetros de URI no deben ser cadenasCA1054: URI parameters should not be strings 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.If a method takes a string representation of a URI, a corresponding overload should be provided that takes an instance of the URI class, which provides these services in a safe and secure manner.
CA1055CA1055 CA1055: Los valores devueltos URI no deben ser cadenasCA1055: URI return values should not be strings Esta regla supone que el método devuelve un URI.This rule assumes that the method returns a 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.A string representation of a URI is prone to parsing and encoding errors, and can lead to security vulnerabilities. La clase System.Uri proporciona estos servicios de una manera segura.The System.Uri class provides these services in a safe and secure manner.
CA1056CA1056 CA1056: Las propiedades URI no deben ser cadenasCA1056: URI properties should not be strings La regla supone que la propiedad representa un Identificador uniforme de recursos (URI).This rule assumes that the property represents a Uniform Resource Identifier (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.A string representation of a URI is prone to parsing and encoding errors, and can lead to security vulnerabilities. La clase System.Uri proporciona estos servicios de una manera segura.The System.Uri class provides these services in a safe and secure manner.
CA1057CA1057 CA1057: Las sobrecargas URI de cadena llaman a sobrecargas System.UriCA1057: String URI overloads call System.Uri overloads 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.A type declares method overloads that differ only by the replacement of a string parameter with a System.Uri parameter. La sobrecarga que toma el parámetro de cadena no llama a la sobrecarga que toma el parámetro URI.The overload that takes the string parameter does not call the overload that takes the URI parameter.
CA1058CA1058 CA1058: Los tipos no deben ampliar ciertos tipos baseCA1058: Types should not extend certain base types Un tipo visible externamente extiende algunos tipos base.An externally visible type extends certain base types. Utilice una de las alternativas.Use one of the alternatives.
CA1059CA1059 CA1059: Los miembros no deben exponer algunos tipos concretosCA1059: Members should not expose certain concrete types Un tipo concreto es un tipo que tiene una implementación completa y, por consiguiente, se pueden crear instancias de él.A concrete type is a type that has a complete implementation and therefore can be instantiated. Para permitir un uso extendido del miembro, reemplace el tipo concreto por la interfaz sugerida.To enable widespread use of the member, replace the concrete type by using the suggested interface.
CA1060CA1060 CA1060: Mueva P/Invokes a la clase NativeMethodsCA1060: Move P/Invokes to NativeMethods class Los métodos de invocación de plataforma, como aquellos marcados con el atributo System.Runtime.InteropServices.DllImportAttribute o los métodos definidos utilizando la palabra clave Declare en Visual BasicVisual Basic, tienen acceso al código no administrado.Platform Invocation methods, such as those that are marked by using the System.Runtime.InteropServices.DllImportAttribute attribute, or methods that are defined by using the Declare keyword in Visual BasicVisual Basic, access unmanaged code. Estos métodos deben ser de la clase NativeMethods, UnsafeNativeMethods o SafeNativeMethods.These methods should be of the NativeMethods, SafeNativeMethods, or UnsafeNativeMethods class.
CA1061CA1061 CA1061: No oculte métodos de clases baseCA1061: Do not hide base class methods Un método de un tipo base está oculto por un método del mismo nombre en un tipo derivado cuando la firma del parámetro del método derivado solo se diferencia por tipos derivados de manera más débil que los tipos correspondientes de la firma del parámetro del método base.A method in a base type is hidden by an identically named method in a derived type, when the parameter signature of the derived method differs only by types that are more weakly derived than the corresponding types in the parameter signature of the base method.
CA1062CA1062 CA1062: Validar argumentos de métodos públicosCA1062: Validate arguments of public methods Todos los argumentos de referencia pasados a métodos visibles externamente se deben comprobar para ver si son null.All reference arguments that are passed to externally visible methods should be checked against null.
CA1063CA1063 CA1063: Implemente IDisposable correctamenteCA1063: Implement IDisposable correctly Todos los tipos IDisposable deben implementar el modelo de Dispose correctamente.All IDisposable types should implement the Dispose pattern correctly.
CA1064CA1064 CA1064: Las excepciones deben ser públicasCA1064: Exceptions should be public Una excepción interna solo se ve dentro de su propio ámbito interno.An internal exception is visible only inside its own internal scope. Cuando la excepción esté fuera del ámbito interno, sólo se podrá usar la excepción base para detectarla.After the exception falls outside the internal scope, only the base exception can be used to catch the exception. Si la excepción interna se hereda de T:System.Exception, T:System.SystemException o T:System.ApplicationException, el código externo no tendrá información suficiente para saber qué hacer con la excepción.If the internal exception is inherited from T:System.Exception, T:System.SystemException, or T:System.ApplicationException, the external code will not have sufficient information to know what to do with the exception.
CA1065CA1065 CA1065: No producir excepciones en ubicaciones inesperadasCA1065: Do not raise exceptions in unexpected locations Un método que no se espera que produzca excepciones inicia una excepción.A method that is not expected to throw exceptions throws an exception.
CA1300CA1300 CA1300: Especifique MessageBoxOptionsCA1300: Specify MessageBoxOptions Para mostrar correctamente un cuadro de mensaje para las referencias culturales con escritura de derecha a izquierda, se deben pasar al método Show los miembros RightAlign y RtlReading de la enumeración MessageBoxOptions.To correctly display a message box for cultures that use a right-to-left reading order, the RightAlign and RtlReading members of the MessageBoxOptions enumeration must be passed to the Show method.
CA1301CA1301 CA1301: Evitar aceleradores duplicadosCA1301: Avoid duplicate accelerators Una tecla de acceso, también denominada acelerador, permite el acceso mediante teclado a un control utilizando la tecla ALT.An access key, also known as an accelerator, enables keyboard access to a control by using the ALT key. Cuando varios controles tienen las teclas de acceso duplicadas, no se define correctamente el comportamiento de la tecla de acceso.When multiple controls have duplicate access keys, the behavior of the access key is not well defined.
CA1302CA1302 CA1302: No codificar las cadenas específicas de configuración regionalCA1302: Do not hardcode locale specific strings La enumeración System.Environment.SpecialFolder contiene miembros que hacen referencia a carpetas del sistema especiales.The System.Environment.SpecialFolder enumeration contains members that refer to special system folders. La ubicación de estas carpetas puede tener diferentes valores en sistemas operativos distintos, el usuario puede cambiar alguna de estas ubicaciones y además, están adaptadas.The locations of these folders can have different values on different operating systems; the user can change some of the locations; and the locations are localized. El método Environment.GetFolderPath devuelve las ubicaciones asociadas a la enumeración Environment.SpecialFolder, adaptadas y adecuadas al equipo actualmente en ejecución.The Environment.GetFolderPath method returns the locations that are associated with the Environment.SpecialFolder enumeration, localized and appropriate for the currently running computer.
CA1303CA1303 CA1303: No pasar literales como parámetros localizadosCA1303: Do not pass literals as localized parameters Un método visible externamente analiza un literal de cadena como parámetro para un constructor o método de la biblioteca de clases de .NET Framework.NET Framework y esa cadena debería ser localizable.An externally visible method passes a string literal as a parameter to a constructor or method in the .NET Framework.NET Framework class library, and that string should be localizable.
CA1304CA1304 CA1304: Especificar CultureInfoCA1304: Specify CultureInfo Un método o constructor llama a un miembro que tiene una sobrecarga que acepta un parámetro System.Globalization.CultureInfo, y el método o constructor no llama a la sobrecarga que toma el parámetro CultureInfo.A method or constructor calls a member that has an overload that accepts a System.Globalization.CultureInfo parameter, and the method or constructor does not call the overload that takes the CultureInfo parameter. Si no se proporciona un objeto CultureInfo o System.IFormatProvider, el valor predeterminado proporcionado por el miembro sobrecargado podría no surtir el efecto deseado en todas las configuraciones regionales.When a CultureInfo or System.IFormatProvider object is not supplied, the default value that is supplied by the overloaded member might not have the effect that you want in all locales.
CA1305CA1305 CA1305: Especificar IFormatProviderCA1305: Specify IFormatProvider Un método o constructor llama a uno o más miembros que tienen sobrecargas que aceptan un parámetro System.IFormatProvider, y el método o constructor no llama a la sobrecarga que toma el parámetro IFormatProvider.A method or constructor calls one or more members that have overloads that accept a System.IFormatProvider parameter, and the method or constructor does not call the overload that takes the IFormatProvider parameter. Si no se proporciona un objeto System.Globalization.CultureInfo o IFormatProvider, el valor predeterminado proporcionado por el miembro sobrecargado podría no surtir el efecto deseado en todas las configuraciones regionales.When a System.Globalization.CultureInfo or IFormatProvider object is not supplied, the default value that is supplied by the overloaded member might not have the effect that you want in all locales.
CA1306CA1306 CA1306: Establecer configuración regional para tipos de datosCA1306: Set locale for data types La configuración regional determina los elementos de presentación específicos de la referencia cultural para los datos, como el formato para los valores numéricos, símbolos de divisa y criterio de ordenación.The locale determines culture-specific presentation elements for data, such as formatting that is used for numeric values, currency symbols, and sort order. Cuando se crea un objeto DataTable o DataSet, debe establecerse explícitamente la configuración regional.When you create a DataTable or DataSet, you should explicitly set the locale.
CA1307CA1307 CA1307: Especificar StringComparisonCA1307: Specify StringComparison Una operación de comparación de cadenas utiliza una sobrecarga de método que no establece un parámetro StringComparison.A string comparison operation uses a method overload that does not set a StringComparison parameter.
CA1308CA1308 CA1308: Normalizar las cadenas en mayúsculasCA1308: Normalize strings to uppercase Las cadenas se deberían normalizar para que se escriban en letras mayúsculas.Strings should be normalized to uppercase. Hay un grupo pequeño de caracteres que no pueden realizar un viaje de ida y vuelta cuando se pasan a minúsculas.A small group of characters cannot make a round trip when they are converted to lowercase.
CA1309CA1309 CA1309: Utilizar StringComparison ordinalCA1309: Use ordinal StringComparison Una operación no lingüística de comparación de cadenas no establece el parámetro StringComparison en Ordinal ni en OrdinalIgnoreCase.A string comparison operation that is nonlinguistic does not set the StringComparison parameter to either Ordinal or OrdinalIgnoreCase. Si se establece explícitamente el parámetro en StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase, el código será más rápido y ganará en precisión y confiabilidad.By explicitly setting the parameter to either StringComparison.Ordinal or StringComparison.OrdinalIgnoreCase, your code often gains speed, becomes more correct, and becomes more reliable.
CA1400CA1400 CA1400: Deben existir puntos de entrada P/InvokeCA1400: P/Invoke entry points should exist Un método público o protegido se marca con el atributo System.Runtime.InteropServices.DllImportAttribute.A public or protected method is marked by using the System.Runtime.InteropServices.DllImportAttribute attribute. No se pudo encontrar la biblioteca no administrada o el método no coincide con una función de la biblioteca.Either the unmanaged library could not be located or the method could not be matched to a function in the library.
CA1401CA1401 CA1401: P/Invoke no deben estar visibleCA1401: P/Invokes should not be visible Un método público o protegido en un tipo público tiene el atributo System.Runtime.InteropServices.DllImportAttribute (también se implementa por la palabra clave Declare en Visual BasicVisual Basic.A public or protected method in a public type has the System.Runtime.InteropServices.DllImportAttribute attribute (also implemented by the Declare keyword in Visual BasicVisual Basic). No se deberían exponer estos métodos.Such methods should not be exposed.
CA1402CA1402 CA1402: Evite sobrecargas en interfaces visibles para COMCA1402: Avoid overloads in COM visible interfaces Cuando se exponen métodos sobrecargados a los clientes COM, sólo la primera sobrecarga de método conserva su nombre.When overloaded methods are exposed to COM clients, only the first method overload retains its name. 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.Subsequent overloads are uniquely renamed by appending to the name an underscore character () and an integer that corresponds to the order of declaration of the overload.
CA1403CA1403 CA1403: Los tipos de diseño automático no deben ser visibles para COMCA1403: Auto layout types should not be COM visible Un tipo de valor Visible a través de COM se marca con el atributo System.Runtime.InteropServices.StructLayoutAttribute establecido en LayoutKind.Auto. El diseño de estos tipos puede cambiar de una versión a otra de .NET Framework.NET Framework, lo que interrumpirá a los clientes COM que esperan un diseño concreto.A COM-visible value type is marked by using the System.Runtime.InteropServices.StructLayoutAttribute attribute set to LayoutKind.Auto. The layout of these types can change between versions of the .NET Framework.NET Framework, which will break COM clients that expect a specific layout.
CA1404CA1404 CA1404: Llame a GetLastError inmediatamente después de P/InvokeCA1404: Call GetLastError immediately after P/Invoke Se realiza una llamada al método Marshal.GetLastWin32Error o al equivalente Win32Win32 función GetLastError y la llamada inmediatamente anterior no es un sistema operativo invoke (método).A call is made to the Marshal.GetLastWin32Error method or the equivalent Win32Win32 GetLastError function, and the immediately previous call is not to an operating system invoke method.
CA1405CA1405 CA1405: Los tipos base de tipos visibles para COM deben ser visibles para COMCA1405: COM visible type base types should be COM visible Un tipo visible a través de COM se deriva de un tipo no visible a través de COM.A COM-visible type derives from a type that is not COM-visible.
CA1406CA1406 CA1406: Evite argumentos Int64 para clientes Visual Basic 6CA1406: Avoid Int64 arguments for Visual Basic 6 clients Los clientes COM de Visual Basic 6 no pueden tener acceso a los enteros de 64 bits.Visual Basic 6 COM clients cannot access 64-bit integers.
CA1407CA1407 CA1407: Evite miembros estáticos en tipos visibles para COMCA1407: Avoid static members in COM visible types COM no es compatible con métodos estáticos.COM does not support static methods.
CA1408CA1408 CA1408: No utilizar AutoDual ClassInterfaceTypeCA1408: Do not use AutoDual ClassInterfaceType Los tipos que utilizan una interfaz dual permiten a los clientes enlazarse a un diseño de interfaz concreto.Types that use a dual interface enable clients to bind to a specific interface layout. 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.Any changes in a future version to the layout of the type or any base types will break COM clients that bind to the interface. De forma predeterminada, si no se especifica el atributo ClassInterfaceAttribute, se utiliza una interfaz solo de envío.By default, if the ClassInterfaceAttribute attribute is not specified, a dispatch-only interface is used.
CA1409CA1409 CA1409: Los tipos visibles COM se deben poder crearCA1409: Com visible types should be creatable 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.A reference type that is specifically marked as visible to COM contains a public parameterized constructor but does not contain a public default (parameterless) constructor. Un tipo sin un constructor predeterminado público no se puede crear mediante clientes COM.A type without a public default constructor is not creatable by COM clients.
CA1410CA1410 CA1410: Los métodos de registro COM se deben asociarCA1410: COM registration methods should be matched Un tipo declara un método marcado con el atributo System.Runtime.InteropServices.ComRegisterFunctionAttribute pero no declara ningún método marcado con el atributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute o viceversa.A type declares a method that is marked by using the System.Runtime.InteropServices.ComRegisterFunctionAttribute attribute but does not declare a method marked by using the System.Runtime.InteropServices.ComUnregisterFunctionAttribute attribute, or vice versa.
CA1411CA1411 CA1411: Los métodos de registro COM no deben ser visiblesCA1411: COM registration methods should not be visible Un método marcado con el atributo System.Runtime.InteropServices.ComRegisterFunctionAttribute o el atributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute es visible externamente.A method marked by using the System.Runtime.InteropServices.ComRegisterFunctionAttribute attribute or the System.Runtime.InteropServices.ComUnregisterFunctionAttribute attribute is externally visible.
CA1412CA1412 CA1412: Marcar las interfaces ComSource como IDispatchCA1412: Mark ComSource Interfaces as 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.A type is marked by using the System.Runtime.InteropServices.ComSourceInterfacesAttribute attribute, and at least one of the specified interfaces is not marked by using the System.Runtime.InteropServices.InterfaceTypeAttribute attribute set to ComInterfaceType.InterfaceIsIDispatch.
CA1413CA1413 CA1413: Evite campos no públicos en tipos de valor visibles para COMCA1413: Avoid non-public fields in COM visible value types Los campos de instancia no públicos de tipos de valor visibles para COM están visibles para los clientes COM.Nonpublic instance fields of COM-visible value types are visible to COM clients. Revise el contenido de los campos para obtener información que no deba exponerse o que tendrá un impacto no deseado sobre la seguridad o el diseño.Review the content of the fields for information that should not be exposed, or that will have unintended design or security effects.
CA1414CA1414 CA1414: Marque los argumentos P/Invoke booleanos con MarshalAsCA1414: Mark boolean P/Invoke arguments with MarshalAs El tipo de datos Boolean tiene varias representaciones en el código no administrado.The Boolean data type has multiple representations in unmanaged code.
CA1415CA1415 CA1415: Declare P/Invoke correctamenteCA1415: Declare P/Invokes correctly Esta regla busca declaraciones de método de invocación de sistema operativo dirigidas a funciones de Win32Win32 que tengan un puntero a un parámetro de estructura OVERLAPPED y el parámetro administrado correspondiente no es un puntero para una estructura System.Threading.NativeOverlapped.This rule looks for operating system invoke method declarations that target Win32Win32 functions that have a pointer to an OVERLAPPED structure parameter and the corresponding managed parameter is not a pointer to a System.Threading.NativeOverlapped structure.
CA1500CA1500 CA1500: Los nombres de las variables no deben coincidir con los nombres de los camposCA1500: Variable names should not match field names Un método de instancia declara un parámetro o una variable local cuyo nombre coincide con un campo de instancia del tipo declarativo, lo que da lugar a errores.An instance method declares a parameter or a local variable whose name matches an instance field of the declaring type, leading to errors.
CA1501CA1501 CA1501: Evite una herencia excesivaCA1501: Avoid excessive inheritance Un tipo tiene más de cuatro niveles de profundidad en su jerarquía de herencia.A type is more than four levels deep in its inheritance hierarchy. Las jerarquías de tipos con demasiados niveles de anidación pueden resultar difíciles de seguir, comprender y mantener.Deeply nested type hierarchies can be difficult to follow, understand, and maintain.
CA1502CA1502 CA1502: Evite la excesiva complejidadCA1502: Avoid excessive complexity Esta regla mide el número de rutas de acceso independientes de forma lineal a través del método, que es determinado por el número y la complejidad de ramas condicionales.This rule measures the number of linearly independent paths through the method, which is determined by the number and complexity of conditional branches.
CA1504CA1504 CA1504: Revise los nombres de campos erróneosCA1504: Review misleading field names El nombre de un campo de instancia empieza por "s_" o el nombre de un campo estático de (Shared en Visual Basic) empieza por "m_".The name of an instance field starts with "s_", or the name of a static (Shared in Visual Basic) field starts with "m_".
CA1505CA1505 CA1505: Evite código que no se puede mantenerCA1505: Avoid unmaintainable code Un tipo o método tiene un valor del índice de mantenimiento bajo.A type or method has a low maintainability index value. Un índice de mantenimiento bajo indica que un tipo o método resulta probablemente difícil de mantener y se debería volver a diseñar.A low maintainability index indicates that a type or method is probably difficult to maintain and would be a good candidate for redesign.
CA1506CA1506 CA1506: Evite el acoplamiento excesivo de clasesCA1506: Avoid excessive class coupling Esta regla mide el acoplamiento de clase contando el número de referencias de tipo únicas que contiene un tipo o método.This rule measures class coupling by counting the number of unique type references that a type or method contains.
CA1600CA1600 CA1600: No utilizar la prioridad del proceso inactivaCA1600: Do not use idle process priority No establezca la prioridad de proceso en Idle.Do not set process priority to Idle. Los procesos que tienen System.Diagnostics.ProcessPriorityClass.Idle ocupan la CPU cuando, de otro modo, estaría inactiva y, por consiguiente, bloquean el estado de espera.Processes that have System.Diagnostics.ProcessPriorityClass.Idle will occupy the CPU when it would otherwise be idle, and will therefore block standby.
CA1601CA1601 CA1601: No utilizar temporizadores que impidan los cambios de estado de energíaCA1601: Do not use timers that prevent power state changes 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 el disco duro.Higher-frequency periodic activity will keep the CPU busy and interfere with power-saving idle timers that turn off the display and hard disks.
CA1700CA1700 CA1700: No nombrar valores de enumeración como 'Reserved'CA1700: Do not name enum values 'Reserved' Esta regla supone que un miembro de la enumeración con un nombre que contiene la palabra "reserved" no se utiliza actualmente pero hace de marcador de posición para que se pueda quitar o cambiar el nombre en una versión posterior.This rule assumes that an enumeration member that has a name that contains "reserved" is not currently used but is a placeholder to be renamed or removed in a future version. Quitar o cambiar el nombre de un miembro es un cambio importante.Renaming or removing a member is a breaking change.
CA1701CA1701 CA1701: En las palabras compuestas de la cadena de recursos se deberían utilizar las mayúsculas y minúsculas correctamenteCA1701: Resource string compound words should be cased correctly Cada palabra en la cadena de recursos se divide en tokens basándose en el uso de mayúsculas y minúsculas.Each word in the resource string is split into tokens based on the casing. La biblioteca de correctores ortográficos de Microsoft comprueba cada combinación de dos tokens contiguos.Each contiguous two-token combination is checked by the Microsoft spelling checker library. Si la reconoce, la palabra genera una infracción de la regla.If recognized, the word produces a violation of the rule.
CA1702CA1702 CA1702: En las palabras compuestas se deberían utilizar las mayúsculas y minúsculas correctamenteCA1702: Compound words should be cased correctly El nombre de un identificador contiene varias palabras y al menos una de ellas parece ser una palabra compuesta en la que no se utilizan correctamente las mayúsculas y minúsculas.The name of an identifier contains multiple words, and at least one of the words appears to be a compound word that is not cased correctly.
CA1703CA1703 CA1703: Las cadenas de recursos deberían tener la ortografía correctaCA1703: Resource strings should be spelled correctly Una cadena de recurso contiene una o varias palabras que la biblioteca de correctores ortográficos de Microsoft no reconoce.A resource string contains one or more words that are not recognized by the Microsoft spelling checker library.
CA1704CA1704 CA1704: Los identificadores deberían tener la ortografía correctaCA1704: Identifiers should be spelled correctly El nombre de un identificador visible externamente contiene una o varias palabras que la biblioteca de correctores ortográficos de Microsoft no reconoce.The name of an externally visible identifier contains one or more words that are not recognized by the Microsoft spelling checker library.
CA1707CA1707 CA1707: Los identificadores no deberían contener subrayadoCA1707: Identifiers should not contain underscores Por convención, los nombres del identificador no contienen el carácter de subrayado ().By convention, identifier names do not contain the underscore () character. Esta regla comprueba espacios de nombres, tipos, miembros y parámetros.This rule checks namespaces, types, members, and parameters.
CA1708CA1708 CA1708: Los identificadores se deberían diferenciar en algo más que en el uso de mayúsculas y minúsculasCA1708: Identifiers should differ by more than case Los identificadores de los espacios de nombres, miembros y parámetros no puede distinguirse sólo por mayúsculas o minúsculas porque los lenguajes que tienen como destino el Common Language Runtime no necesitan distinguir entre mayúsculas y minúsculas.Identifiers for namespaces, types, members, and parameters cannot differ only by case because languages that target the common language runtime are not required to be case-sensitive.
CA1709CA1709 CA1709: Los identificadores deberían utilizar las mayúsculas y minúsculas correctamenteCA1709: Identifiers should be cased correctly Por convención, los nombres de parámetro utilizan la convención Camel de uso de mayúsculas, mientras que los nombres de espacio de nombres, tipo y miembro utilizan la convención Pascal.By convention, parameter names use camel casing and namespace, type, and member names use Pascal casing.
CA1710CA1710 CA1710: Los identificadores deberían tener el sufijo correctoCA1710: Identifiers should have correct suffix Por convención, los nombres de tipos que extienden determinados tipos base o que implementan algunas interfaces, o tipos derivados de estos tipos, tienen un sufijo asociado al tipo base o a la interfaz.By convention, the names of types that extend certain base types or that implement certain interfaces, or types that are derived from these types, have a suffix that is associated with the base type or interface.
CA1711CA1711 CA1711: Los identificadores no deberían tener el sufijo incorrectoCA1711: Identifiers should not have incorrect suffix Por convención, los nombres de tipos que extienden determinados tipos base o que implementan algunas interfaces, o tipos derivados de estos tipos, deben terminar con unos sufijos reservados específicos.By convention, only the names of types that extend certain base types or that implement certain interfaces, or types that are derived from these types, should end with specific reserved suffixes. Otros nombres de tipo no deben utilizar estos sufijos reservados.Other type names should not use these reserved suffixes.
CA1712CA1712 CA1712: No utilizar prefijos en valores de enumeración con el nombre del tipoCA1712: Do not prefix enum values with type name Los nombres de los miembros de la enumeración no llevan el nombre de tipo como prefijo porque se espera que las herramientas de desarrollo proporcionen la información de tipo.Names of enumeration members are not prefixed by using the type name because development tools are expected to provide type information.
CA1713CA1713 CA1713: Los eventos no deberían tener prefijos antes ni despuésCA1713: Events should not have before or after prefix El nombre de un evento empieza por "Before" o "After".The name of an event starts with "Before" or "After". Para nombrar los eventos relacionados que se provocan en una secuencia específica, utilice el tiempo presente o pasado para indicar la posición relativa en la secuencia de acciones.To name related events that are raised in a specific sequence, use the present or past tense to indicate the relative position in the sequence of actions.
CA1714CA1714 CA1714: Las enumeraciones Flags deberían tener nombres en pluralCA1714: Flags enums should have plural names Una enumeración pública tiene el atributo System.FlagsAttribute y su nombre no termina en "s".A public enumeration has the System.FlagsAttribute attribute, and its name does not end in "s". Los tipos marcados con FlagsAttribute tienen nombres en plural porque el atributo indica que se puede especificar más de un valor.Types that are marked by using FlagsAttribute have names that are plural because the attribute indicates that more than one value can be specified.
CA1715CA1715 CA1715: Los identificadores deberían tener el prefijo correctoCA1715: Identifiers should have correct prefix El nombre de una interfaz visible externamente no empieza por "I" mayúscula.The name of an externally visible interface does not start with an uppercase "I". El nombre de un parámetro de tipo genérico en un tipo o método visibles externamente no empieza por "T" mayúscula.The name of a generic type parameter on an externally visible type or method does not start with an uppercase "T".
CA1716CA1716 CA1716: Los identificadores no deberían coincidir con palabras claveCA1716: Identifiers should not match keywords Un nombre de espacio de nombres o un nombre de tipo coinciden con una palabra clave reservada en un lenguaje de programación.A namespace name or a type name matches a reserved keyword in a programming language. Los identificadores para los espacios de nombres y tipos no deberían coincidir con palabras clave definidas por los lenguajes que tienen como destino el Common Language Runtime.Identifiers for namespaces and types should not match keywords that are defined by languages that target the common language runtime.
CA1717CA1717 CA1717: Solo las enumeraciones FlagsAttribute deberían tener nombres en pluralCA1717: Only FlagsAttribute enums should have plural names Las convenciones de nomenclatura establecen que un nombre en plural para una enumeración indica que se pueden especificar varios valores de enumeración al mismo tiempo.Naming conventions dictate that a plural name for an enumeration indicates that more than one value of the enumeration can be specified at the same time.
CA1719CA1719 CA1719: Los nombres de parámetro no deberían coincidir con los nombres de miembroCA1719: Parameter names should not match member names Un nombre de parámetro debe comunicar el significado del parámetro y un nombre de miembro debe comunicar el significado del miembro.A parameter name should communicate the meaning of a parameter and a member name should communicate the meaning of a member. Sería un diseño extraño si éstos fueran los mismos.It would be a rare design where these were the same. Denominar un parámetro igual que el nombre del miembro no es intuitivo y dificulta el uso de la biblioteca.Naming a parameter the same as its member name is unintuitive and makes the library difficult to use.
CA1720CA1720 CA1720: Los identificadores no deben contener nombres de tipoCA1720: Identifiers should not contain type names El nombre de un parámetro en un miembro visible externamente contiene un nombre de tipo de datos o el nombre de un miembro visible externamente contiene un nombre de tipo de datos específico del lenguaje.The name of a parameter in an externally visible member contains a data type name, or the name of an externally visible member contains a language-specific data type name.
CA1721CA1721 CA1721: Los nombres de propiedades no deberían coincidir con los métodos getCA1721: Property names should not match get methods El nombre de un miembro público o protegido empieza por "Get" y en cualquier otro caso coincide con el nombre de una propiedad pública o protegida.The name of a public or protected member starts with "Get" and otherwise matches the name of a public or protected property. Las propiedades y métodos "Get" deberían tener nombres que distingan claramente su función."Get" methods and properties should have names that clearly distinguish their function.
CA1722CA1722 CA1722: Los identificadores no deberían tener el prefijo incorrectoCA1722: Identifiers should not have incorrect prefix Por convención, sólo ciertos elementos de programación tienen nombres que comienzan con un prefijo concreto.By convention, only certain programming elements have names that begin with a specific prefix.
CA1724CA1724 CA1724: Los nombres de tipo no deberían coincidir con los espacios de nombresCA1724: Type Names Should Not Match Namespaces Los nombres de tipo no deben coincidir con los nombres de espacios de nombres definidos en la biblioteca de clases de .NET Framework.NET Framework.Type names should not match the names of namespaces that are defined in the .NET Framework.NET Framework class library. Infringir esta regla puede reducir la utilidad de la biblioteca.Violating this rule can reduce the usability of the library.
CA1725CA1725 CA1725: Los nombres de parámetro deberían coincidir con la declaración baseCA1725: Parameter names should match base declaration El uso del mismo nombre para un parámetro en una jerarquía de reemplazo aumenta la utilidad de los reemplazos de método.Consistent naming of parameters in an override hierarchy increases the usability of the method overrides. Cuando el nombre de un parámetro en un método derivado es distinto del nombre de la declaración base, puede resultar difícil determinar si el método es un reemplazo del método base o una nueva sobrecarga del método.A parameter name in a derived method that differs from the name in the base declaration can cause confusion about whether the method is an override of the base method or a new overload of the method.
CA1726CA1726 CA1726: Utilizar términos preferidosCA1726: Use preferred terms El nombre de un identificador visible externamente incluye un término para el que existe un término alternativo más apropiado.The name of an externally visible identifier includes a term for which an alternative, preferred term exists. Alternativamente, el nombre incluye el término "Flag" o "Flags".Alternatively, the name includes the term "Flag" or "Flags".
CA1800CA1800 CA1800: No convertir innecesariamenteCA1800: Do not cast unnecessarily Las conversiones duplicadas reducen el rendimiento, sobre todo cuando se realizan en instrucciones de iteración compactas.Duplicate casts decrease performance, especially when the casts are performed in compact iteration statements.
CA1801CA1801 CA1801: Revisar parámetros sin utilizarCA1801: Review unused parameters Una firma de método incluye un parámetro que no se utiliza en el cuerpo del método.A method signature includes a parameter that is not used in the method body.
CA1802CA1802 CA1802: Utilizar letras cuando sea apropiadoCA1802: Use Literals Where Appropriate Un campo se declara como static y de solo lectura (Shared y ReadOnly en Visual BasicVisual Basic) y se inicializa con un valor que se puede calcular durante la compilación.A field is declared static and read-only (Shared and ReadOnly in Visual BasicVisual Basic), and is initialized by using a value that is computable at compile time. Dado que el valor que se asigna al campo de destino se calcula en tiempo de compilación, cambie la declaración a una variable const (Const en Visual BasicVisual Basic) campo para que el valor se calcula en tiempo de compilación en lugar de en tiempo de ejecución.Because the value that is assigned to the targeted field is computable at compile time, change the declaration to a const (Const in Visual BasicVisual Basic) field so that the value is computed at compile time instead of at run time.
CA1804CA1804 CA1804: Quitar variables locales no utilizadasCA1804: Remove unused locals Las variables locales no usadas y las asignaciones innecesarias aumentan el tamaño de un ensamblado y reducen el rendimiento.Unused local variables and unnecessary assignments increase the size of an assembly and decrease performance.
CA1806CA1806 CA1806: No omitir resultados del métodoCA1806: Do not ignore method results Se crea un nuevo objeto pero nunca se utiliza, o se llama a un método que crea y devuelve una nueva cadena y esta nunca se utiliza, o un método COM o P/Invoke devuelve un código de error o HRESULT que nunca se utiliza.A new object is created but never used; or a method that creates and returns a new string is called and the new string is never used; or a COM or P/Invoke method returns an HRESULT or error code that is never used.
CA1809CA1809 CA1809: Evitar variables locales excesivasCA1809: Avoid excessive locals Una optimización de rendimiento común es almacenar un valor en un registro del procesador en lugar de en la memoria, lo que se denomina "registrar el valor".A common performance optimization is to store a value in a processor register instead of memory, which is referred to as "enregistering the value". Para aumentar la posibilidad de que todas las variables locales se registren, limite el número de variables locales a 64.To increase the chance that all local variables are enregistered, limit the number of local variables to 64.
CA1810CA1810 CA1810: Inicializar campos estáticos de tipo de referencia insertadosCA1810: Initialize reference type static fields inline Cuando un tipo declara un constructor estático explícito, el compilador Just-In-Time (JIT) agrega una comprobación a cada constructor de instancia y a cada método estático del tipo para asegurarse de que se ha llamado anteriormente al constructor estático.When a type declares an explicit static constructor, the just-in-time (JIT) compiler adds a check to each static method and instance constructor of the type to make sure that the static constructor was previously called. Las comprobaciones del constructor estático pueden reducir el rendimiento.Static constructor checks can decrease performance.
CA1811CA1811 CA1811: Evitar código privado al que no se llamaCA1811: Avoid uncalled private code Un miembro interno o privado (nivel de ensamblado) no tiene llamadores en el ensamblado, no es invocado por Common Language Runtime ni tampoco por un delegado.A private or internal (assembly-level) member does not have callers in the assembly; it is not invoked by the common language runtime; and it is not invoked by a delegate.
CA1812CA1812 CA1812: Evitar las clases internas sin instanciaCA1812: Avoid uninstantiated internal classes El código del ensamblado no crea una instancia del tipo del nivel de ensamblado.An instance of an assembly-level type is not created by code in the assembly.
CA1813CA1813 CA1813: Evitar atributos no selladosCA1813: Avoid unsealed attributes La biblioteca de clases de .NET Framework.NET Framework proporciona los métodos para recuperar los atributos personalizados.The .NET Framework.NET Framework class library provides methods for retrieving custom attributes. De forma predeterminada, estos métodos buscan la jerarquía de herencia de atributo.By default, these methods search the attribute inheritance hierarchy. La acción de sellar el atributo elimina la búsqueda en la jerarquía de herencia y puede mejorarse el rendimiento.Sealing the attribute eliminates the search through the inheritance hierarchy and can improve performance.
CA1814CA1814 CA1814: Preferir las matrices escalonadas antes que multidimensionalesCA1814: Prefer jagged arrays over multidimensional Una matriz escalonada es una matriz cuyos elementos son matrices.A jagged array is an array whose elements are arrays. Las matrices que constituyen los elementos pueden ser de tamaños diferentes, reduciendo el espacio desaprovechado para algunos conjuntos de datos.The arrays that make up the elements can be of different sizes, leading to less wasted space for some sets of data.
CA1815CA1815 CA1815: Invalidar Equals y el operador Equals en los tipos de valoresCA1815: Override equals and operator equals on value types Para los tipos de valor, la implementación heredada de Equals utiliza la biblioteca de reflexión y compara el contenido de todos los campos.For value types, the inherited implementation of Equals uses the Reflection library and compares the contents of all fields. Mediante el cálculo, la reflexión es cara y no es necesario comparar cada campo para comprobar si hay igualdad.Reflection is computationally expensive, and comparing every field for equality might be unnecessary. Si espera que los usuarios comparen u ordenen instancias, o utilicen instancias como claves de tabla hash, el tipo de valor debe implementar Equals.If you expect users to compare or sort instances, or to use instances as hash table keys, your value type should implement Equals.
CA1816CA1816 CA1816: Llame a GC.SuppressFinalize correctamenteCA1816: Call GC.SuppressFinalize correctly Un método que es una implementación de Dispose no llama a GC. SuppressFinalize; o bien, un método que no es una implementación de Dispose llama a GC. SuppressFinalize; o bien, un método llama a GC. SuppressFinalize y pasa algo distinto de esto (Me en Visual Basic).A method that is an implementation of Dispose does not call GC.SuppressFinalize; or a method that is not an implementation of Dispose calls GC.SuppressFinalize; or a method calls GC.SuppressFinalize and passes something other than this (Me in Visual Basic).
CA1819CA1819 CA1819: Las propiedades no deberían devolver matricesCA1819: Properties should not return arrays Las matrices devueltas por las propiedades no están protegidas contra escritura, aun cuando la propiedad es de solo lectura.Arrays that are returned by properties are not write-protected, even when the property is read-only. Para mantener la matriz inviolable, la propiedad debe devolver una copia de la matriz.To keep the array tamper-proof, the property must return a copy of the array. Por lo general, los usuarios no entienden las implicaciones de rendimiento adversas que se originan al llamar a este tipo de propiedad.Typically, users will not understand the adverse performance implications of calling such a property.
CA1820CA1820 CA1820: Comprobar si las cadenas están vacías mediante la longitud de cadenaCA1820: Test for empty strings using string length El uso de la propiedad String.Length o del método String.IsNullOrEmpty para comparar cadenas es mucho más rápido que el uso de Equals.Comparing strings by using the String.Length property or the String.IsNullOrEmpty method is significantly faster than using Equals.
CA1821CA1821 CA1821: Quitar los finalizadores vacíosCA1821: Remove empty finalizers Siempre que pueda, evite los finalizadores debido a la sobrecarga de rendimiento adicional necesaria para el seguimiento de la duración del objeto.Whenever you can, avoid finalizers because of the additional performance overhead that is involved in tracking object lifetime. Un finalizador vacío produce una sobrecarga adicional sin ningún beneficio.An empty finalizer incurs added overhead and delivers no benefit.
CA1822CA1822 CA1822: Marcar el miembro como estáticoCA1822: Mark members as static Los miembros que no tienen acceso a datos de instancia o que llaman a métodos de instancia se pueden marcar como static (Shared en Visual BasicVisual Basic).Members that do not access instance data or call instance methods can be marked as static (Shared in Visual BasicVisual Basic). Después de marcar los métodos como static, el compilador emite los sitios de llamada no virtuales para estos miembros.After you mark the methods as static, the compiler will emit nonvirtual call sites to these members. Esto puede proporcionar una mejora apreciable del rendimiento del código en el que el rendimiento es fundamental.This can give you a measurable performance gain for performance-sensitive code.
CA1823CA1823 CA1823: Evitar los campos privados sin utilizarCA1823: Avoid unused private fields Se detectaron campos privados a los que no parece que se tenga acceso en el ensamblado.Private fields were detected that do not appear to be accessed in the assembly.
CA1824CA1824 CA1824: Marque los ensamblados con NeutralResourcesLanguageAttributeCA1824: Mark assemblies with NeutralResourcesLanguageAttribute El atributo NeutralResourcesLanguage informa a ResourceManager del idioma utilizado para mostrar los recursos de la referencia cultural neutral de un ensamblado.The NeutralResourcesLanguage attribute informs the ResourceManager of the language that was used to display the resources of a neutral culture for an assembly. Esto mejora el rendimiento de la búsqueda del primer recurso que se carga y puede reducir el espacio de trabajo.This improves lookup performance for the first resource that you load and can reduce your working set.
CA1900CA1900 CA1900: Los campos de tipo de valor deberían ser portátilesCA1900: Value type fields should be portable Esta regla comprueba que las estructuras declaradas mediante un atributo de diseño explícito se alinearán correctamente cuando se calculen las referencias al código no administrado en sistemas operativos de 64 bits.This rule checks that structures that are declared by using explicit layout will align correctly when marshaled to unmanaged code on 64-bit operating systems.
CA1901CA1901 CA1901: Las declaraciones P/Invoke deben ser portátilesCA1901: P/Invoke declarations should be portable Esta regla evalúa el tamaño de cada parámetro y el valor devuelto de P/Invoke, y comprueba que el tamaño del parámetro sea correcto al calcular las referencias para su conversión en código no administrado en sistemas operativos de 32 y 64 bits.This rule evaluates the size of each parameter and the return value of a P/Invoke, and verifies that the size of the parameter is correct when marshaled to unmanaged code on 32-bit and 64-bit operating systems.
CA1903CA1903 CA1903: Usar solo API de la versión de .NET Framework de destinoCA1903: Use only API from targeted framework Un miembro o tipo utiliza un miembro o tipo que se introdujo en un Service Pack no incluido junto con la versión de .NET Framework de destino del proyecto.A member or type is using a member or type that was introduced in a service pack that was not included together with the targeted framework of the project.
CA2000CA2000 CA2000: Desechar (Dispose) objetos antes de perder el ámbitoCA2000: Dispose objects before losing scope Dado que podría producirse un evento excepcional que evitaría que el finalizador de un objeto se ejecutase, el objeto debe estar disponible en su lugar antes de que todas las referencias a él estén fuera del ámbito.Because an exceptional event might occur that will prevent the finalizer of an object from running, the object should be explicitly disposed before all references to it are out of scope.
CA2001CA2001 CA2001: Evitar llamar a métodos problemáticosCA2001: Avoid calling problematic methods Un miembro llama a un método potencialmente peligroso o problemático.A member calls a potentially dangerous or problematic method.
CA2002CA2002 CA2002: No bloquear objetos con identidad débilCA2002: Do not lock on objects with weak identity Se dice que un objeto tiene una identidad débil cuando se puede tener acceso directamente a través de los límites del dominio de aplicación.An object is said to have a weak identity when it can be directly accessed across application domain boundaries. Un subproceso que intenta obtener un bloqueo en un objeto que tiene identidad débil se puede bloquear con un segundo subproceso en un dominio de aplicación diferente que tenga bloqueado el mismo objeto.A thread that tries to acquire a lock on an object that has a weak identity can be blocked by a second thread in a different application domain that has a lock on the same object.
CA2003CA2003 CA2003: No tratar fibras como subprocesosCA2003: Do not treat fibers as threads Un subproceso administrado se trata como un subproceso de Win32Win32.A managed thread is being treated as a Win32Win32 thread.
CA2004CA2004 CA2004: Quitar las llamadas a GC.KeepAliveCA2004: Remove calls to GC.KeepAlive Al efectuar la conversión para utilizar SafeHandle, quite todas las llamadas a GC.KeepAlive (objeto).If you convert to SafeHandle usage, remove all calls to GC.KeepAlive (object). En este caso, las clases no deberían tener que llamar a GC.KeepAlive.In this case, classes should not have to call GC.KeepAlive. Esto supone que no tienen un finalizador sino que depende de SafeHandle para finalizar el identificador de sistema operativo.This assumes they do not have a finalizer but rely on SafeHandle to finalize the OS handle for them.
CA2006CA2006 CA2006: Utilizar SafeHandle para encapsular recursos nativosCA2006: Use SafeHandle to encapsulate native resources El uso de IntPtr en código administrado podría indicar un posible problema para la seguridad y la confiabilidad.Use of IntPtr in managed code might indicate a potential security and reliability problem. Todos los usos de IntPtr se deben revisar para determinar si se necesita utilizar en su lugar SafeHandle o una tecnología similar.All uses of IntPtr must be reviewed to determine whether use of a SafeHandle, or similar technology, is required in its place.
CA2100CA2100 CA2100: Revisar consultas SQL para comprobar si tienen vulnerabilidades de seguridadCA2100: Review SQL queries for security vulnerabilities Un método establece la propiedad System.Data.IDbCommand.CommandText utilizando una cadena que se construye partiendo de un argumento de cadena para el método.A method sets the System.Data.IDbCommand.CommandText property by using a string that is built from a string argument to the method. Esta regla supone que el argumento de cadena contiene datos proporcionados por el usuario.This rule assumes that the string argument contains user input. Una cadena de comandos de SQL compilada a partir de datos proporcionados por el usuario es vulnerable a ataques de inserción de SQL.A SQL command string that is built from user input is vulnerable to SQL injection attacks.
CA2101CA2101 CA2101: Especifique cálculo de referencias para argumentos de cadena P/InvokeCA2101: Specify marshaling for P/Invoke string arguments Un miembro de invocación de plataforma permite llamadores que no son de plena confianza y no serializa explícitamente la cadena.A platform invoke member allows partially trusted callers, has a string parameter, and does not explicitly marshal the string. Esto puede producir una vulnerabilidad de seguridad.This can cause a potential security vulnerability.
CA2102CA2102 CA2102: Detectar las excepciones que no son CLSCompliant en los controladores generalesCA2102: Catch non-CLSCompliant exceptions in general handlers Un miembro de un ensamblado que no está marcado con el atributo RuntimeCompatibilityAttribute o está marcado con RuntimeCompatibility(WrapNonExceptionThrows = false) contiene un bloque catch que controla el objeto System.Exception y no contiene un bloque catch general inmediatamente después.A member in an assembly that is not marked by using the RuntimeCompatibilityAttribute or is marked RuntimeCompatibility(WrapNonExceptionThrows = false) contains a catch block that handles System.Exception and does not contain an immediately following general catch block.
CA2103CA2103 CA2103: Revisar la seguridad imperativaCA2103: Review imperative security Un método utiliza la seguridad imperativa y podría estar creando el permiso utilizando la información de estado y los valores devueltos que pueden cambiar mientras la solicitud está activa.A method uses imperative security and might be constructing the permission by using state information or return values that can change as long as the demand is active. Utilice la seguridad declarativa siempre que sea posible.Use declarative security whenever possible.
CA2104CA2104 CA2104: No declarar tipos de referencias mutables de solo lecturaCA2104: Do not declare read only mutable reference types Un tipo visible externamente contiene un campo de sólo lectura visible externamente que es un tipo de referencia que se puede cambiar.An externally visible type contains an externally visible read-only field that is a mutable reference type. Un tipo que mutable es un tipo cuyos datos de instancia se pueden modificar.A mutable type is a type whose instance data can be modified.
CA2105CA2105 CA2105: Los campos de matrices no deberían ser de solo lecturaCA2105: Array fields should not be read only Cuando se aplica el modificador de solo lectura (ReadOnly en Visual BasicVisual Basic) a un campo que contiene una matriz, el campo no se puede modificar para hacer referencia a una matriz distinta.When you apply the read-only (ReadOnly in Visual BasicVisual Basic) modifier to a field that contains an array, the field cannot be changed to reference a different array. Sin embargo, se pueden cambiar los elementos de la matriz almacenados en un campo de solo lectura.However, the elements of the array that are stored in a read-only field can be changed.
CA2106CA2106 CA2106: Asegurar asercionesCA2106: Secure asserts Un método valida un permiso y no se realiza ninguna comprobación de seguridad en el llamador.A method asserts a permission and no security checks are performed on the caller. Validar un permiso de seguridad sin realizar ninguna comprobación de seguridad puede dejar una debilidad de seguridad explotable en el código.Asserting a security permission without performing any security checks can leave an exploitable security weakness in your code.
CA2107CA2107 CA2107: Revisar el uso de Deny y PermitOnlyCA2107: Review deny and permit only usage Utilizando el método PermitOnly y CodeAccessPermission.Deny solamente se debe utilizar acciones de seguridad si se conoce en profundidad la seguridad de .NET Framework.NET Framework.The PermitOnly method and CodeAccessPermission.Deny security actions should be used only by those who have an advanced knowledge of .NET Framework.NET Framework security. Debería realizarse una revisión de la seguridad del código que utiliza estas acciones de seguridad.Code that uses these security actions should undergo a security review.
CA2108CA2108 CA2108: Revisar la seguridad declarativa en los tipos de valoresCA2108: Review declarative security on value types Un tipo de valor público o protegido está protegido por acceso a datos o peticiones de vínculos.A public or protected value type is secured by Data Access or Link Demands.
CA2109CA2109 CA2109: Revisar los controladores de eventos visiblesCA2109: Review visible event handlers Se detectó un método de control de eventos público o protegido.A public or protected event-handling method was detected. No se deberían exponer los métodos de control de eventos a menos que sea absolutamente necesario.Event-handling methods should not be exposed unless absolutely necessary.
CA2111CA2111 CA2111: Los punteros no deberían estar visiblesCA2111: Pointers should not be visible Un puntero no es privado, interno ni de solo lectura.A pointer is not private, internal, or read-only. El código malintencionado puede cambiar el valor del puntero, permitiendo potencialmente el acceso a ubicaciones arbitrarias en memoria o provocando errores del sistema o de aplicación.Malicious code can change the value of the pointer, which potentially gives access to arbitrary locations in memory or causes application or system failures.
CA2112CA2112 CA2112: Los tipos seguros no deberían exponer camposCA2112: Secured types should not expose fields Un tipo público o protegido contiene campos públicos y está protegido por peticiones de vínculos.A public or protected type contains public fields and is secured by Link Demands. Si el código tiene acceso a una instancia de tipo que está protegida por una solicitud de vínculo, el código no cumplirá la solicitud para obtener acceso a los campos del tipo.If code has access to an instance of a type that is secured by a link demand, the code does not have to satisfy the link demand to access the fields of the type.
CA2114CA2114 CA2114: La seguridad del método debería ser un supraconjunto del tipoCA2114: Method security should be a superset of type Un método no debe tener seguridad declarativa en el nivel de método y de tipo para la misma acción.A method should not have both method-level and type-level declarative security for the same action.
CA2115CA2115 CA2115: Llamar a GC.KeepAlive cuando se utilicen recursos nativosCA2115: Call GC.KeepAlive when using native resources Esta regla detecta errores que pueden haberse producido porque se finaliza un recurso no administrado mientras todavía se utiliza en código no administrado.This rule detects errors that might occur because an unmanaged resource is being finalized while it is still being used in unmanaged code.
CA2116CA2116 CA2116: Los métodos APTCA deben llamar solo a métodos APTCACA2116: APTCA methods should only call APTCA methods Si está presente el atributo APTCA (AllowPartiallyTrustedCallersAttribute) en un ensamblado de plena confianza y el ensamblado ejecuta código en otro ensamblado que permite llamadores parcialmente confiables, se puede producir un ataque en el sistema de seguridad.When the APTCA (AllowPartiallyTrustedCallersAttribute) is present on a fully trusted assembly, and the assembly executes code in another assembly that does not allow for partially trusted callers, a security exploit is possible.
CA2117CA2117 CA2117: Los tipos APTCA solo amplían tipos base APTCACA2117: APTCA types should only extend APTCA base types Si está presente el atributo APTCA en un ensamblado de plena confianza y un tipo del ensamblado se hereda de otro que permite llamadores parcialmente confiables, se puede producir un ataque de seguridad.When the APTCA is present on a fully trusted assembly, and a type in the assembly inherits from a type that does not allow for partially trusted callers, a security exploit is possible.
CA2118CA2118 CA2118: Revisar el uso de SuppressUnmanagedCodeSecurityAttributeCA2118: Review SuppressUnmanagedCodeSecurityAttribute usage SuppressUnmanagedCodeSecurityAttribute cambia el comportamiento del sistema de seguridad predeterminado por miembros que ejecutan código no administrado que utiliza la interoperabilidad COM o la invocación de sistema operativo.SuppressUnmanagedCodeSecurityAttribute changes the default security system behavior for members that execute unmanaged code that uses COM interop or operating system invocation. Este atributo se utiliza principalmente para aumentar el rendimiento; sin embargo, las mejoras de rendimiento suponen riesgos de seguridad importantes.This attribute is primarily used to increase performance; however, the performance gains come together with significant security risks.
CA2119CA2119 CA2119: Sellar los métodos que satisfacen las interfaces privadasCA2119: Seal methods that satisfy private interfaces Un tipo público heredable proporciona una implementación de método reemplazable de una interfaz interna (de tipo "Friend" en Visual BasicVisual Basic).An inheritable public type provides an overridable method implementation of an internal (Friend in Visual BasicVisual Basic) interface. Para corregir una infracción de esta regla, impida que el método se invalide fuera del ensamblado.To fix a violation of this rule, prevent the method from being overridden outside the assembly.
CA2120CA2120 CA2120: Proteger los constructores de serializacionesCA2120: Secure serialization constructors Este tipo tiene un constructor que toma un objeto System.Runtime.Serialization.SerializationInfo y un objeto System.Runtime.Serialization.StreamingContext (la firma del constructor de serialización).This type has a constructor that takes a System.Runtime.Serialization.SerializationInfo object and a System.Runtime.Serialization.StreamingContext object (the signature of the serialization constructor). Una comprobación de seguridad no protege este constructor, pero protege uno o más constructores regulares del tipo.This constructor is not secured by a security check, but one or more of the regular constructors in the type are secured.
CA2121CA2121 CA2121: Los constructores estáticos deberían ser privadosCA2121: Static constructors should be private El sistema llama al constructor estático antes de crear la primera instancia del tipo o antes de hacer referencia a cualquier miembro estático.The system calls the static constructor before the first instance of the type is created or any static members are referenced. Si un constructor estático no es privado, se puede llamar a través de un código distinto del sistema.If a static constructor is not private, it can be called by code other than the system. En función de las operaciones que se realizan en el constructor, esto puede producir un comportamiento inesperado.Depending on the operations that are performed in the constructor, this can cause unexpected behavior.
CA2122CA2122 CA2122: No exponer indirectamente métodos con peticiones de vínculosCA2122: Do not indirectly expose methods with link demands Un miembro público o protegido tiene peticiones de vínculos y lo llama un miembro que no realiza ninguna comprobación de seguridad.A public or protected member has Link Demands and is called by a member that does not perform any security checks. Una solicitud de vínculo sólo comprueba los permisos del llamador inmediato.A link demand checks the permissions of the immediate caller only.
CA2123CA2123 CA2123: Las peticiones de vínculo de invalidaciones deberían ser idénticas a la baseCA2123: Override link demands should be identical to base Esta regla compara un método con su método base, que es una interfaz o un método virtual de otro tipo y, a continuación, compara las solicitudes de vínculos en cada uno.This rule matches a method to its base method, which is either an interface or a virtual method in another type, and then compares the link demands on each. Si se infringe esta regla, un llamador malintencionado puede omitir la petición de vínculo tan solo con llamar al método no seguro.If this rule is violated, a malicious caller can bypass the link demand just by calling the unsecured method.
CA2124CA2124 CA2124: Incluir cláusulas finally vulnerables en un bloque try externoCA2124: Wrap vulnerable finally clauses in outer try Un método público o protegido contiene un bloque try/finally.A public or protected method contains a try/finally block. El bloque finally aparece para restablecer el estado de seguridad y no se incluye a sí mismo en un bloque finally.The finally block appears to reset the security state and is not itself enclosed in a finally block.
CA2126CA2126 CA2126: Las peticiones de vínculos de tipos requieren peticiones de herenciasCA2126: Type link demands require inheritance demands Un tipo público no sellado está protegido con una petición de vínculo y tiene un método reemplazable.A public unsealed type is protected by using a link demand and has an overridable method. Ni el tipo ni el método están protegidos con una petición de herencia.Neither the type nor the method is protected by using an inheritance demand.
CA2127CA2127 CA2136: Los miembros no deben tener anotaciones de transparencia en conflictoCA2136: Members should not have conflicting transparency annotations No puede haber código crítico en un ensamblado 100 por ciento transparente.Critical code cannot occur in a 100 percent-transparent assembly. Esta regla analiza los ensamblados 100 por ciento transparentes para detectar cualquier anotación de SecurityCritical en los niveles de método, el campo y el tipo.This rule analyzes 100 percent-transparent assemblies for any SecurityCritical annotations at the type, field, and method levels.
CA2128CA2128 CA2147: Los métodos transparentes no pueden usar aserciones de seguridadCA2147: Transparent methods may not use security asserts Esta regla analiza todos los métodos y tipos de un ensamblado que es 100 por ciento transparente o mixto de transparente y crítico y marca cualquier uso declarativo o imperativo de Assert.This rule analyzes all methods and types in an assembly that is either 100 percent-transparent or mixed transparent/critical, and flags any declarative or imperative use of Assert.
CA2129CA2129 CA2140: El código transparente no debe hacer referencia a elementos críticos para la seguridadCA2140: Transparent code must not reference security critical items Los métodos que se marcan con el atributo SecurityTransparentAttribute llaman a miembros no públicos marcados como SecurityCritical.Methods that are marked by SecurityTransparentAttribute call nonpublic members that are marked as SecurityCritical. Esta regla analiza todos los métodos y tipos de un ensamblado que tiene una mezcla de transparente y crítico, y marca las llamadas desde código transparente a código crítico no público que no están marcadas como SecurityTreatAsSafe.This rule analyzes all methods and types in an assembly that is mixed transparent/critical, and flags any calls from transparent code to nonpublic critical code that are not marked as SecurityTreatAsSafe.
CA2130CA2130 CA2130: Las constantes críticas para la seguridad deben ser transparentesCA2130: Security critical constants should be transparent El cumplimiento de la transparencia no se exige para los valores constantes porque los compiladores alinean los valores constantes para que no se requiera ninguna búsqueda en tiempo de ejecución.Transparency enforcement is not enforced for constant values because compilers inline constant values so that no lookup is required at run time. Los campos constantes deberían ser transparentes en seguridad de modo que los revisores del código no supongan que el código transparente no puede tener acceso a la constante.Constant fields should be security transparent so that code reviewers do not assume that transparent code cannot access the constant.
CA2131CA2131 CA2131: Los tipos críticos para la seguridad no pueden participar en la equivalencia de tiposCA2131: Security critical types may not participate in type equivalence Un tipo participa en la equivalencia de tipos y el propio tipo, o un miembro o campo del tipo, se marca mediante el atributo SecurityCriticalAttribute.A type participates in type equivalence and either the type itself, or a member or field of the type, is marked by using the SecurityCriticalAttribute attribute. Esta regla se produce en todos los tipos críticos o en los tipos que contienen métodos o campos críticos que participan en la equivalencia de tipos.This rule occurs on any critical types or types that contain critical methods or fields that are participating in type equivalence. Cuando CLR detecta esta clase de tipo, no lo carga con TypeLoadException en tiempo de ejecución.When the CLR detects such a type, it does not load it with a TypeLoadException at run time. Normalmente, esta regla solo se genera cuando los usuarios implementan la equivalencia de tipos de forma manual, en vez de basarse en tlbimp y en los compiladores para realizar la equivalencia de tipos.Typically, this rule is raised only when users implement type equivalence manually instead of in by relying on tlbimp and the compilers to do the type equivalence.
CA2132CA2132 CA2132: Los constructores predeterminados deben ser al menos tan críticos para la seguridad como los constructores predeterminados de tipo baseCA2132: Default constructors must be at least as critical as base type default constructors El código de la aplicación Silverlight no puede usar los tipos y miembros con SecurityCriticalAttribute.Types and members that have the SecurityCriticalAttribute cannot be used by Silverlight application code. Los tipos y miembros críticos para la seguridad solo los puede usar el código de confianza de .NET Framework.NET Framework para la biblioteca de clases de Silverlight.Security-critical types and members can be used only by trusted code in the .NET Framework.NET Framework for Silverlight class library. Dado que una construcción pública o protegida en una clase derivada debe tener la misma transparencia, o mayor, que su clase base, una clase de una aplicación no puede derivar de una clase marcada como SecurityCritical.Because a public or protected construction in a derived class must have the same or greater transparency than its base class, a class in an application cannot be derived from a class marked as SecurityCritical.
CA2133CA2133 CA2133: Los delegados deben enlazarse a métodos con una transparencia coherenteCA2133: Delegates must bind to methods with consistent transparency Esta advertencia se genera en un método que enlaza un delegado marcado mediante SecurityCriticalAttribute a un método que es transparente o está marcado con SecuritySafeCriticalAttribute.This warning is raised on a method that binds a delegate that is marked by using the SecurityCriticalAttribute to a method that is transparent or that is marked by using the SecuritySafeCriticalAttribute. La advertencia también desencadena un método que enlaza un delegado transparente o crítico para la seguridad a un método crítico.The warning also is raised on a method that binds a delegate that is transparent or safe-critical to a critical method.
CA2134CA2134 CA2134: Los métodos deben mantener una transparencia coherente al invalidar métodos baseCA2134: Methods must keep consistent transparency when overriding base methods Esta regla se genera cuando un método marcado mediante SecurityCriticalAttribute invalida un método que es transparente o está marcado con SecuritySafeCriticalAttribute.This rule is raised when a method marked by using the SecurityCriticalAttribute overrides a method that is transparent or marked by using the SecuritySafeCriticalAttribute. Esta regla también se genera cuando un método marcado mediante SecurityCriticalAttribute invalida un método que es transparente o está marcado con SecuritySafeCriticalAttribute.The rule also is raised when a method that is transparent or marked by using the SecuritySafeCriticalAttribute overrides a method that is marked by using a SecurityCriticalAttribute. Se aplica la regla al invalidar un método virtual o implementar una interfaz.The rule is applied when overriding a virtual method or implementing an interface.
CA2135CA2135 CA2135: Los ensamblados de nivel 2 no deben contener LinkDemandsCA2135: Level 2 assemblies should not contain LinkDemands LinkDemands está desusado en el conjunto de reglas de seguridad de nivel 2.LinkDemands are deprecated in the level 2 security rule set. En lugar de utilizar LinkDemands para exigir la seguridad en el momento de la compilación Just-In-Time (JIT), marque los métodos, tipos y campos con el atributo SecurityCriticalAttribute.Instead of using LinkDemands to enforce security at JIT compilation time, mark the methods, types, and fields by using the SecurityCriticalAttribute attribute.
CA2136CA2136 CA2136: Los miembros no deben tener anotaciones de transparencia en conflictoCA2136: Members should not have conflicting transparency annotations Los atributos de transparencia se aplican de los elementos de código de ámbito mayor a los elementos de ámbito menor.Transparency attributes are applied from code elements of larger scope to elements of smaller scope. Los atributos de transparencia de los elementos de código con mayor ámbito tienen prioridad sobre los atributos de transparencia de los elementos de código incluidos en el primer elemento.The transparency attributes of code elements that have larger scope take precedence over transparency attributes of code elements that are contained in the first element. Por ejemplo, una clase marcada con el atributo SecurityCriticalAttribute no puede contener un método marcado con el atributo SecuritySafeCriticalAttribute.For example, a class that is marked by using the SecurityCriticalAttribute attribute cannot contain a method that is marked by using the SecuritySafeCriticalAttribute attribute.
CA2137CA2137 CA2137: Los métodos transparentes deben contener solo IL que se pueda comprobarCA2137: Transparent methods must contain only verifiable IL Un método contiene código que no se puede comprobar o devuelve un tipo por referencia.A method contains unverifiable code or returns a type by reference. Esta regla se desencadena en los intentos del código transparente en seguridad de ejecutar MISL no comprobable (Lenguaje intermedio de Microsoft).This rule is raised on attempts by security transparent code to execute unverifiable microsoft intermediate language (MISL). Sin embargo, la regla no contiene un comprobador de IL completo y, en su lugar, utiliza la heurística para detectar la mayoría de las infracciones de comprobación MSIL.However, the rule does not contain a full IL verifier, and instead uses heuristics to catch most violations of MSIL verification.
CA2138CA2138 CA2138: Los métodos transparentes no deben llamar a métodos con el atributo SuppressUnmanagedCodeSecurityCA2138: Transparent methods must not call methods with the SuppressUnmanagedCodeSecurity attribute Un método transparente en seguridad llama a un método marcado mediante el atributo SuppressUnmanagedCodeSecurityAttribute.A security transparent method calls a method that is marked by using the SuppressUnmanagedCodeSecurityAttribute attribute.
CA2139CA2139 CA2139: Los métodos transparentes no pueden usar el atributo HandleProcessCorruptingExceptionsCA2139: Transparent methods may not use the HandleProcessCorruptingExceptions attribute Esta regla la desencadena cualquier método que sea transparente e intente controlar una excepción de daño de proceso utilizando el atributo HandleProcessCorruptedStateExceptionsAttribute.This rule is raised by any method that is transparent and attempts to handle a process corrupting exception by using the HandleProcessCorruptedStateExceptionsAttribute attribute. Una excepción de daño de proceso en la versión 4.0 de CLR es una clasificación de excepciones como AccessViolationException.A process corrupting exception is a CLR version 4.0 exception classification of exceptions such as AccessViolationException. El atributo HandleProcessCorruptedStateExceptionsAttribute solo lo pueden utilizar los métodos críticos para la seguridad, y se omitirá si se aplica a un método transparente.The HandleProcessCorruptedStateExceptionsAttribute attribute may be used only by security critical methods, and will be ignored if it is applied to a transparent method.
CA2140CA2140 CA2140: El código transparente no debe hacer referencia a elementos críticos para la seguridadCA2140: Transparent code must not reference security critical items Un elemento de código que se marca con el atributo SecurityCriticalAttribute es crítico para la seguridad.A code element that is marked by using the SecurityCriticalAttribute attribute is security critical. Un método transparente no puede utilizar un elemento crítico para la seguridad.A transparent method cannot use a security critical element. Si un tipo transparente intenta usar un tipo crítico para la seguridad, se produce una excepción TypeAccessException, MethodAccessException o FieldAccessException.If a transparent type attempts to use a security critical type, a TypeAccessException, MethodAccessException, or FieldAccessException is raised.
CA2141CA2141 CA2141: Los métodos transparentes no deben satisfacer LinkDemandsCA2141:Transparent methods must not satisfy LinkDemands Un método transparente en seguridad llama a un método de un ensamblado no marcado mediante APTCA o bien satisface un LinkDemand para un tipo o método.A security transparent method calls a method in an assembly that is not marked by using the APTCA, or a security transparent method satisfies a LinkDemand for a type or a method.
CA2142CA2142 CA2142: El código transparente no debe protegerse con LinkDemandsCA2142: Transparent code should not be protected with LinkDemands Esta regla se desencadena en métodos transparentes que exigen que LinkDemands tenga acceso a ellos.This rule is raised on transparent methods that require LinkDemands to access them. El código transparente en seguridad no debería ser responsable de comprobar la seguridad de una operación y, por consiguiente, no debería exigir permisos.Security transparent code should not be responsible for verifying the security of an operation, and therefore should not demand permissions.
CA2143CA2143 CA2143: Los métodos transparentes no deben usar peticiones de seguridadCA2143: Transparent methods should not use security demands El código transparente en seguridad no debería ser responsable de comprobar la seguridad de una operación y, por consiguiente, no debería exigir permisos.Security transparent code should not be responsible for verifying the security of an operation, and therefore should not demand permissions. El código transparente en seguridad debería utilizar peticiones completas para tomar decisiones de seguridad y el código crítico para la seguridad no debió confiar en el código transparente al realizar la petición completa.Security transparent code should use full demands to make security decisions and safe-critical code should not rely on transparent code to have made the full demand.
CA2144CA2144 CA2144: El código transparente no debe cargar ensamblados desde matrices de bytesCA2144: Transparent code should not load assemblies from byte arrays La revisión de seguridad del código transparente no es tan exhaustiva como la revisión de seguridad del código crítico, porque el código transparente no puede realizar acciones que afectan a la seguridad.The security review for transparent code is not as complete as the security review for critical code because transparent code cannot perform security sensitive actions. Los ensamblados cargados desde una matriz de bytes podrían no distinguirse en el código transparente, y esa matriz de bytes podría contener código importante crítico para la seguridad, que no hace falta auditar.Assemblies that are loaded from a byte array might not be noticed in transparent code, and that byte array might contain critical, or more important safe-critical code, that does have to be audited.
CA2145CA2145 CA2145: Los métodos transparentes no deben ser representativos con el atributo SuppressUnmanagedCodeSecurityAttributeCA2145: Transparent methods should not be decorated with the SuppressUnmanagedCodeSecurityAttribute Los métodos decorados con el atributo SuppressUnmanagedCodeSecurityAttribute tienen una LinkDemand implícita colocada en cualquier método que la llame.Methods that are decorated by the SuppressUnmanagedCodeSecurityAttribute attribute have an implicit LinkDemand put upon any method that calls it. Esta LinkDemand requiere que el código de llamada sea crítico para la seguridad.This LinkDemand requires that the calling code be security critical. Marcar el método que utiliza SuppressUnmanagedCodeSecurity con el atributo SecurityCriticalAttribute hace este requisito más obvio para los llamadores del método.Marking the method that uses SuppressUnmanagedCodeSecurity by using the SecurityCriticalAttribute attribute makes this requirement more obvious for callers of the method.
CA2146CA2146 CA2146: Los tipos deben ser al menos tan críticos para la seguridad como sus interfaces y tipos baseCA2146: Types must be at least as critical as their base types and interfaces Esta regla se desencadena cuando un tipo derivado tiene un atributo de transparencia de seguridad que no es tan crítico como su tipo base o interfaz implementada.This rule is raised when a derived type has a security transparency attribute that is not as critical as its base type or implemented interface. Solo los tipos críticos pueden derivar de los tipos base críticos o implementar interfaces críticas, y solo los tipos críticos o críticos para la seguridad pueden derivar de tipos base críticos para la seguridad o implementar interfaces críticas para la seguridad.Only critical types can derive from critical base types or implement critical interfaces, and only critical or safe-critical types can derive from safe-critical base types or implement safe-critical interfaces.
CA2147CA2147 CA2147: Los métodos transparentes no pueden usar aserciones de seguridadCA2147: Transparent methods may not use security asserts El código marcado como SecurityTransparentAttribute no tiene permisos suficientes para imponerse.Code that is marked as SecurityTransparentAttribute is not granted sufficient permissions to assert.
CA2149CA2149 CA2149: Los métodos transparentes no deben llamar a código nativoCA2149: Transparent methods must not call into native code Esta regla se genera en cualquier método transparente que llame directamente al código nativo (por ejemplo, a través de P/Invoke).This rule is raised on any transparent method that calls directly into native code (for example, through a P/Invoke). Las infracciones de esta regla tienen como resultado una excepción MethodAccessException en el modelo de transparencia de nivel 2 y una demanda completa de UnmanagedCode en el modelo de transparencia de nivel 1.Violations of this rule lead to a MethodAccessException in the level 2 transparency model and a full demand for UnmanagedCode in the level 1 transparency model.
CA2151CA2151 CA2151: Los campos con tipos críticos deben ser críticos para la seguridadCA2151: Fields with critical types should be security critical Para utilizar tipos críticos para la seguridad, el código que hace referencia al tipo debe ser crítico para la seguridad o crítico para la seguridad y disponible desde código transparente.To use security critical types, the code that references the type must be either security critical or security safe critical. Esto es así incluso si la referencia es indirecta.This is true even if the reference is indirect. Por consiguiente, tener un campo transparente para la seguridad o crítico para la seguridad y disponible desde código transparente puede llevar a confusión, porque el código transparente todavía no podrá tener acceso al campo.Therefore, having a security transparent or security safe critical field is misleading because transparent code will still be unable to access the field.
CA2200CA2200 CA2200: Reiniciar para mantener los detalles de la pilaCA2200: Rethrow to preserve stack details Se vuelve a producir una excepción y se especifica explícitamente en la instrucción throw.An exception is rethrown and the exception is explicitly specified in the throw statement. Si se vuelve a producir una excepción especificándola en la instrucción throw, se pierde la lista de llamadas al método entre el método original que produjo la excepción y el método actual.If an exception is rethrown by specifying the exception in the throw statement, the list of method calls between the original method that threw the exception and the current method is lost.
CA2201CA2201 CA2201: No provocar tipos de excepción reservadosCA2201: Do not raise reserved exception types Esto hace que el error original sea difícil de detectar y depurar.This makes the original error difficult to detect and debug.
CA2202CA2202 CA2202: No usar Dispose varias veces en objetosCA2202: Do not dispose objects multiple times La implementación de un método contiene rutas de acceso del código que podrían provocar varias llamadas a System.IDisposable.Dispose o a un equivalente de Dispose (como un método Close() en algunos tipos) en el mismo objeto.A method implementation contains code paths that could cause multiple calls to System.IDisposable.Dispose or a Dispose equivalent (such as a Close() method on some types) on the same object.
CA2204CA2204 CA2204: Los literales deben estar escritos correctamente CA2204: Literals should be spelled correctly 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.A literal string in a method body contains one or more words that are not recognized by the Microsoft spelling checker library.
CA2205CA2205 CA2205: Utilizar equivalentes administrados de la API Win32CA2205: Use managed equivalents of Win32 API Se define un método de invocación de sistema operativo y un método que tiene funcionalidad equivalente se encuentra en la biblioteca de clases de .NET Framework.NET Framework.An operating system invoke method is defined and a method that has the equivalent functionality is located in the .NET Framework.NET Framework class library.
CA2207CA2207 CA2207: Inicializar campos estáticos de tipo de valor insertadosCA2207: Initialize value type static fields inline Un tipo de valor declara un constructor estático explícito.A value type declares an explicit static constructor. Para corregir una infracción de esta regla, inicialice todos los datos estáticos cuando se declara y quite el constructor estático.To fix a violation of this rule, initialize all static data when it is declared and remove the static constructor.
CA2208CA2208 CA2208: Crear instancias de las excepciones del argumento correctamenteCA2208: Instantiate argument exceptions correctly Se realiza una llamada al constructor predeterminado (sin parámetros) de un tipo de excepción que es o deriva de ArgumentException, o se pasa un argumento de cadena incorrecto a un constructor con parámetros de un tipo de excepción que es o deriva de ArgumentException.A call is made to the default (parameterless) constructor of an exception type that is or derives from ArgumentException, or an incorrect string argument is passed to a parameterized constructor of an exception type that is or derives from ArgumentException.
CA2210CA2210 CA2210: Los ensamblados deben tener nombres seguros válidosCA2210: Assemblies should have valid strong names El nombre seguro protege los clientes de cargar inconscientemente un ensamblado con el que se ha alterado.The strong name protects clients from unknowingly loading an assembly that has been tampered with. Los ensamblados sin nombres seguros sólo deben implementarse en escenarios muy limitados.Assemblies without strong names should not be deployed outside very limited scenarios. Si se comparten o se distribuyen ensamblados que no están correctamente firmados, el ensamblado puede manipularse, el Common Language Runtime podría no cargar el ensamblado o el usuario podría deshabilitar la comprobación del equipo.If you share or distribute assemblies that are not correctly signed, the assembly can be tampered with, the common language runtime might not load the assembly, or the user might have to disable verification on his or her computer.
CA2211CA2211 CA2211: Los campos no constantes no deben ser visiblesCA2211: Non-constant fields should not be visible Los campos estáticos que no son constantes ni de sólo lectura no son seguros para subprocesos.Static fields that are neither constants nor read-only are not thread-safe. 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.Access to such a field must be carefully controlled and requires advanced programming techniques to synchronize access to the class object.
CA2212CA2212 CA2212: No marcar los componentes con servicio como WebMethodCA2212: Do not mark serviced components with WebMethod Un método en un tipo que hereda de System.EnterpriseServices.ServicedComponent está marcado con System.Web.Services.WebMethodAttribute.A method in a type that inherits from System.EnterpriseServices.ServicedComponent is marked by using System.Web.Services.WebMethodAttribute. Dado que un método ServicedComponent y WebMethodAttribute tienen comportamientos y requisitos conflictivos para el flujo de transacción y el contexto, el comportamiento del método es incorrecto en algunas situaciones.Because WebMethodAttribute and a ServicedComponent method have conflicting behavior and requirements for context and transaction flow, the behavior of the method will be incorrect in some scenarios.
CA2213CA2213 CA2213: Aplique Dispose a los campos a los que se puedaCA2213: Disposable fields should be disposed Un tipo que implementa System.IDisposable declara campos que son de tipos que también implementan IDisposable.A type that implements System.IDisposable declares fields that are of types that also implement IDisposable. El método Dispose del tipo declarativo no llama al método Dispose del campo.The Dispose method of the field is not called by the Dispose method of the declaring type.
CA2214CA2214 CA2214: No llamar a métodos reemplazables en constructoresCA2214: Do not call overridable methods in constructors Cuando un constructor llama a un método virtual, es posible que no se haya ejecutado el constructor para la instancia que invoca el método.When a constructor calls a virtual method, the constructor for the instance that invokes the method may not have executed.
CA2215CA2215 CA2215: Los métodos Dispose deben llamar al método Dispose de la clase baseCA2215: Dispose methods should call base class dispose Si un tipo hereda de un tipo descartable, debe llamar al método Dispose del tipo base desde su propio método Dispose.If a type inherits from a disposable type, it must call the Dispose method of the base type from its own Dispose method.
CA2216CA2216 CA2216: Los tipos descartables deben declarar el finalizadorCA2216: Disposable types should declare finalizer Un tipo que implementa System.IDisposable y tiene campos que sugieren el uso de recursos no administrados, no implementa un finalizador descrito por Object.Finalize.A type that implements System.IDisposable and has fields that suggest the use of unmanaged resources does not implement a finalizer, as described by Object.Finalize.
CA2217CA2217 CA2217: No marcar enumeraciones con FlagsAttributeCA2217: Do not mark enums with 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.An externally visible enumeration is marked by using FlagsAttribute, and it has one or more values that are not powers of two or a combination of the other defined values on the enumeration.
CA2218CA2218 CA2218: Invalidar el método GetHashCode al invalidar el método EqualsCA2218: Override GetHashCode on overriding 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.GetHashCode returns a value, based on the current instance, that is suited for hashing algorithms and data structures such as a hash table. Dos objetos que son del mismo tipo y son iguales deben devolver el mismo código hash.Two objects that are the same type and are equal must return the same hash code.
CA2219CA2219 CA2219: No producir excepciones en cláusulas de excepciónCA2219: Do not raise exceptions in exception clauses Cuando se genera una excepción en una cláusula finally o fault, la nueva excepción oculta la excepción activa.When an exception is raised in a finally or fault clause, the new exception hides the active exception. Cuando se genera una excepción en una cláusula filter, el runtime la detecta automáticamente.When an exception is raised in a filter clause, the run time silently catches the exception. Esto hace que el error original sea difícil de detectar y depurar.This makes the original error difficult to detect and debug.
CA2220CA2220 CA2220: Los finalizadores deben llamar al finalizador de la clase baseCA2220: Finalizers should call base class finalizer La finalización se debe difundir a través de la jerarquía de herencia.Finalization must be propagated through the inheritance hierarchy. Para garantizar esto, los tipos deben llamar a su método Finalize de clase base en su propio método Finalize.To guarantee this, types must call their base class Finalize method in their own Finalize method.
CA2221CA2221 CA2221: Debe proteger los finalizadoresCA2221: Finalizers should be protected Los finalizadores deben utilizar el modificador de acceso de familia.Finalizers must use the family access modifier.
CA2222CA2222 CA2222: No disminuir la visibilidad del miembro heredadoCA2222: Do not decrease inherited member visibility No debería cambiar el modificador de acceso para los miembros heredados.You should not change the access modifier for inherited members. Cambiando un miembro heredado a privado no evita que los llamadores tengan acceso a la implementación de la clase base del método.Changing an inherited member to private does not prevent callers from accessing the base class implementation of the method.
CA2223CA2223 CA2223: Los miembros deben diferenciarse por algo más que por un tipo de valor devueltoCA2223: Members should differ by more than return type Aunque Common Language Runtime permite utilizar tipos de valor devuelto para diferenciar miembros idénticos, esta característica no se encuentra en Common Language Specification ni es una característica común de los lenguajes de programación de .NET.Although the common language runtime allows the use of return types to differentiate between otherwise identical members, this feature is not in the Common Language Specification, nor is it a common feature of .NET programming languages.
CA2224CA2224 CA2224: Invalidar Equals al sobrecargar operadores de igualdadCA2224: Override equals on overloading operator equals Un tipo público implementa el operador de igualdad, pero no reemplaza Object.Equals.A public type implements the equality operator but does not override Object.Equals.
CA2225CA2225 CA2225: Las sobrecargas del operador tienen alternativas con nombreCA2225: Operator overloads have named alternates Se detectó una sobrecarga del operador y no se encontró el método alternativo con el nombre esperado.An operator overload was detected, and the expected named alternative method was not found. 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.The named alternative member provides access to the same functionality as the operator and is provided for developers who program in languages that do not support overloaded operators.
CA2226CA2226 CA2226: Los operadores deben tener sobrecargar simétricasCA2226: Operators should have symmetrical overloads Un tipo implementa el operador de igualdad o de desigualdad y no implementa el operador opuesto.A type implements the equality or inequality operator and does not implement the opposite operator.
CA2227CA2227 CA2227: Las propiedades de la colección deben ser de solo lecturaCA2227: Collection properties should be read only Una propiedad de colección grabable permite al usuario reemplazar la colección por otra diferente.A writable collection property allows a user to replace the collection with a different collection. Una propiedad de sólo lectura impide que la colección se reemplace, pero sí permite establecer miembros individuales.A read-only property stops the collection from being replaced but still allows the individual members to be set.
CA2228CA2228 CA2228: No enviar formatos de recursos no lanzadosCA2228: Do not ship unreleased resource formats Las versiones admitidas de .NET Framework.NET Framework no podrían utilizar los archivos de recursos compilados con versiones preliminares de .NET Framework.NET Framework.Resource files that were built by using prerelease versions of the .NET Framework.NET Framework might not be usable by supported versions of the .NET Framework.NET Framework.
CA2229CA2229 CA2229: Implementar constructores de serializaciónCA2229: Implement serialization constructors Para corregir una infracción de esta regla, implemente el constructor de serialización.To fix a violation of this rule, implement the serialization constructor. Para una clase sellada, marque el constructor como privado; de lo contrario, márquelo como protegido.For a sealed class, make the constructor private; otherwise, make it protected.
CA2230CA2230 CA2230: Usar parámetros para argumentos de variableCA2230: Use params for variable arguments 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.A public or protected type contains a public or protected method that uses the VarArgs calling convention instead of the params keyword.
CA2231CA2231 CA2231: Sobrecargar el operador equals al invalidar ValueType.EqualsCA2231: Overload operator equals on overriding ValueType.Equals Un tipo de valor invalida Object.Equals pero no implementa el operador de igualdad.A value type overrides Object.Equals but does not implement the equality operator.
CA2232CA2232 CA2232: Marcar puntos de entrada de Windows Forms con STAThreadCA2232: Mark Windows Forms entry points with STAThread STAThreadAttribute indica que el modelo de subprocesos de COM para la aplicación es un contenedor uniproceso.STAThreadAttribute indicates that the COM threading model for the application is a single-threaded apartment. Este atributo debe estar presente en el punto de entrada de cualquier aplicación que utilice Formularios Windows Forms; si se omite, los componentes de Windows podrían no funcionar correctamente.This attribute must be present on the entry point of any application that uses Windows Forms; if it is omitted, the Windows components might not work correctly.
CA2233CA2233 CA2233: Las operaciones no deben desbordarseCA2233: Operations should not overflow No debería realizar operaciones aritméticas sin validar primero los operandos.You should not perform arithmetic operations without first validating the operands. Esto asegura que el resultado de la operación no está fuera del intervalo de valores posibles para los tipos de datos que están implicados.This makes sure that the result of the operation is not outside the range of possible values for the data types that are involved.
CA2234CA2234 CA2234: Pase objetos System.Uri en lugar de cadenasCA2234: Pass System.Uri objects instead of strings 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".A call is made to a method that has a string parameter whose name contains "uri", "URI", "urn", "URN", "url", or "URL". El tipo declarativo del método contiene una sobrecarga de método correspondiente que tiene un parámetro System.Uri.The declaring type of the method contains a corresponding method overload that has a System.Uri parameter.
CA2235CA2235 CA2235: Marcar todos los campos no serializablesCA2235: Mark all non-serializable fields Un campo de instancia de un tipo que no es serializable se declara en un tipo que es serializable.An instance field of a type that is not serializable is declared in a type that is serializable.
CA2236CA2236 CA2236: Llamar a métodos de clase base en tipos ISerializableCA2236: Call base class methods on ISerializable types Para corregir una infracción de esta regla, llame al método de tipo base GetObjectData o al constructor de serialización desde el constructor o el método de tipo derivado correspondiente.To fix a violation of this rule, call the base type GetObjectData method or serialization constructor from the corresponding derived type method or constructor.
CA2237CA2237 CA2237: Marcar los tipos ISerializable con SerializableAttributeCA2237: Mark ISerializable types with SerializableAttribute Para que los tipos sean reconocidos como serializables por Common Language Runtime, deben estar marcados con el atributo SerializableAttribute incluso si el tipo utiliza una rutina de serialización personalizada a través de la implementación de la interfaz ISerializable.To be recognized by the common language runtime as serializable, types must be marked by using the SerializableAttribute attribute even when the type uses a custom serialization routine through implementation of the ISerializable interface.
CA2238CA2238 CA2238: Implementar métodos de serialización correctamenteCA2238: Implement serialization methods correctly Un método que controla un evento de serialización no especifica la firma correcta, el tipo de valor devuelto ni la visibilidad.A method that handles a serialization event does not have the correct signature, return type, or visibility.
CA2239CA2239 CA2239: Proporcionar métodos de deserialización para campos opcionalesCA2239: Provide deserialization methods for optional fields Un tipo tiene un campo que está marcado con el atributo System.Runtime.Serialization.OptionalFieldAttribute y el tipo no proporciona métodos de control de eventos de deserialización.A type has a field that is marked by using the System.Runtime.Serialization.OptionalFieldAttribute attribute, and the type does not provide deserialization event handling methods.
CA2240CA2240 CA2240: Implementar ISerializable correctamenteCA2240: Implement ISerializable correctly Para corregir una infracción de esta regla, haga que el método GetObjectData sea visible y reemplazable, y asegúrese de que todos los campos de instancia se incluyan en el proceso de serialización o se marquen explícitamente con el atributo NonSerializedAttribute.To fix a violation of this rule, make the GetObjectData method visible and overridable, and make sure that all instance fields are included in the serialization process or explicitly marked by using the NonSerializedAttribute attribute.
CA2241CA2241 CA2241: Proporcionar argumentos correctos a los métodos de formatoCA2241: Provide correct arguments to formatting methods El argumento format pasado a System.String.Format no contiene un elemento de formato que corresponda a cada argumento de objeto o viceversa.The format argument that is passed to System.String.Format does not contain a format item that corresponds to each object argument, or vice versa.
CA2242CA2242 CA2242: Prueba para NaN correctaCA2242: Test for NaN correctly Esta expresión prueba un valor respecto a Single.Nan o Double.Nan.This expression tests a value against Single.Nan or Double.Nan. Utilice IsNan(Single) o Double.IsNan(Double) para probar el valor.Use Single.IsNan(Single) or Double.IsNan(Double) to test the value.
CA2243CA2243 CA2243: Los literales de cadena de atributo se deben analizar correctamenteCA2243: Attribute string literals should parse correctly 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.The string literal parameter of an attribute does not parse correctly for a URL, a GUID, or a version.
CA5122CA5122 Las declaraciones ca5122: P/Invoke no deben ser seguras críticoCA5122 P/Invoke declarations should not be safe critical Los métodos se marcan como SecuritySafeCritical cuando realizan una operación que afecta a la seguridad pero también son seguros para su uso en código transparente.Methods are marked as SecuritySafeCritical when they perform a security sensitive operation, but are also safe to be used by transparent code. El código transparente nunca puede llamar a código nativo a través de P/Invoke.Transparent code may never directly call native code through a P/Invoke. Por consiguiente, aunque se marque P/Invoke como crítico para la seguridad y disponible desde código transparente no permitirá que se llame desde código transparente llamarlo, y es erróneo para los análisis de seguridad.Therefore, marking a P/Invoke as security safe critical will not enable transparent code to call it, and is misleading for security analysis.