État du port de la règle Fxcop

Si vous avez déjà utilisé l’analyse de code statique dans Visual Studio, vous vous demandez peut-être lesquelles de ces règles sont disponibles dans l’implémentation actuelle en tant qu’analyseurs .NET. Cette page répertorie les règles qui ont été portées. Consultez Règles non transférées pour celles qui n’ont pas été portées et indiquez s’il est prévu de les porter.

Règles transférées

La page de documentation générée automatiquement dans le référentiel roslyn-analyzers contient la liste la plus à jour des règles qui ont été transférées vers les analyseurs Roslyn. Cette page contient également des informations supplémentaires, par exemple si la règle est activée par défaut et si elle a un correctif de code associé. (Les correctifs de code sont des correctifs en un clic disponibles dans le menu d’icône d’ampoule de Visual Studio.)

À la date de la rédaction de cette page, la liste des règles FxCop qui ont été portées vers les analyseurs .NET comprend :

Identificateur de la règle Intitulé
CA1000 Ne pas déclarer de membres statiques sur les types génériques
CA1001 Les types qui possèdent des champs supprimables doivent être supprimables
CA1002 Ne pas exposer de listes génériques
CA1003 Utiliser les instances du gestionnaire d'événements génériques
CA1005 Éviter les paramètres excessifs sur les types génériques
CA1008 Les enums doivent avoir la valeur zéro
CA1010 Les collections doivent implémenter une interface générique
CA1012 Les types abstract ne doivent pas avoir de constructeurs
CA1014 Marquer les assemblys avec CLSCompliant
CA1016 Marquer les assemblys avec la version de l’assembly
CA1017 Marquer les assemblys avec ComVisible
CA1018 Marquer les attributs avec AttributeUsageAttribute
CA1019 Définir des accesseurs pour les arguments d'attribut
CA1021 Éviter les paramètres out
CA1024 Utiliser les propriétés lorsque cela est approprié
CA1027 Marquer les enums avec FlagsAttribute
CA1028 Enum Storage doit être Int32
CA1030 Utiliser des événements lorsque cela est approprié
CA1031 Ne pas intercepter des types d'exception générale
CA1032 Implémenter des constructeurs d'exception standard
CA1033 Les méthodes d'interface doivent pouvoir être appelées par les types enfants
CA1034 Les types imbriqués ne doivent pas être visibles
CA1036 Substituer les méthodes sur les types Comparable
CA1040 Éviter les interfaces vides
CA1041 Fournir un message ObsoleteAttribute
CA1043 Utiliser un argument de chaîne ou intégral pour les indexeurs
CA1044 Les propriétés ne doivent pas être en écriture seule
CA1045 Ne pas passer de types par référence
CA1046 Ne pas surcharger l'opérateur égal à sur les types référence
CA1047 Ne pas déclarer les membres protégés dans les types sealed
CA1050 Déclarer les types dans des espaces de noms
CA1051 Ne pas déclarer de champs d'instances visibles
CA1052 Les types conteneurs statiques doivent être Static ou NotInheritable
CA1053 Les types de conteneurs statiques ne doivent pas comporter de constructeur (CA1053 fait partie de CA1052 pour les analyseurs .NET)
CA1054 Les paramètres URI ne doivent pas être des chaînes
CA1055 Les valeurs de retour URI ne doivent pas être des chaînes
CA1056 Les propriétés URI ne doivent pas être des chaînes
CA1058 Les types ne doivent pas étendre certains types de base
CA1060 Déplacer les P/Invoke vers une classe NativeMethods
CA1061 Ne pas masquer les méthodes de la classe de base
CA1062 Valider les arguments de méthodes publiques
CA1063 Implémenter IDisposable correctement
CA1064 Les exceptions doivent être publiques
CA1065 Ne pas lever d'exceptions dans les emplacements inattendus
CA1066 Le type {0} doit implémenter IEquatable<T>, car il remplace Equals
CA1067 Substituer 'Object.Equals(object)' au moment de l’implémentation de IEquatable<T>
CA1303 Ne pas passer de littéraux en paramètres localisés
CA1304 Spécifier CultureInfo
CA1305 Spécifier IFormatProvider
CA1307 Spécifier StringComparison pour clarifier
CA1308 Normaliser les chaînes en majuscules
CA1309 Utiliser la comparaison de chaînes ordinales
CA1401 Les P/Invoke ne doivent pas être visibles
CA1501 Éviter l'excès d'héritage
CA1502 Éviter l'excès de complexité
CA1505 Éviter le code impossible à maintenir
CA1506 Éviter les couplages de classe excessifs
CA1700 Ne nommez pas les valeurs enum 'Reserved'
CA1707 Les identificateurs ne doivent pas contenir de traits de soulignement
CA1708 Les identificateurs ne doivent pas différer uniquement par leur casse
CA1710 Les identificateurs doivent être dotés d'un suffixe correct
CA1711 Les identificateurs ne doivent pas porter un suffixe incorrect
CA1712 N'ajoutez pas le nom de type en guise de préfixe à des valeurs enum
CA1713 Les événements ne doivent pas être munis d'un préfixe Before ou After
CA1714 Les noms des enums Flags doivent être au pluriel
CA1715 Les identificateurs doivent être dotés d'un préfixe correct
CA1716 Les identificateurs ne doivent pas correspondre à des mots clés
CA1717 Seuls les noms des enums FlagsAttribute doivent être au pluriel
CA1720 L’identificateur contient le nom de type
CA1721 Les noms des propriétés ne doivent pas être identiques à ceux des méthodes Get
CA1724 Les noms de types ne doivent pas être identiques aux espaces de noms
CA1725 Les noms des paramètres doivent correspondre à la déclaration de base
CA1801 Passez en revue les paramètres inutilisés
CA1802 Utilisez des littéraux quand cela est approprié
CA1805 Ne pas initialiser inutilement
CA1806 N'ignorez pas les résultats des méthodes
CA1810 Initialisez les champs statiques de type référence en ligne
CA1812 Évitez les classes internes non instanciées
CA1813 Évitez les attributs unsealed
CA1814 Utilisez des tableaux en escalier à la place de tableaux multidimensionnels
CA1815 Remplacez Equals et l'opérateur égal à dans les types valeur
CA1816 Les méthodes Dispose doivent appeler SuppressFinalize
CA1819 Les propriétés ne doivent pas retourner des tableaux
CA1820 Vérifiez la présence de chaînes vides par la longueur de chaîne
CA1821 Supprimez les finaliseurs vides
CA1822 Marquez les membres comme static
CA1823 Évitez les champs privés inutilisés
CA1824 Marquer les assemblys avec NeutralResourcesLanguageAttribute
CA1825 Éviter les allocations de tableau de longueur nulle.
CA2000 Supprimer les objets avant la mise hors de portée
CA2002 Ne définissez pas un verrou sur des objets à identité faible
CA2100 Vérifier si les requêtes SQL présentent des failles de sécurité
CA2101 Spécifiez le marshaling pour les arguments de chaîne P/Invoke
CA2109 Passez en revue les gestionnaires d'événements visibles
CA2119 Scellez les méthodes qui satisfont les interfaces privées
CA2153 Ne pas intercepter les exceptions état altéré
CA2200 Levez à nouveau une exception pour conserver les détails de la pile.
CA2201 Ne levez pas des types d'exceptions réservés
CA2207 Initialisez les champs statiques des types valeur en ligne
CA2208 Instanciez les exceptions d'argument comme il se doit
CA2211 Les champs non constants ne doivent pas être visibles
CA2213 Les champs pouvant être supprimés doivent l’être
CA2214 N'appelez pas de méthodes substituables dans les constructeurs
CA2215 Les méthodes Dispose doivent appeler la méthode Dispose de la classe de base
CA2216 Les types pouvant être supprimés doivent déclarer un finaliseur
CA2217 Ne marquez pas les enums avec l'attribut FlagsAttribute
CA2219 Ne pas lever d’exceptions dans les clauses finally
CA2225 Les surcharges d'opérateur offrent d'autres méthodes nommées
CA2226 Les opérateurs doivent contenir des surcharges symétriques
CA2227 Les propriétés de collection doivent être en lecture seule
CA2229 Implémentez des constructeurs de sérialisation
CA2231 Surcharger l’opérateur d’égalité en remplaçant ValueType.Equals
CA2234 Passez des objets System.Uri à la place de chaînes
CA2235 Marquez tous les champs non sérialisés
CA2237 Marquez les types ISerializable comme étant sérialisables
CA2241 Indiquer le nombre correct d'arguments dans les méthodes de mise en forme
CA2242 Effectuez correctement des tests NaN
CA2243 Les littéraux de chaîne d'attribut doivent être analysés correctement
CA2300 N’utilisez pas le désérialiseur non sécurisé BinaryFormatter
CA2301 N’appelez pas BinaryFormatter.Deserialize sans définir BinaryFormatter.Binder au préalable
CA2302 Vérifiez que BinaryFormatter.Binder est défini avant d’appeler BinaryFormatter.Deserialize
CA2305 N’utilisez pas le désérialiseur non sécurisé LosFormatter
CA2310 N’utilisez pas le désérialiseur non sécurisé NetDataContractSerializer
CA2311 Ne désérialisez pas sans définir d’abord NetDataContractSerializer.Binder
CA2312 Vérifiez que NetDataContractSerializer.Binder est défini avant la désérialisation
CA2315 N’utilisez pas le désérialiseur non sécurisé ObjectStateFormatter
CA2321 Ne désérialisez avec JavaScriptSerializer à l’aide de SimpleTypeResolver
CA2322 Assurez-vous que JavaScriptSerializer n’est pas initialisé avec SimpleTypeResolver avant la désérialisation
CA3001 Passez en revue le code pour détecter les vulnérabilités de l’injection SQL
CA3002 Passez en revue le code pour détecter les vulnérabilités des scripts XSS
CA3003 Passez en revue le code pour détecter les vulnérabilités de l’injection de chemin de fichier
CA3004 Passez en revue le code pour détecter les vulnérabilités sur la divulgation d’informations
CA3005 Passez en revue le code pour détecter les vulnérabilités de l’injection LDAP
CA3006 Passez en revue le code pour détecter les vulnérabilités de l’injection de commande de processus
CA3007 Passez en revue le code pour détecter les vulnérabilités de la redirection ouverte
CA3008 Passez en revue le code pour détecter les vulnérabilités de l’injection XPath
CA3009 Passez en revue le code pour détecter les vulnérabilités de l’injection XML
CA3010 Passez en revue le code pour détecter les vulnérabilités de l’injection XAML
CA3011 Passez en revue le code pour détecter les vulnérabilités de l’injection de DLL
CA3012 Passez en revue le code pour détecter les vulnérabilités de l’injection regex
CA3061 Ne pas ajouter de schéma par URL
CA3075 Traitement DTD non sécurisé dans le code XML
CA3076 Traitement de script XSLT non sécurisé.
CA3077 Traitement non sécurisé dans le design d’API, XmlDocument et XmlTextReader
CA3147 Marquer les gestionnaires de verbes avec le jeton de validation antifalsification
CA5350 N’utilisez pas d’algorithmes de chiffrement faibles
CA5351 N’utilisez pas les algorithmes de chiffrement cassés
CA5358 Ne pas utiliser de modes de chiffrement non sécurisés
CA5359 Ne pas désactiver la validation de certificat
CA5360 Ne pas appeler de méthodes dangereuses dans la désérialisation
CA5361 Ne pas désactiver l’utilisation du chiffrement fort par Schannel
CA5362 Ne pas effectuer d’autoréférence dans une classe sérialisable
CA5363 Ne pas désactiver la validation de demandes
CA5364 Ne pas utiliser de protocoles de sécurité dépréciés
CA5365 Ne pas désactiver la vérification des en-têtes HTTP
CA5366 Utiliser XmlReader pour lire les données XML d’un jeu de données
CA5367 Ne pas sérialiser les types avec des champs de pointeur
CA5368 Définir ViewStateUserKey pour les classes dérivées de Page
CA5369 Utiliser XmlReader pour la désérialisation
CA5370 Utiliser XmlReader pour la validation du lecteur
CA5371 Utiliser XmlReader pour la lecture de schéma
CA5372 Utiliser XmlReader pour XPathDocument
CA5373 Ne pas utiliser la fonction de dérivation de clé obsolète
CA5374 Ne pas utiliser XslTransform
CA5375 Ne pas utiliser de signature d’accès partagé au compte
CA5376 Utiliser SharedAccessProtocol HttpsOnly
CA5377 Utiliser une stratégie d’accès au niveau du conteneur
CA5378 Ne pas désactiver ServicePointManagerSecurityProtocols
CA5379 Ne pas utiliser l’algorithme de fonction de dérivation de clés faibles
CA9999 Incompatibilité de version de l’analyseur

Voir aussi