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 | 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.