Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Majątek | Wartość |
|---|---|
| Identyfikator reguły | CA2023 |
| Tytuł | Nieprawidłowe nawiasy klamrowe w szablonie wiadomości |
| Kategoria | Niezawodność |
| Poprawka jest przełomowa lub nieprzełomowa | Non-breaking |
| Domyślnie włączone na platformie .NET 10 | Jako ostrzeżenie |
Przyczyna
Nawiasy klamrowe obecne w szablonie wiadomości są nieprawidłowe. Upewnij się, że wszystkie nawiasy klamrowe w szablonie wiadomości są prawidłowymi nawiasami klamrowymi otwierającymi/zamykającymi lub są zamykane.
Opis reguły
Rejestrowanie szablonów komunikatów używa nawiasów klamrowych { i } oznaczania nazwanych symboli zastępczych dla wartości. Nieprawidłowe użycie nawiasów klamrowych w szablonach komunikatów może spowodować wyjątki środowiska uruchomieniowego lub nieoczekiwane zachowanie rejestrowania. Ta reguła wykrywa:
- Niedopasowane nawiasy klamrowe otwierające lub zamykające.
- Zagnieżdżone nawiasy klamrowe, które nie są prawidłowo ucieczki.
- Inne źle sformułowane wzory nawiasów klamrowych.
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły:
- Upewnij się, że wszystkie otwierające nawiasy klamrowe
{mają odpowiadający nawias klamrowy}zamykający . - Nawiasy klamrowe literału ucieczki, podwojając je:
{{dla{i}}dla}. - Napraw wszelkie zagnieżdżone lub źle sformułowane wzorce nawiasów klamrowych.
Example
Poniższy fragment kodu przedstawia naruszenia ca2023:
using Microsoft.Extensions.Logging;
class Example
{
private readonly ILogger _logger;
public Example(ILogger<Example> logger)
{
_logger = logger;
}
public void LogData(string name, int value)
{
// Violation: unmatched opening brace.
_logger.LogInformation("Processing {Name with value {Value}", name, value);
// Violation: unmatched closing brace.
_logger.LogInformation("Processing Name} with value {Value}", name, value);
}
}
Imports Microsoft.Extensions.Logging
Class Example
Private ReadOnly _logger As ILogger
Public Sub New(logger As ILogger(Of Example))
_logger = logger
End Sub
Public Sub LogData(name As String, value As Integer)
' Violation: unmatched opening brace.
_logger.LogInformation("Processing {Name with value {Value}", name, value)
' Violation: unmatched closing brace.
_logger.LogInformation("Processing Name} with value {Value}", name, value)
End Sub
End Class
Poniższy fragment kodu naprawia naruszenia:
using Microsoft.Extensions.Logging;
class Example
{
private readonly ILogger _logger;
public Example(ILogger<Example> logger)
{
_logger = logger;
}
public void LogData(string name, int value)
{
// Fixed: proper braces.
_logger.LogInformation("Processing {Name} with value {Value}", name, value);
// Fixed: escaped literal braces.
_logger.LogInformation("Processing {{Name}} with value {Value}", name, value);
}
}
Imports Microsoft.Extensions.Logging
Class Example
Private ReadOnly _logger As ILogger
Public Sub New(logger As ILogger(Of Example))
_logger = logger
End Sub
Public Sub LogData(name As String, value As Integer)
' Fixed: proper braces.
_logger.LogInformation("Processing {Name} with value {Value}", name, value)
' Fixed: escaped literal braces.
_logger.LogInformation("Processing {{Name}} with value {Value}", name, value)
End Sub
End Class
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżenia z tej reguły. Nieprawidłowe nawiasy klamrowe w szablonach komunikatów mogą powodować wyjątki środowiska uruchomieniowego lub nieprawidłowe dane wyjściowe dziennika.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA2023
// The code that's violating the rule is on this line.
#pragma warning restore CA2023
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA2023.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.