MSTEST0079 : Utiliser l’attribut ArchitectureCondition au lieu de vérifications d’exécution

Propriété Valeur
Identificateur de la règle MSTEST0079
Titre Utiliser l’attribut ArchitectureCondition au lieu de vérifications d’exécution
Category Usage
Le correctif a un effet disruptif ou non disruptif Non-breaking
Activé par défaut Yes
Sévérité par défaut Informations
Introduit dans la version 4.4.0 (préversion)
Existe-t-il une correction de code Oui, pour C# uniquement

Cause

La première instruction d’une méthode de test se ProcessArchitecture compare à une Architecture valeur, puis retourne tôt ou appelle Assert.Inconclusive, au lieu d’utiliser l’attribut [ArchitectureCondition] .

Description de la règle

Les méthodes de test qui comparent RuntimeInformation.ProcessArchitecture , puis retournent ou appellent Assert.Inconclusive tôt doivent utiliser l’attribut à la [ArchitectureCondition] place. L’attribut est plus déclaratif et détectable, et il signale le test comme ignoré plutôt que passé, ce qui n’est pas le cas d’un retour anticipé.

[TestMethod]
public void TestMethod()
{
    if (RuntimeInformation.ProcessArchitecture != Architecture.X64) return; // Violation
}

L’analyseur reconnaît uniquement la protection lorsqu’il s’agit de la première instruction de la méthode, sans else branche et lorsque le membre référencé Architecture a un indicateur correspondant TestArchitectures .

Comment corriger les violations

Remplacez la vérification du runtime par l’attribut [ArchitectureCondition] .

[TestMethod]
[ArchitectureCondition(TestArchitectures.X64)]
public void TestMethod() { }

Un correctif de code C# remplace la garde par l’attribut pour vous. Visual Basic code a ce diagnostic, mais n'a pas de correctif automatique ; appliquez l'attribut manuellement.

Quand supprimer les avertissements

Vous pouvez supprimer cet avertissement si votre vérification d’exécution est plus complexe qu’un simple garde de première instruction, ou si vous avez besoin d’une logique conditionnelle qui [ArchitectureCondition] ne peut pas exprimer.

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

#pragma warning disable MSTEST0079
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0079

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0079.severity = none

Pour plus d’informations, consultez Comment supprimer les avertissements d’analyse du code.

Voir aussi