Sdílet prostřednictvím


CA2017: Neshoda počtu parametrů

Vlastnost Hodnota
ID pravidla CA2017
Název Neshoda počtu parametrů
Kategorie Spolehlivost
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 10 Jako upozornění

Příčina

Počet parametrů zadaných v šabloně zprávy protokolování neodpovídá počtu pojmenovaných zástupných symbolů.

Popis pravidla

Toto pravidlo označuje volání protokolovacího modulu, která mají nesprávný počet argumentů zprávy.

Jak opravit porušení

Porovná počet zástupných symbolů ve formátu šablony s počtem předaných argumentů.

Kdy potlačit upozornění

Nepotlačujte upozornění na toto pravidlo.

Example

Následující příklad ukazuje metody, které porušují CA2017 a metody, které vyhovují pravidlu.

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

Viz také