Ich benutze StyleCop- und FxCop-Tools, um meinen Code zu verbessern, aber ich kam an einen Ort, an dem es zwei Regeln gibt, eine in StyleCop und eine in FxCop, die einander ausschließen. Wenn ich meinen Code an die Regel von StyleCop anpasse, schlägt die FxCop-Validierung fehl und umgekehrt.StyleCop- und FxCop-Regeln schließen sich gegenseitig aus
Die erste Regel ist SA1200 von StyleCop, die besagt, dass alle using-Direktiven innerhalb des Namespace platziert werden müssen.
Alle verwendeten Direktiven müssen innerhalb des Namespaces platziert werden.
So habe ich so etwas wie dieses
namespace MyNamespace
{
using System;
...
}
getan Es ist für StyleCop ok war, nicht mehr Warnungen. Jetzt führe ich FxCop Validierung und es sagt mir, dass CA1014 verletzt wird:
Markieren Sie "MyApp.dll" mit CLSCompliant (True), weil es extern sichtbare Typen exponiert.
dies beheben ich etwas tun sollte:
[ClsCompliant(true)]
namespace MyNamespace
{
...
}
aber jetzt kann ich mein Projekt nicht bauen, weil ClsCompliant
Attribut nicht erkannt wird (weil es von System
Namespace ist, die ich in der MyNamespace
enthalten) . Also, wenn ich using System;
Richtlinie außerhalb der MyNamespace
Erklärung verschieben. Dies wird meinen Code kompilieren lassen, aber wieder wird es die Regel von StyleCop brechen.
Gibt es eine Möglichkeit, mit diesem Problem umzugehen, außer eine der Regeln in StyleCop oder FxCop zu deaktivieren? Und wenn das nicht möglich ist, welche der Regeln sollte ich deaktivieren? Was ist weniger wichtig?
Ich denke, die Assembly sollte markiert werden CLSCompliant wie maciejkow wies darauf hin, anstatt die Namespace-konform zu markieren. –