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é | Value |
|---|---|
| Identificateur de la règle | MSTEST0083 |
| Titre | Utilisez « [ExecutableCondition] » au lieu des vérifications « File.Exists » avant « Process.Start ». |
| Catégorie | Utilisation |
| Le correctif a un effet disruptif ou non disruptif | Non-breaking |
| Activé par défaut | Oui |
| 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 |
Important
Cet analyseur est planifié pour MSTest 4.4 et est disponible uniquement dans les versions préliminaires jusqu’à la publication de MSTest 4.4.0.
Cause
Une méthode de test vérifie d’abord si un exécutable existe et retourne ou appelle Assert.Inconclusive quand ce n’est pas le cas, puis appelle Process.Start avec le même chemin d’accès exécutable.
Description de la règle
Permet [ExecutableCondition] de déclarer qu’un test nécessite un exécutable. L’attribut signale le test comme ignoré lorsque MSTest ne peut pas résoudre l’exécutable. Un retour anticipé signale incorrectement le test tel qu’il est passé, et une vérification impérative masque l’exigence des outils de découverte et de création de rapports.
[TestMethod]
public void RunsTool()
{
if (!File.Exists("tool.exe")) return; // Violation
Process.Start("tool.exe");
}
L’analyseur reconnaît une clause de garde en début d’instruction sans branche else significative lorsque File.Exists et Process.Start ultérieurement utilisent tous deux le même chemin d’exécution constant.
Comment corriger les violations
Remplacez la garde par [ExecutableCondition].
[TestMethod]
[ExecutableCondition("tool.exe")]
public void RunsTool() => Process.Start("tool.exe");
Une correction de code C# remplace la clause de garde par l’attribut. Visual Basic signale le diagnostic, mais ne fournit pas de correctif automatique.
Quand supprimer les avertissements
Supprimez la règle lorsque la vérification du fichier valide les données plutôt qu’un prérequis exécutable, ou lorsque le test a besoin d’un comportement qui ExecutableConditionAttribute 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 MSTEST0083
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0083
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.MSTEST0083.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements d’analyse du code.