Utiliser l’instruction de saut étiquetée (IDE0410)

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 goto qui passe à une étiquette immédiatement après une boucle imbriquée, qui peut être remplacée par break <label>.
  • Une instruction goto qui 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 par continue <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 étiquette break <label> ou continue <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.

Voir aussi