diff --git a/docs/fundamentals/code-analysis/quality-rules/ca2017.md b/docs/fundamentals/code-analysis/quality-rules/ca2017.md index 9b765669de2f1..9ee3d60a013cb 100644 --- a/docs/fundamentals/code-analysis/quality-rules/ca2017.md +++ b/docs/fundamentals/code-analysis/quality-rules/ca2017.md @@ -1,7 +1,8 @@ --- title: "CA2017: Parameter count mismatch (code analysis)" description: "Learn about code analysis rule CA2017: Parameter count mismatch" -ms.date: 01/19/2022 +ms.date: 09/24/2025 +ai-usage: ai-assisted f1_keywords: - "LoggerMessageDefineAnalyzer" - "CA2017" @@ -9,6 +10,9 @@ helpviewer_keywords: - "LoggerMessageDefineAnalyzer" - "CA2017" author: Youssef1313 +dev_langs: + - CSharp + - VB --- # CA2017: Parameter count mismatch @@ -36,6 +40,14 @@ Match the number of placeholders in the template format with the number of passe Do not suppress a warning from this rule. +## Example + +The following example shows methods that violate CA2017 and methods that satisfy the rule. + +:::code language="csharp" source="snippets/csharp/all-rules/ca2017.cs" id="snippet1"::: + +:::code language="vb" source="snippets/vb/all-rules/ca2017-parameter-count-mismatch_1.vb"::: + ## See also - [Reliability rules](reliability-warnings.md) diff --git a/docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/all-rules.csproj b/docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/all-rules.csproj index 48700336aa492..b286c3c5c450a 100644 --- a/docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/all-rules.csproj +++ b/docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/all-rules.csproj @@ -9,6 +9,8 @@ + + diff --git a/docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/ca2017.cs b/docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/ca2017.cs new file mode 100644 index 0000000000000..da627345b1652 --- /dev/null +++ b/docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/ca2017.cs @@ -0,0 +1,31 @@ +using Microsoft.Extensions.Logging; + +namespace ca2017 +{ + // + public class LoggingExample + { + private readonly ILogger _logger; + + public LoggingExample(ILogger 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); + } + } + // +} diff --git a/docs/fundamentals/code-analysis/quality-rules/snippets/vb/all-rules/all-rules.vbproj b/docs/fundamentals/code-analysis/quality-rules/snippets/vb/all-rules/all-rules.vbproj index a5dec9dd3b254..a651c1e18355e 100644 --- a/docs/fundamentals/code-analysis/quality-rules/snippets/vb/all-rules/all-rules.vbproj +++ b/docs/fundamentals/code-analysis/quality-rules/snippets/vb/all-rules/all-rules.vbproj @@ -8,6 +8,8 @@ + + diff --git a/docs/fundamentals/code-analysis/quality-rules/snippets/vb/all-rules/ca2017-parameter-count-mismatch_1.vb b/docs/fundamentals/code-analysis/quality-rules/snippets/vb/all-rules/ca2017-parameter-count-mismatch_1.vb new file mode 100644 index 0000000000000..f61ff6295d485 --- /dev/null +++ b/docs/fundamentals/code-analysis/quality-rules/snippets/vb/all-rules/ca2017-parameter-count-mismatch_1.vb @@ -0,0 +1,25 @@ +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