J'utilise l'outil FxCopCmd pour l'analyse de code statique. Comme nous avions déjà une énorme base de code, nous avons référencé des problèmes existants en utilisant l'outil baseline.exe fourni avec FxCop.FxCop: Message de suppression pour la méthode asynchrone
J'observe que si j'ajoute une nouvelle méthode à ma classe C#, alors certains des messages de suppression dans le fichier GlobalSuppression.cs cessent de fonctionner et j'ai des problèmes pour le code que je n'ai pas touché.
Exemple:
namespace ConsoleApplication1
{
class Program
{
public async Task<string> method1()
{
string a = "";
a.Equals("abc", StringComparison.InvariantCultureIgnoreCase);
return a;
}
static void Main(string[] args)
{
}
}
}
Cela jette l'erreur suivante:
CA1031 : Microsoft.Design : Modify 'Program.d__0.MoveNext()' to catch a more specific exception than 'Exception' or rethrow the exception
Pour supprimer la question 'CA1309 UseOrdinalStringComparison', j'ai ajouté le message suivant de suppression dans le fichier GlobalSuppression.cs
[module: SuppressMessage("Microsoft.Globalization", "CA1309:UseOrdinalStringComparison", Scope="member", Target="ConsoleApplication1.Program.d__0.MoveNext()", MessageId="System.String.Equals(System.String,System.StringComparison)", Justification="")]
Mais si j'ajoute une méthode de plus dans la classe, alors ce suppressi sur le message cesse de fonctionner. Cela est dû au fait que la méthode 1 est asynchrone et qu'une nouvelle classe est créée (refer this) dans le code compilé (qui était <method1>d__0
dans le premier cas). Mais lorsque j'ajoute une autre méthode avant method1, la nouvelle classe créée dans le code compilé s'appelle <method1>d__1
. Par conséquent, le message de suppression n'est pas appliqué et FxCop recommence à afficher des erreurs dans le code.
Est-il possible de supprimer définitivement les erreurs FxCop pour les méthodes asynchrones?
Je n'ai jamais vu ce comportement même dans des projets avec des problèmes FxCop 15k + utilisant l'analyse Visual Studio. Avez-vous essayé avec ça? –
Etes-vous sûr que le projet implique des méthodes asynchrones? Le comportement est dû à la compilation du code des méthodes asynchrones. –
Oui, il y avait des centaines de méthodes asynchrones. EDIT: Je viens d'exécuter à nouveau FxCop, ce comportement n'est pas reproductible sur l'analyse Visual Studio –