Ich versuche, eine Code-Analyse-Regel über eine gesamte Klasse zu deaktivieren, aber nicht für das gesamte Projekt, nur eine einzige Klasse zu deaktivieren. Im folgenden Beispiel generiert der Build eine CA1822-Warnung, da er der Meinung ist, dass die Komponententestmethoden statisch sein sollten.Wie spezifische Code-Analyse Warnung für ganze Klasse
Das Update ist das folgende Attribut zu jeder Einheit Testmethode hinzufügen: [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]
Allerdings, das ist umständlich und unübersichtlich, eine Klasse mit vielen Unit-Tests.
Ich habe versucht:
- Bewegen Sie das Attribut der Klasse
- alle Methoden Wrapping in
#pragma warning disable CA1822
#pragma warning restore CA1822
von Weder diese beiden Ansätze haben funktioniert.
public class TestClass
{
public TestClass()
{
// some setup here
}
[Fact]
public void My_Unit_Test1()
{
// the 'this' parameter is never used, causes CA warning 1822
}
[Fact]
public void My_Unit_Test2()
{
// the 'this' parameter is never used, causes CA warning 1822
}
}
Mit VS2015 Update 2, .net 4.61 und den neuen Code Analysis Analysatoren. Dies ist
ich adressierte diese (und andere) Fragen durch einen anderen Code-Analyse-Regelsatz für Unit-Test-Projekte mit. Ich habe die Regeln deaktiviert, die nicht für Unit Test-Projekte gelten. –
@MatthewWatson - Ich verwende einen anderen Regelsatz für Testprojekte. In diesem Fall möchte ich, dass die Regel auf mein Komponententestprojekt angewendet wird, nicht auf eine bestimmte Klasse. – SFun28
Leider können Sie das nicht tun - die Unterdrückung muss immer auf die Ebene angewendet werden, auf der die Warnung/der Fehler gemeldet wird. Wenn dies eine Methode ist, können Sie nur die Warnung für diese Methode unterdrücken. –