Meziantou.Analyzer
2.0.183
Un analyseur Roslyn pour appliquer de bonnes pratiques en C # en termes de conception, d'utilisation, de sécurité, de performance et de style.
Installez le package NuGet https://www.nuget.org/packages/meziantou.analyzer/
Si vous utilisez déjà d'autres analyseurs, vous pouvez vérifier quelles règles sont dupliquées avec des analyseurs bien connus
| Identifiant | Catégorie | Description | Gravité | Est activé | Correction de code |
|---|---|---|---|---|---|
| Ma0001 | Usage | StringComparison est manquant | ✔️ | ✔️ | |
| Ma0002 | Usage | IEqualityComparer <string> ou iComparer <string> est manquant | ✔️ | ✔️ | |
| Ma0003 | Style | Ajouter le nom du paramètre pour améliorer la lisibilité | ✔️ | ✔️ | |
| Ma0004 | Usage | Utiliser la tâche. ConfigureAwait | ✔️ | ✔️ | |
| Ma0005 | Performance | Utilisez Array.Empty <T> () | ✔️ | ✔️ | |
| Ma0006 | Usage | Utilisez String.equals au lieu de l'opérateur d'égalité | ✔️ | ✔️ | |
| Ma0007 | Style | Ajouter une virgule après la dernière valeur | ✔️ | ✔️ | |
| Ma0008 | Performance | Ajouter StructlayoutAttribute | ✔️ | ✔️ | |
| Ma0009 | Sécurité | Ajouter un temps mort d'évaluation regex | ✔️ | ||
| Ma0010 | Conception | Marquez les attributs avec attributSageAtTribute | ✔️ | ✔️ | |
| Ma0011 | Usage | Iformatprovider est manquant | ✔️ | ||
| MA0012 | Conception | Ne soulevez pas le type d'exception réservé | ✔️ | ||
| MA0013 | Conception | Les types ne doivent pas étendre le système.ApplicationException | ✔️ | ||
| MA0014 | Conception | Ne soulevez pas le système System.ApplicationException | ✔️ | ||
| MA0015 | Usage | Spécifiez le nom du paramètre dans ArgumentException | ✔️ | ||
| MA0016 | Conception | Préférez utiliser l'abstraction de la collection au lieu de la mise en œuvre | ✔️ | ||
| MA0017 | Conception | Les types abstraits ne doivent pas avoir de constructeurs publics ou internes | ✔️ | ✔️ | |
| MA0018 | Conception | Ne déclarez pas les membres statiques sur les types génériques (obsolètes; utilisez CA1000 à la place) | ✔️ | ||
| MA0019 | Usage | Utiliser EventArgs.Empty | ✔️ | ✔️ | |
| Ma0020 | Performance | Utilisez des méthodes directes au lieu des méthodes LINQ | ✔️ | ✔️ | |
| MA0021 | Usage | Utilisez StringComparer.GethashCode au lieu de String.Gethashcode | ✔️ | ✔️ | |
| MA0022 | Conception | Tâche de retour. | ✔️ | ✔️ | |
| MA0023 | Performance | Ajouter RegexOptions.ExpliciteCapture | ✔️ | ||
| MA0024 | Usage | Utilisez un stringcomparer explicite lorsque cela est possible | ✔️ | ✔️ | |
| MA0025 | Conception | Implémentez les fonctionnalités au lieu de lancer NotImplementEdException | ✔️ | ||
| MA0026 | Conception | Correction d'un commentaire de TODO | ✔️ | ||
| MA0027 | Usage | Préfèrent repenser une exception implicitement | ✔️ | ✔️ | |
| MA0028 | Performance | Optimiser l'utilisation de StringBuilder | ✔️ | ✔️ | |
| MA0029 | Performance | Combiner les méthodes LINQ | ✔️ | ✔️ | |
| Ma0030 | Performance | Supprimer l'appel inutile | ✔️ | ✔️ | |
| MA0031 | Performance | Optimiser l'énumérable.Count () Utilisation | ✔️ | ✔️ | |
| MA0032 | Usage | Utilisez une surcharge avec un argument d'annulation | |||
| MA0033 | Conception | Ne marquez pas les champs d'instance avec ThreadStatitAttribute | ✔️ | ||
| MA0035 | Usage | N'utilisez pas de méthodes de filetage dangereux | ✔️ | ||
| MA0036 | Conception | Rendre la classe statique | ✔️ | ✔️ | |
| MA0037 | Usage | Supprimer la déclaration vide | ✔️ | ✔️ | |
| MA0038 | Conception | Rendre la méthode statique (dépréciée, utiliser CA1822 à la place) | ✔️ | ✔️ | |
| MA0039 | Sécurité | N'écrivez pas votre propre méthode de validation de certificat | ✔️ | ||
| MA0040 | Usage | Transférer le paramètre d'annulation des méthodes qui en prennent une | ✔️ | ✔️ | |
| MA0041 | Conception | Rendre la propriété statique (obsolète, utiliser CA1822 à la place) | ✔️ | ✔️ | |
| MA0042 | Conception | N'utilisez pas d'appels de blocage dans une méthode asynchrone | ✔️ | ✔️ | |
| MA0043 | Usage | Utilisez le nom de l'opérateur dans ArgumentException | ✔️ | ✔️ | |
| MA0044 | Performance | Supprimer l'appel inutile | ✔️ | ✔️ | |
| MA0045 | Conception | N'utilisez pas les appels de blocage dans une méthode de synchronisation (besoin de rendre la méthode d'appel asynchronisée) | ✔️ | ||
| MA0046 | Conception | Utilisez EventHandler <T> pour déclarer les événements | ✔️ | ||
| MA0047 | Conception | Déclarer les types dans les espaces de noms | ✔️ | ||
| MA0048 | Conception | Le nom du fichier doit correspondre au nom du type | ✔️ | ||
| MA0049 | Conception | Le nom de type ne doit pas correspondre à l'espace de noms contenant | ✔️ | ||
| Ma0050 | Conception | Valider correctement les arguments dans les méthodes itérateurs | ✔️ | ✔️ | |
| MA0051 | Conception | La méthode est trop longue | ✔️ | ||
| MA0052 | Performance | Remplacer constant enum.tostring par nom de | ✔️ | ✔️ | |
| MA0053 | Conception | Rendre la classe scellée | ✔️ | ✔️ | |
| MA0054 | Conception | Entrez l'exception capturée comme ingerexception | ✔️ | ||
| MA0055 | Conception | N'utilisez pas Finalizer | ✔️ | ||
| MA0056 | Conception | N'appelez pas les membres remplacés dans le constructeur | ✔️ | ||
| MA0057 | Appellation | Le nom de classe doit se terminer par «attribut» | ✔️ | ||
| MA0058 | Appellation | Le nom de classe doit se terminer par «exception» | ✔️ | ||
| MA0059 | Appellation | Le nom de la classe doit se terminer par «EventArgs» | ✔️ | ||
| MA0060 | Conception | La valeur renvoyée par Stream.read/stream.readasync n'est pas utilisée | ✔️ | ||
| MA0061 | Conception | Les remplacements de la méthode ne doivent pas modifier les valeurs par défaut | ✔️ | ✔️ | |
| MA0062 | Conception | Les énumérations non-FLAGS ne doivent pas être marquées de "FlagsAttribute" | ✔️ | ||
| MA0063 | Performance | Utilisez où avant l'ordre | ✔️ | ||
| MA0064 | Conception | Évitez de verrouiller l'instance accessible au public | ✔️ | ||
| MA0065 | Performance | ValueType par défaut. | ✔️ | ||
| MA0066 | Performance | Table de hachage Le type hostile est utilisé dans une table de hachage | ✔️ | ||
| MA0067 | Conception | Utiliser Guid.Empty | ✔️ | ✔️ | |
| MA0068 | Conception | Nom du paramètre non valide pour l'attribut nullable | ✔️ | ||
| MA0069 | Conception | Les champs statiques non constatants ne doivent pas être visibles | ✔️ | ||
| MA0070 | Conception | Les attributs obsolètes devraient inclure des explications | ✔️ | ||
| MA0071 | Style | Évitez d'utiliser le redondant d'autre | ✔️ | ✔️ | |
| MA0072 | Conception | Ne jetez pas d'un bloc enfin | ✔️ | ||
| MA0073 | Style | Évitez la comparaison avec la constante bool | ✔️ | ✔️ | |
| MA0074 | Usage | Évitez les méthodes implicites sensibles à la culture | ✔️ | ✔️ | |
| MA0075 | Conception | N'utilisez pas de tostring implicite sensible à la culture | ✔️ | ||
| MA0076 | Conception | N'utilisez pas de tostring implicite sensible à la culture dans les chaînes interpolées | ✔️ | ||
| MA0077 | Conception | Une classe qui fournit des égaux (t) devrait implémenter un iéquatable <T> | ✔️ | ✔️ | |
| MA0078 | Performance | Utilisez «Cast» au lieu de «sélectionner» pour lancer | ✔️ | ✔️ | |
| MA0079 | Usage | Transmettre l'annulation en utilisant .WithCancellation () | ✔️ | ✔️ | |
| MA0080 | Usage | Utilisez un jeton d'annulation en utilisant .WithCancellation () | |||
| MA0081 | Conception | Les remplacements de la méthode ne doivent pas omettre le mot-clé params | ✔️ | ✔️ | |
| MA0082 | Conception | Nan ne doit pas être utilisé dans les comparaisons | ✔️ | ||
| MA0083 | Conception | Les paramètres de constructeurs doivent exister dans les constructeurs | ✔️ | ||
| MA0084 | Conception | Les variables locales ne doivent pas masquer d'autres symboles | ✔️ | ||
| MA0085 | Usage | Les délégués anonymes ne doivent pas être utilisés pour se désabonner des événements | ✔️ | ||
| MA0086 | Conception | Ne jetez pas à partir d'un finalisateur | ✔️ | ||
| MA0087 | Conception | Les paramètres avec [DefaultParameTervalue] Les attributs doivent également être marqués [facultatif] | ✔️ | ||
| MA0088 | Conception | Utilisez [defaultParameTervalue] au lieu de [defaultValue] | ✔️ | ||
| MA0089 | Performance | Optimiser l'utilisation de la méthode des chaînes | ✔️ | ✔️ | |
| MA0090 | Conception | Supprimer le bloc Else / enfin | ✔️ | ||
| MA0091 | Usage | L'expéditeur doit être «ceci» par exemple les événements | ✔️ | ✔️ | |
| MA0092 | Usage | L'expéditeur doit être «nul» pour les événements statiques | ✔️ | ||
| MA0093 | Usage | Eventargs ne devrait pas être nul | ✔️ | ✔️ | |
| MA0094 | Conception | Une classe qui fournit une comparaison (t) doit implémenter icomparable <T> | ✔️ | ||
| MA0095 | Conception | Une classe qui implémente iequatable <T> devrait remplacer l'égal (objet) | ✔️ | ||
| MA0096 | Conception | Une classe qui implémente ICOMPARABLE <T> devrait également implémenter Iequatable <T> | ✔️ | ||
| MA0097 | Conception | Une classe qui implémente iCompparable <T> ou ICOMPARABLE devrait remplacer les opérateurs de comparaison | ✔️ | ||
| MA0098 | Performance | Utilisez l'indexeur au lieu des méthodes LINQ | ✔️ | ✔️ | |
| MA0099 | Usage | Utilisez une valeur d'énumération explicite au lieu de 0 | ✔️ | ||
| MA0100 | Usage | Attendre la tâche avant de éliminer les ressources | ✔️ | ||
| MA0101 | Usage | La chaîne contient une fin de caractère implicite | ? | ✔️ | ✔️ |
| MA0102 | Conception | Faire des membres en lecture | ✔️ | ✔️ | |
| MA0103 | Usage | Utilisez Sequenceequal au lieu de l'opérateur d'égalité | ✔️ | ✔️ | |
| MA0104 | Conception | Ne créez pas de type avec un nom à partir du bcl | |||
| MA0105 | Performance | Utilisez les paramètres lambda au lieu d'utiliser une fermeture | ✔️ | ||
| MA0106 | Performance | Évitez la fermeture en utilisant une surcharge avec le paramètre «FactoryArgument» | ✔️ | ||
| MA0107 | Conception | N'utilisez pas d'objet sensible à la culture. | |||
| MA0108 | Usage | Supprimer la valeur de l'argument redondant | ✔️ | ✔️ | |
| MA0109 | Conception | Envisagez d'ajouter une surcharge avec une portée <T> ou Memory <T> | |||
| MA0110 | Performance | Utilisez le générateur de source Regex | ✔️ | ✔️ | |
| MA0111 | Performance | Utilisez String.Create au lieu de FormAtTableString | ✔️ | ✔️ | |
| MA0112 | Performance | Utilisez 'Count> 0' au lieu de 'any ()' | |||
| MA0113 | Conception | Utilisez DateTime.Unixepoch | ✔️ | ✔️ | |
| MA0114 | Conception | Utilisez DateTimeOffset.Unixepoch | ✔️ | ✔️ | |
| MA0115 | Usage | Paramètre de composant inconnu | ✔️ | ||
| MA0116 | Conception | Les paramètres avec les attributs [SupplyParameterFromQuery] doivent également être marqués comme [Paramètre] | ✔️ | ✔️ | |
| MA0117 | Conception | Les paramètres avec [EditorRequired] les attributs doivent également être marqués comme [Paramètre] | ✔️ | ✔️ | |
| MA0118 | Conception | Les méthodes [jsinvokable] doivent être publiques | ✔️ | ||
| MA0119 | Conception | Jsruntime ne doit pas être utilisé dans l'oninitialized ou oninitializedasync | ✔️ | ||
| MA0120 | Performance | Utilisez invokeVoidasync lorsque la valeur retournée n'est pas utilisée | ✔️ | ✔️ | |
| MA0121 | Conception | Ne pas écraser la valeur des paramètres | |||
| MA0122 | Conception | Les paramètres avec [SupplyParameTrFromQuery] les attributs ne sont valides que dans les composants routibles (@Page) | ✔️ | ||
| MA0123 | Conception | Le numéro de séquence doit être une constante | ✔️ | ||
| MA0124 | Conception | Le type de paramètre de journal n'est pas valide | ✔️ | ||
| MA0125 | Conception | La liste des types de paramètres de journal contient un type non valide | ✔️ | ||
| MA0126 | Conception | La liste des types de paramètres de journal contient un double | ✔️ | ||
| MA0127 | Usage | Utiliser String.equals au lieu de le modèle | |||
| MA0128 | Usage | Utiliser 'est' opérateur au lieu de séquence | ✔️ | ✔️ | |
| MA0129 | Usage | Attendre la tâche dans l'utilisation de la déclaration | ✔️ | ||
| MA0130 | Usage | GetType () ne doit pas être utilisé sur le système. | ✔️ | ||
| MA0131 | Usage | ArgumentNullexception.Throwifnull ne doit pas être utilisé avec des types non nulles | ✔️ | ||
| MA0132 | Conception | Ne vous convertissez pas implicitement à DateTimeOffset | ✔️ | ||
| MA0133 | Conception | Utilisez DateTimeOffset au lieu de compter sur la conversion implicite | ✔️ | ||
| MA0134 | Usage | Observer le résultat des appels asynchrones | ✔️ | ||
| MA0135 | Conception | Le paramètre de journal n'a pas de type configuré | |||
| MA0136 | Usage | La chaîne brute contient un caractère de fin de ligne implicite | ? | ✔️ | |
| MA0137 | Conception | Utilisez le suffixe «async» lorsqu'une méthode renvoie un type attendable | |||
| MA0138 | Conception | N'utilisez pas le suffixe `` asynchrone '' lorsqu'une méthode ne renvoie pas de type attendable | |||
| MA0139 | Conception | Le type de paramètre de journal n'est pas valide | ✔️ | ||
| MA0140 | Conception | Les branches si et else ont un code identique | ✔️ | ||
| MA0141 | Usage | Utilisez la correspondance de motifs au lieu des opérateurs d'inégalité pour un contrôle nul | ✔️ | ||
| MA0142 | Usage | Utilisez la correspondance de motifs au lieu des opérateurs d'égalité pour un contrôle nul | ✔️ | ||
| MA0143 | Conception | Les paramètres du constructeur principal doivent être lus en lecture | ✔️ | ||
| MA0144 | Performance | Utiliser System.OperatingSystem pour vérifier le système d'exploitation actuel | ✔️ | ||
| MA0145 | Usage | Signature pour la méthode [UnsefaccessorAttribute] n'est pas valide | ✔️ | ||
| MA0146 | Usage | Le nom doit être défini explicitement sur les fonctions locales | ✔️ | ||
| MA0147 | Usage | Évitez la méthode Async Void pour le délégué | ✔️ | ||
| MA0148 | Usage | Utilisez la correspondance de motifs au lieu des opérateurs d'égalité pour une valeur discrète | ✔️ | ||
| MA0149 | Usage | Utilisez la correspondance de motifs au lieu d'opérateurs d'inégalité pour une valeur discrète | ✔️ | ||
| MA0150 | Conception | N'appelez pas l'objet par défaut.tostring explicitement | ✔️ | ||
| MA0151 | Usage | DebuggerDisplay doit contenir des membres valides | ✔️ | ||
| MA0152 | Performance | Utilisez un débattre au lieu d'utiliser deux fois | ✔️ | ||
| MA0153 | Conception | Ne journalisez pas les symboles décorés directement avec DataClassificationAttribute | ✔️ | ||
| MA0154 | Conception | Utilisez LangWord dans XML Commentaire | ✔️ | ✔️ | |
| MA0155 | Conception | N'utilisez pas les méthodes de vide asynchrones | |||
| MA0156 | Conception | Utilisez le suffixe `` asynchronisé '' lorsqu'une méthode renvoie iASyncenumable <T> | |||
| MA0157 | Conception | N'utilisez pas le suffixe `` asynchronisé '' lorsqu'une méthode ne renvoie pas iASyncenumable <T> | |||
| MA0158 | Performance | Utiliser System.threading.lock | ✔️ | ||
| MA0159 | Performance | Utilisez «Order» au lieu de «OrderBy» | ✔️ | ✔️ | |
| MA0160 | Performance | Utiliser CONTAINSKEY au lieu de TryGetValue | ✔️ | ||
| MA0161 | Usage | USESHELLEXECUTE doit être explicitement réglé | |||
| MA0162 | Usage | Utilisez le processus. Présentation avec ProcessStartinfo | |||
| MA0163 | Usage | USESHELLEXECUTE doit être faux lors de la redirection d'entrée ou de sortie standard | ✔️ | ||
| MA0164 | Style | Utilisez des parenthèses pour rendre le motif plus clair | ✔️ | ✔️ | |
| MA0165 | Usage | Faire une corde interpolée | ? | ✔️ | ✔️ |
| Identifiant | Règle supprimée | Justification |
|---|---|---|
MAS0001 | CA1822 | Supprimez CA1822 sur les méthodes décorées avec des attributs de benchmarkdotnet. |
MAS0002 | CA1822 | Supprimez CA1822 sur les méthodes décorées d'un attribut System.Text.json telles que [JSONPropertyName] ou [JSONInclude]. |
MAS0003 | IDE0058 | Supprimer IDE0058 sur des types bien connus |