Lingua
Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| Proprietà | Value |
|---|---|
| ID regola | MSTEST0084 |
| Titolo | Gli attributi di compatibilità della piattaforma devono essere coerenti con [OSCondition] |
| Category | Usage |
| La modifica è dirompente o non dirompente | Non rompente |
| Abilitato per impostazione predefinita | Sì |
| Gravità predefinita | Informazioni |
| introdotta nella versione | 4.5.0 |
| È presente una correzione del codice | Sì, solo per C# |
Cause
Una classe o un metodo MSTest usa SupportedOSPlatformAttribute o UnsupportedOSPlatformAttribute, ma MSTest OSConditionAttribute non esprime una condizione compatibile del sistema operativo.
Descrizione della regola
Gli attributi di compatibilità della piattaforma informano l'analisi in fase di compilazione, ma non controllano se MSTest esegue un test. Senza un oggetto compatibile [OSCondition], un test può essere eseguito in un sistema operativo non supportato e non riesce prima di raggiungere il comportamento che intende verificare.
[TestMethod]
[SupportedOSPlatform("windows")]
public void UsesWindowsApi() { } // Violation
La regola tiene conto degli attributi di compatibilità della piattaforma nel test, nei relativi tipi contenenti e nel relativo assembly. Un [OSCondition] compatibile a livello di classe può soddisfare il requisito per un metodo di test. Se sia la classe sia il metodo dichiarano [OSCondition], le condizioni combinate devono corrispondere alla restrizione effettiva della piattaforma.
La regola confronta le famiglie del sistema operativo, non le versioni della piattaforma. Ad esempio, [SupportedOSPlatform("windows10.0")] richiede comunque una condizione per la famiglia di Windows, ma [OSCondition] non impone la versione minima di Windows. L'analizzatore non segnala restrizioni basate sulla versione [UnsupportedOSPlatform] perché l'esclusione di un'intera famiglia di sistemi operativi ignora anche le versioni supportate.
Come correggere le violazioni
Mantenere l'attributo di compatibilità della piattaforma per l'analisi delle API e aggiungere o aggiornare [OSCondition] in modo che MSTest ignori il test sulle famiglie di sistemi operativi non supportate.
[TestMethod]
[SupportedOSPlatform("windows")]
[OSCondition(OperatingSystems.Windows)]
public void UsesWindowsApi() { }
Una correzione del codice C# aggiunge o aggiorna [OSCondition] quando l'analizzatore può determinare una condizione compatibile. L'analizzatore segnala una diagnostica senza una correzione quando, ad esempio, la condizione a livello di classe di un metodo è in conflitto con i relativi attributi della piattaforma, la piattaforma non è rappresentata da OperatingSystemso gli attributi della piattaforma combinano restrizioni supportate e non supportate. Risolvere quei conflitti manualmente. Visual Basic segnala la diagnostica, ma non fornisce una correzione automatica.
Quando eliminare gli avvisi
Disattivare la regola quando un altro meccanismo garantisce che il test non possa essere eseguito su un sistema operativo incompatibile e che l'aggiunta dell'elemento [OSCondition] duplicherebbe tale criterio.
Eliminare un avviso
#pragma warning disable MSTEST0084
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0084
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0084.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.