ich eine Klasse, die so etwas wie dies beginnt:Kann nicht CA1502 unterdrücken
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;
}
//...
Dieses eine CA1502 Warnung der Form verursacht „Builder.Builder() eine zyklomatische Komplexität von ...“ (das ist ein bekanntes Problem mit dieser Art von Initialisierer). Mein Problem ist jedoch, dass ich die Warnung nicht unterdrücken kann. Ich habe versucht, das SuppressMessageAttribute an allen möglichen Stellen im Code zu platzieren, aber es wird einfach ignoriert. Irgendwelche Vorschläge irgendjemand?
[Dokumente] (https://msdn.microsoft.com/en-us/library/system.diagnostics.codeanalysis.suppressmessageattribute.suppressmessageattribute (v = vs.110) .aspx): _ "Das Präprozessorsymbol" CODE_ANALYSIS "Damit dieses Attribut wirksam ist, muss es definiert werden. Das Fehlen des Präprozessorsymbols führt dazu, dass das Attribut nicht angewendet wird." _ – CodeCaster
Nun, ich habe es versucht, aber es machte keinen Unterschied. Danke trotzdem. – Dave
Siehe [Pragma funktioniert nicht für Warnung CA1502] (https://social.msdn.microsoft.com/Forums/en-US/872d9c97-02b7-4409-9df7-6202ea0820dc/pragma-not-working-for-warning-ca1502 ? Forum = vstscode) – buffjape