Sto tentando di disabilitare una regola di analisi del codice su un'intera classe, ma NON per l'intero progetto, solo una singola classe. Nell'esempio seguente, la build genera un avviso CA1822 poiché ritiene che i metodi di test dell'unità dovrebbero essere statici.Come disattivare l'avviso di analisi del codice specifico per l'intera classe
La correzione è aggiungere il seguente attributo per ogni metodo di prova unità: [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]
Tuttavia, che è ingombrante e ingombra una classe con molti test di unità.
ho provato:
- Spostare l'attributo alla classe
- Wrapping tutti i metodi in
#pragma warning disable CA1822
#pragma warning restore CA1822
Nessuno di questi due gli approcci hanno funzionato.
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
}
}
Utilizzando VS2015 Update 2, .NET 4.61, e il nuovo codice di analisi analizzatori.
ho affrontato questo (e altri) problemi utilizzando un diverso set di regole di analisi del codice per i progetti di unità di prova. Ho disattivato le regole che non si applicavano ai progetti Unit Test. –
@MatthewWatson - Uso anche un set di regole diverso per i progetti di test. In questo caso, voglio che la regola si applichi al mio progetto di test unitario, ma non a una classe specifica. – SFun28
Sfortunatamente non è possibile farlo - la soppressione deve sempre essere applicata al livello a cui viene segnalato l'avviso/errore, quindi se questo è un metodo, è possibile sopprimere solo l'avviso per quel metodo. –