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 | IDE0410 |
| Titre | Utiliser l’instruction de saut étiquetée |
| Catégorie | Style |
| Sous-catégorie | Règles de langage (préférences de bloc de code) |
| Langues applicables | C# 15+ |
| Options | csharp_style_prefer_labeled_jump_statements |
Aperçu
Pour rendre le flux de contrôle des boucles imbriquées plus clair et plus concis, cette règle signale le code qui utilise des instructions goto ou des modèles basés sur des indicateurs booléens pour sortir de boucles imbriquées ou les poursuivre, lorsqu’une instruction avec étiquette break ou continue (C# 15+) peut être utilisée à la place.
La règle détecte les modèles suivants :
- Instruction
gotoqui passe à une étiquette immédiatement après une boucle imbriquée, qui peut être remplacée parbreak <label>. - Une instruction
gotoqui effectue un saut vers une étiquette vide à la fin du corps de la boucle (ce qui revient en pratique à poursuivre la boucle externe) et qui peut être remplacée parcontinue <label>. - Modèle d’indicateur booléen, où une variable d’indicateur est définie
true, puis vérifiée à chaque niveau de boucle pour propager un saut ou continuer vers l’extérieur via des boucles imbriquées, qui peuvent être remplacées par une seule étiquettebreak <label>oucontinue <label>.
Options
Les options spécifient le comportement que vous souhaitez que la règle impose. Pour plus d’informations sur la configuration des options, consultez Format d’option.
csharp_style_prefer_labeled_jump_statements
| Propriété | Valeur | Description |
|---|---|---|
| Nom de l’option | csharp_style_prefer_labeled_jump_statements | |
| Valeurs d’option | true |
Préférer les instructions de saut étiquetées |
false |
Désactive la règle | |
| Valeur d’option par défaut | true |
Example
Les exemples suivants montrent les trois modèles détectés par cette règle :
goto remplacé par l’étiquette break
// Code with violations.
for (int x = 0; x < 10; x++)
{
for (int y = 0; y < 10; y++)
{
if (x * y > 20)
goto found;
}
}
found:
Console.WriteLine("Done");
// Fixed code.
found: for (int x = 0; x < 10; x++)
{
for (int y = 0; y < 10; y++)
{
if (x * y > 20)
break found;
}
}
Console.WriteLine("Done");
goto remplacé par l’étiquette « continue »
// Code with violations.
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (j == 5)
goto next;
}
next: ; // The empty statement is required; a label in C# must be followed by a statement.
}
// Fixed code.
next: for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (j == 5)
continue next;
}
}
Modèle d’indicateur remplacé par l’étiquette d’arrêt
// Code with violations.
bool found = false;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i * j > 20)
{
found = true;
break;
}
}
if (found)
break;
}
// Fixed code.
loop_i: for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i * j > 20)
{
break loop_i;
}
}
}
Supprimer un avertissement
Si vous souhaitez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver, puis réactivez la règle.
#pragma warning disable IDE0410
// The code that's violating the rule is on this line.
#pragma warning restore IDE0410
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]
dotnet_diagnostic.IDE0410.severity = none
Pour désactiver toutes les règles de style de code, définissez la gravité de la catégorie Style sur none dans le fichier de configuration.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements d’analyse du code.