J'ai une classe qui commence quelque chose comme ceci:Ne peut pas supprimer CA1502
namespace Tools.Builders
{
internal abstract class Builder
{
[SuppressMessage("Microsoft.Maintainability", "CA1502")]
private static readonly Dictionary<string, Func<ILogger, Builder>> _builders =
new Dictionary<string, Func<ILogger, Builder>>
{
{ "1", (x) => {return new BuilderType1(x);} },
{ "2", (x) => {return new BuilderType2(x);} },
{ "3", (x) => {return new BuilderType3(x);} },
{ "4", (x) => {return new BuilderType4(x);} },
{ "5", (x) => {return new BuilderType5(x);} },
{ "6", (x) => {return new BuilderType6(x);} },
{ "7", (x) => {return new BuilderType7(x);} },
{ "8", (x) => {return new BuilderType8(x);} },
{ "9", (x) => {return new BuilderType9(x);} },
};
protected ILogger _logger;
protected Builder(ILogger logger)
{
_logger = logger;
}
//...
Cela provoque un avertissement de CA1502 de la forme « Builder.Builder() a une complexité cyclomatique de ... » (ce qui est un problème connu avec ce type d'initialiseur). Cependant, mon problème est que je ne peux pas supprimer l'avertissement. J'ai essayé de placer le SuppressMessageAttribute dans toutes sortes d'endroits différents dans le code, mais il est simplement ignoré. Des suggestions quelqu'un?
[Docs] (https://msdn.microsoft.com/fr-fr/library/system.diagnostics.codeanalysis.suppressmessageattribute.suppressmessageattribute (v = vs.110) .aspx): _ "Le symbole du préprocesseur" CODE_ANALYSIS "doit être défini pour que cet attribut soit effectif.L'absence du symbole du préprocesseur entraîne l'application de l'attribut." _ – CodeCaster
Eh bien, je l'ai essayé, mais cela n'a pas fait de différence. Merci quand même. – Dave
Voir [Pragma ne fonctionne pas pour l'avertissement CA1502] (https://social.msdn.microsoft.com/Forums/en-US/872d9c97-02b7-4409-9df7-6202ea0820dc/pragma-not-working-for-warning-ca1502 ? forum = vstscode) – buffjape