avertissements liés à l’utilisationUsage Warnings

Avertissements d’utilisation prennent en charge l’utilisation correcte de .NET Framework.Usage warnings support proper usage of the .NET Framework.

Dans cette sectionIn This Section

RègleRule DescriptionDescription
CA1801 : Passez en revue les paramètres inutilisésCA1801: Review unused parameters Une signature de méthode inclut un paramètre qui n'est pas utilisé dans le corps de la méthode.A method signature includes a parameter that is not used in the method body.
CA1806 : Ne pas ignorer les résultats de méthodeCA1806: Do not ignore method results Un nouvel objet est créé mais jamais utilisé ; ou une méthode qui crée et retourne une nouvelle chaîne est appelée et la nouvelle chaîne n'est jamais utilisée ; ou une méthode COM ou P/Invoke retourne un code HRESULT ou d'erreur qui n'est jamais utilisé.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.
CA1816 : Appelez GC.SuppressFinalize correctementCA1816: Call GC.SuppressFinalize correctly Une méthode qui est une implémentation de Dispose n’appelle pas de catalogue global. SuppressFinalize ; ou une méthode qui n’est pas une implémentation de Dispose appelle GC. SuppressFinalize ; ou une méthode appelle GC. SuppressFinalize et passe un élément autre que celui-ci (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).
CA2200 : Levez à nouveau une exception pour conserver les détails de la pileCA2200: Rethrow to preserve stack details Une exception est à nouveau levée et est spécifiée explicitement dans l’instruction throw.An exception is re-thrown and the exception is explicitly specified in the throw statement. Si une exception est levée à nouveau en spécifiant l’exception dans l’instruction throw, la liste d’appels de méthode entre la méthode d’origine qui a levé l’exception et la méthode actuelle est perdue.If an exception is re-thrown 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.
CA2201 : Ne levez pas des types d’exceptions réservésCA2201: Do not raise reserved exception types Cela rend l’erreur d’origine difficile à détecter et à déboguer.This makes the original error hard to detect and debug.
CA2202 : Ne pas supprimer des objets plusieurs foisCA2202: Do not dispose objects multiple times Une implémentation de méthode contient des chemins d’accès de code qui peuvent provoquer des appels multiples à System.IDisposable.Dispose ou un Dispose équivalent (par exemple, une méthode Close() sur certains types) sur le même objet.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.
CA2204 : Les littéraux doivent être correctement orthographiésCA2204: Literals should be spelled correctly Une chaîne littéral dans un corps de méthode contient un ou plusieurs mots qui ne sont pas reconnus par la bibliothèque de vérificateur d'orthographe Microsoft.A literal string in a method body contains one or more words that are not recognized by the Microsoft spelling checker library.
CA2205 : Utilisez des équivalents managés de l’API Win32CA2205: Use managed equivalents of Win32 API Un appel de méthode est définie et une méthode avec la fonctionnalité équivalente existe dans la bibliothèque de classes .NET Framework.A platform invoke method is defined and a method with the equivalent functionality exists in the .NET Framework class library.
CA2207 : Initialisez les champs statiques des types de valeurs inlineCA2207: Initialize value type static fields inline Un type valeur déclare un constructeur statique explicite.A value type declares an explicit static constructor. Pour corriger une violation de cette règle, initialisez toutes les données statiques lorsqu’elles sont déclarées et supprimez le constructeur statique.To fix a violation of this rule, initialize all static data when it is declared and remove the static constructor.
CA2208 : Instanciez les exceptions d’argument correctementCA2208: Instantiate argument exceptions correctly Un appel est passé au constructeur par défaut (sans paramètre) d’un type d’exception qui est ou dérive d’ArgumentException, ou un argument string incorrect est passé à un constructeur paramétrable d’un type d’exception qui est ou dérive d’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.
CA2211 : Les champs non constants ne doivent pas être visiblesCA2211: Non-constant fields should not be visible Les champs static qui ne sont ni constants ni en lecture seule ne sont pas thread-safe.Static fields that are neither constants nor read-only are not thread-safe. Accès à un tel champ doit être scrupuleusement contrôlé et requiert des techniques de programmation évoluées pour synchroniser l’accès à l’objet de classe.Access to such a field must be carefully controlled and requires advanced programming techniques for synchronizing access to the class object.
CA2212 : Ne marquez pas les composants pris en charge avec WebMethodCA2212: Do not mark serviced components with WebMethod Une méthode dans un type qui hérite de System.EnterpriseServices.ServicedComponent est marquée avec System.Web.Services.WebMethodAttribute.A method in a type that inherits from System.EnterpriseServices.ServicedComponent is marked with System.Web.Services.WebMethodAttribute. Sachant que WebMethodAttribute et une méthode ServicedComponent ont des comportements incompatibles et des exigences en matière de contexte et de flux de transactions, le comportement de la méthode est incorrect dans certains scénarios.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.
CA2213 : Les champs pouvant être supprimés doivent l’êtreCA2213: Disposable fields should be disposed Un type qui implémente System.IDisposable déclare des champs de types qui implémentent également IDisposable.A type that implements System.IDisposable declares fields that are of types that also implement IDisposable. La méthode Dispose du champ n’est pas appelée par la méthode Dispose du type déclarant.The Dispose method of the field is not called by the Dispose method of the declaring type.
CA2214 : N’appelez pas de méthodes substituables dans les constructeursCA2214: Do not call overridable methods in constructors Lorsqu’un constructeur appelle une méthode virtuelle, il est possible que le constructeur de l’instance qui appelle la méthode n’a pas été exécutée.When a constructor calls a virtual method, it is possible that the constructor for the instance that invokes the method has not executed.
CA2215 : Les méthodes Dispose doivent appeler la méthode Dispose de la classe de baseCA2215: Dispose methods should call base class dispose Si un type hérite d'un type pouvant être supprimé, il doit appeler la méthode Dispose du type de base issu de sa propre méthode Dispose.If a type inherits from a disposable type, it must call the Dispose method of the base type from its own Dispose method.
CA2216 : Les types supprimables doivent déclarer un finaliseurCA2216: Disposable types should declare finalizer Un type qui implémente System.IDisposable et présente des champs qui laissent entendre l’utilisation des ressources non managées, n’implémente pas de finaliseur comme décrit par 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.
CA2217 : Ne marquez pas les énumérations avec FlagsAttributeCA2217: Do not mark enums with FlagsAttribute Une énumération extérieurement visible est marquée par FlagsAttribute et possède une ou plusieurs valeurs qui ne sont pas des puissances de deux ou une combinaison des autres valeurs définies dans l’énumération.An externally visible enumeration is marked with 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.
CA2218 : Remplacez GetHashCode lors du remplacement de EqualsCA2218: Override GetHashCode on overriding Equals GetHashCode retourne une valeur fondée sur l’instance actuelle adaptée aux algorithmes de hachage et aux structures de données telles qu’une table de hachage.GetHashCode returns a value, based on the current instance, that is suited for hashing algorithms and data structures such as a hash table. Deux objets de même type et égaux doivent retourner le même code de hachage.Two objects that are the same type and are equal must return the same hash code.
CA2219 : Ne levez pas d’exceptions dans les clauses d’exceptionCA2219: Do not raise exceptions in exception clauses Lorsqu'une exception est levée dans une clause finally ou fault, la nouvelle exception masque l'exception active.When an exception is raised in a finally or fault clause, the new exception hides the active exception. Lorsqu'une exception est levée dans une clause filter, le runtime l'intercepte en silence.When an exception is raised in a filter clause, the run time silently catches the exception. Cela rend l’erreur d’origine difficile à détecter et à déboguer.This makes the original error hard to detect and debug.
CA2220 : Les finaliseurs doivent appeler le finaliseur de la classe de baseCA2220: Finalizers should call base class finalizer La finalisation doit être propagée par le biais de la hiérarchie d'héritage.Finalization must be propagated through the inheritance hierarchy. Pour garantir ce procédé, les types doivent appeler leur méthode Finalize de classe de base à partir de leur propre méthode Finalize.To guarantee this, types must call their base class Finalize method in their own Finalize method.
CA2221 : Les finaliseurs doivent être protégésCA2221: Finalizers should be protected Les finaliseurs doivent utiliser le modificateur d’accès family.Finalizers must use the family access modifier.
CA2222 : Ne réduisez pas la visibilité des membres héritésCA2222: Do not decrease inherited member visibility Vous ne devez pas modifier le modificateur d’accès destiné aux membres hérités.You should not change the access modifier for inherited members. La modification d'un membre hérité au profit d'un état privé n'empêche pas les appelants d'accéder à l'implémentation de classe de base de la méthode.Changing an inherited member to private does not prevent callers from accessing the base class implementation of the method.
CA2223 : Les membres ne doivent pas différer uniquement par leur type de retourCA2223: Members should differ by more than return type Bien que le Common Language Runtime autorise l’utilisation de types de retour pour différencier des membres autrement identiques, cette fonctionnalité ne figure pas dans la Common Language Specification, et n’est pas une fonctionnalité courante des langages de programmation .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.
CA2224 : Remplacez Equals lors de la surcharge de l’opérateur égalCA2224: Override equals on overloading operator equals Un type public implémente l’opérateur d’égalité, mais ne substitue pas Object.Equals.A public type implements the equality operator, but does not override Object.Equals.
CA2225 : Les surcharges d’opérateur ont d’autres méthodes nomméesCA2225: Operator overloads have named alternates Une surcharge d'opérateur a été détectée, et la méthode de substitution nommée attendue n'a pas été trouvée.An operator overload was detected, and the expected named alternative method was not found. Le membre de substitution nommé donne accès à la même fonctionnalité que l’opérateur et est fourni pour les développeurs qui programment dans les langages qui ne prennent pas en charge les opérateurs surchargés.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.
CA2226 : Les opérateurs doivent avoir des surcharges symétriquesCA2226: Operators should have symmetrical overloads Un type implémente l’opérateur d’égalité ou d’inégalité et n’implémente pas l’opérateur opposé.A type implements the equality or inequality operator, and does not implement the opposite operator.
CA2227 : Les propriétés de collection doivent être en lecture seuleCA2227: Collection properties should be read only Une propriété de collection accessible en écriture permet à un utilisateur de remplacer la collection par une collection différente.A writable collection property allows a user to replace the collection with a different collection. Une propriété en lecture seule empêche le remplacement de la collection, mais permet quand même aux membres individuels d’être définis.A read-only property stops the collection from being replaced but still allows the individual members to be set.
CA2228 : Ne distribuez pas des formats de ressources non commercialisésCA2228: Do not ship unreleased resource formats Fichiers de ressources qui ont été générées à l’aide de versions préliminaires de .NET Framework n’est peut-être pas utilisables par les versions prises en charge du .NET Framework.Resource files that were built by using pre-release versions of the .NET Framework might not be usable by supported versions of the .NET Framework.
CA2229 : Implémentez des constructeurs de sérialisationCA2229: Implement serialization constructors Pour corriger une violation de cette règle, implémentez le constructeur de sérialisation.To fix a violation of this rule, implement the serialization constructor. Dans le cas d'une classe sealed, rendez le constructeur privé ; sinon, attribuez-lui l'état protégé.For a sealed class, make the constructor private; otherwise, make it protected.
CA2230 : Utilisez le mot clé params pour les arguments de variablesCA2230: Use params for variable arguments Un type public ou protégé contient une méthode publique ou protégée qui utilise la convention d’appel VarArgs au lieu du mot clé params.A public or protected type contains a public or protected method that uses the VarArgs calling convention instead of the params keyword.
CA2231 : Surchargez l’opérateur égal (equals) en remplaçant ValueType.EqualsCA2231: Overload operator equals on overriding ValueType.Equals Un type valeur se substitue à Object.Equals mais n'implémente pas l'opérateur d'égalité.A value type overrides Object.Equals but does not implement the equality operator.
CA2232 : Marquez les points d’entrée Windows Forms avec STAThreadCA2232: Mark Windows Forms entry points with STAThread STAThreadAttribute indique que le modèle de thread COM pour l'application est un thread cloisonné (STA, Single-Threaded Apartment).STAThreadAttribute indicates that the COM threading model for the application is a single-threaded apartment. Cet attribut doit être présent au point d'entrée de toute application qui utilise des Windows Forms ; s'il est omis, les composants Windows peuvent ne pas fonctionner correctement.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.
CA2233 : Les opérations ne doivent pas provoquer de dépassement de capacitéCA2233: Operations should not overflow Opérations arithmétiques ne doivent pas être effectuées sans valider au préalable les opérandes, pour vous assurer que le résultat de l’opération n’est pas en dehors de la plage de valeurs possibles pour les types de données impliqués.Arithmetic operations should not be performed without first validating the operands, to make sure that the result of the operation is not outside the range of possible values for the data types involved.
CA2234 : Passez des objets System.Uri au lieu de chaînesCA2234: Pass System.Uri objects instead of strings Un appel est passé à une méthode qui a un paramètre de chaîne dont le nom contient « uri », « URI », « urn », « URN », « url » ou « URL ».A call is made to a method that has a string parameter whose name contains "uri", "URI", "urn", "URN", "url", or "URL". Le type déclarant de la méthode contient une surcharge de méthode correspondante qui a un paramètre System.Uri.The declaring type of the method contains a corresponding method overload that has a System.Uri parameter.
CA2235 : Marquez tous les champs non sérialisablesCA2235: Mark all non-serializable fields Un champ d'instance d'un type non sérialisable est déclaré dans un type sérialisable.An instance field of a type that is not serializable is declared in a type that is serializable.
CA2236 : Appelez les méthodes de la classe de base sur les types ISerializableCA2236: Call base class methods on ISerializable types Pour corriger une violation de cette règle, appelez la méthode GetObjectData ou le constructeur de sérialisation du type de base issu du constructeur ou de la méthode du type dérivé correspondant.To fix a violation of this rule, call the base type GetObjectData method or serialization constructor from the corresponding derived type method or constructor.
CA2237 : Marquez les types ISerializable avec SerializableAttributeCA2237: Mark ISerializable types with SerializableAttribute Pour être reconnus par le common language runtime comme sérialisables, les types doivent être marqués avec l’attribut SerializableAttribute même si le type d’utilise une routine de sérialisation personnalisée via l’implémentation de l’interface ISerializable.To be recognized by the common language runtime as serializable, types must be marked with the SerializableAttribute attribute even if the type uses a custom serialization routine through implementation of the ISerializable interface.
CA2238 : Implémentez les méthodes de sérialisation correctementCA2238: Implement serialization methods correctly Une méthode qui gère un événement de sérialisation n’a pas la signature, le type de retour ou la visibilité appropriée.A method that handles a serialization event does not have the correct signature, return type, or visibility.
CA2239 : Spécifiez des méthodes de désérialisation pour les champs facultatifsCA2239: Provide deserialization methods for optional fields Un type a un champ qui est marqué avec l’attribut System.Runtime.Serialization.OptionalFieldAttribute et ne fournit pas des méthodes de gestion des événements de désérialisation.A type has a field that is marked with the System.Runtime.Serialization.OptionalFieldAttribute attribute, and the type does not provide de-serialization event handling methods.
CA2240 : Implémentez ISerializable correctementCA2240: Implement ISerializable correctly Pour corriger une violation de cette règle, rendez la méthode GetObjectData visible et substituable et assurez-vous que tous les champs d’instance sont inclus dans le processus de sérialisation ou sont marqués explicitement avec l’attribut 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 with the NonSerializedAttribute attribute.
CA2241 : Fournissez des arguments corrects aux méthodes de mise en formeCA2241: Provide correct arguments to formatting methods L’argument de format passé à System.String.Format ne contient pas un élément de format qui correspond à chaque argument d’objet, ou vice versa.The format argument passed to System.String.Format does not contain a format item that corresponds to each object argument, or vice versa.
CA2242 : Effectuez correctement des tests NaNCA2242: Test for NaN correctly Cette expression teste une valeur par rapport à Single.Nan ou Double.Nan.This expression tests a value against Single.Nan or Double.Nan. Utilisez Single.IsNan(Single) ou Double.IsNan(Double) pour tester la valeur.Use Single.IsNan(Single) or Double.IsNan(Double) to test the value.
CA2243 : Les littéraux de chaîne d’attribut doivent être analysés correctementCA2243: Attribute string literals should parse correctly Paramètre de littéral de chaîne d’un attribut n’analyse pas correctement pour une URL, un GUID ou une version.An attribute's string literal parameter does not parse correctly for a URL, a GUID, or a version.