MSTEST0080 : Utiliser l’attribut CICondition au lieu de vérifications d’environnement

Propriété Valeur
Identificateur de la règle MSTEST0080
Titre Utiliser l’attribut CICondition au lieu de vérifications d’environnement
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 vérifie le résultat, Environment.GetEnvironmentVariable("CI") puis retourne tôt ou appelle Assert.Inconclusive, au lieu d’utiliser l’attribut [CICondition] .

Description de la règle

Testez les méthodes qui null vérifient la CI variable d’environnement, puis retournent ou appellent Assert.Inconclusive tôt doivent utiliser l’attribut à la [CICondition] place. L’attribut reconnaît chaque fournisseur d’intégration continue MSTest le sait et signale le test comme ignoré au lieu de passer, ce qui n’est pas le cas.

[TestMethod]
public void TestMethod()
{
    if (Environment.GetEnvironmentVariable("CI") is null) return; // Violation
}

L’analyseur est délibérément limité à la variable d’utilisation CI générale que tous les principaux ensembles de fournisseurs. Un garde sur une variable spécifique au fournisseur, par TF_BUILDexemple, signifie « ignorer sur Azure Pipelines », tandis que [CICondition] signifie « ignorer sur n'importe quel ci », de sorte que l'analyseur ne suggère pas de remplacer une vérification spécifique au fournisseur.

Comment corriger les violations

Remplacez la vérification de la variable d’environnement par l’attribut [CICondition] .

[TestMethod]
[CICondition(ConditionMode.Include)]
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 de l’environnement est plus complexe qu’une simple vérification null de première instruction, ou si vous avez besoin d’une logique conditionnelle qui [CICondition] 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 MSTEST0080
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0080

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.MSTEST0080.severity = none

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

Voir aussi