Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
| 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.