Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
| Propriété | Value |
|---|---|
| Identificateur de la règle | CA2017 |
| Titre | Nombre de paramètres incorrects |
| Catégorie | Fiabilité |
| Le correctif est cassant ou non cassant | Sans rupture |
| Activé par défaut dans .NET 10 | Comme avertissement |
Cause
Le nombre de paramètres fournis dans le modèle de message de journalisation ne correspond pas au nombre d’espaces réservés nommés.
Description de la règle
Cette règle signale les appels d’enregistreur d’événements qui ont un nombre incorrect d’arguments de message.
Comment corriger les violations
Faites correspondre le nombre d’espaces réservés dans le format de modèles avec le nombre d’arguments passés.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle.
Example
L’exemple suivant montre les méthodes qui violent CA2017 et les méthodes qui respectent la règle.
public class LoggingExample
{
private readonly ILogger<LoggingExample> _logger;
public LoggingExample(ILogger<LoggingExample> logger)
{
_logger = logger;
}
public void ExampleMethod()
{
string name = "Alice";
int age = 30;
// Violates CA2017: Too few arguments for placeholders.
_logger.LogInformation("User {Name} is {Age} years old and lives in {City}", name, age);
// Violates CA2017: Too many arguments for placeholders.
_logger.LogError("Error occurred: {Message}", "Something went wrong", "Extra argument");
// Correct usage: Matching number of placeholders and arguments.
_logger.LogInformation("User {Name} is {Age} years old", name, age);
}
}
Imports Microsoft.Extensions.Logging
Public Class LoggingExample
Private ReadOnly _logger As ILogger(Of LoggingExample)
Public Sub New(logger As ILogger(Of LoggingExample))
_logger = logger
End Sub
Public Sub ExampleMethod()
Dim name As String = "Alice"
Dim age As Integer = 30
' Violates CA2017: Too few arguments for placeholders.
_logger.LogInformation("User {Name} is {Age} years old and lives in {City}", name, age)
' Violates CA2017: Too many arguments for placeholders.
_logger.LogError("Error occurred: {Message}", "Something went wrong", "Extra argument")
' Correct usage: Matching number of placeholders and arguments.
_logger.LogInformation("User {Name} is {Age} years old", name, age)
End Sub
End Class