diff --git a/docs/project/list-of-diagnostics.md b/docs/project/list-of-diagnostics.md index 7fc35ca7f3ffa9..01c18c18ee1e3b 100644 --- a/docs/project/list-of-diagnostics.md +++ b/docs/project/list-of-diagnostics.md @@ -135,7 +135,7 @@ The diagnostic id values reserved for .NET Libraries analyzer warnings are `SYSL | __`SYSLIB1021`__ | Can't have the same template with different casing | | __`SYSLIB1022`__ | Can't have malformed format strings (like dangling {, etc) | | __`SYSLIB1023`__ | Generating more than 6 arguments is not supported | -| __`SYSLIB1024`__ | *_`SYSLIB1024`-`SYSLIB1029` reserved for logging._* | +| __`SYSLIB1024`__ | Argument is using the unsupported out parameter modifier | | __`SYSLIB1025`__ | *_`SYSLIB1024`-`SYSLIB1029` reserved for logging._* | | __`SYSLIB1026`__ | *_`SYSLIB1024`-`SYSLIB1029` reserved for logging._* | | __`SYSLIB1027`__ | *_`SYSLIB1024`-`SYSLIB1029` reserved for logging._* | diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/DiagnosticDescriptors.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/DiagnosticDescriptors.cs index 2e3f31a508702f..f9ed87ff2bd4ed 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/DiagnosticDescriptors.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/DiagnosticDescriptors.cs @@ -183,5 +183,13 @@ public static class DiagnosticDescriptors category: "LoggingGenerator", DiagnosticSeverity.Error, isEnabledByDefault: true); + + public static DiagnosticDescriptor InvalidLoggingMethodParameterOut { get; } = new DiagnosticDescriptor( + id: "SYSLIB1024", + title: new LocalizableResourceString(nameof(SR.InvalidLoggingMethodParameterOutTitle), SR.ResourceManager, typeof(FxResources.Microsoft.Extensions.Logging.Generators.SR)), + messageFormat: new LocalizableResourceString(nameof(SR.InvalidLoggingMethodParameterOutMessage), SR.ResourceManager, typeof(FxResources.Microsoft.Extensions.Logging.Generators.SR)), + category: "LoggingGenerator", + DiagnosticSeverity.Error, + isEnabledByDefault: true); } } diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs index 7d0a208b729885..9c34e9e9209e4f 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Parser.cs @@ -312,6 +312,13 @@ public IReadOnlyList GetLogClasses(IEnumerable Generating more than 6 arguments is not supported + + Argument '{0}' is using the unsupported out parameter modifier + + + Argument is using the unsupported out parameter modifier + \ No newline at end of file diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.cs.xlf b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.cs.xlf index 807c06ba78e07a..67f16f36fd1621 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.cs.xlf +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.cs.xlf @@ -32,6 +32,16 @@ Názvy parametrů metody protokolování nemůžou začínat podtržítkem (_). + + Argument '{0}' is using the unsupported out parameter modifier + Argument '{0}' is using the unsupported out parameter modifier + + + + Argument is using the unsupported out parameter modifier + Argument is using the unsupported out parameter modifier + + Logging methods cannot have a body Metody protokolování nemůžou obsahovat tělo. diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.de.xlf b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.de.xlf index f3be1d912ec64a..a3c44913074226 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.de.xlf +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.de.xlf @@ -32,6 +32,16 @@ Parameternamen für die Protokollierungsmethode dürfen nicht mit "_" beginnen. + + Argument '{0}' is using the unsupported out parameter modifier + Argument '{0}' is using the unsupported out parameter modifier + + + + Argument is using the unsupported out parameter modifier + Argument is using the unsupported out parameter modifier + + Logging methods cannot have a body Protokollierungsmethoden dürfen keinen Text enthalten. diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.es.xlf b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.es.xlf index 897734cc7fc10f..2e2c1d8de46aa1 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.es.xlf +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.es.xlf @@ -32,6 +32,16 @@ Los nombres de parámetro del método de registro no pueden empezar por _ + + Argument '{0}' is using the unsupported out parameter modifier + Argument '{0}' is using the unsupported out parameter modifier + + + + Argument is using the unsupported out parameter modifier + Argument is using the unsupported out parameter modifier + + Logging methods cannot have a body Los métodos de registro no pueden tener cuerpo diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.fr.xlf b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.fr.xlf index 68a5c792f4cf13..3ad75b5578f940 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.fr.xlf +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.fr.xlf @@ -32,6 +32,16 @@ Les noms de paramètres de méthode de journalisation ne peuvent pas commencer par _ + + Argument '{0}' is using the unsupported out parameter modifier + Argument '{0}' is using the unsupported out parameter modifier + + + + Argument is using the unsupported out parameter modifier + Argument is using the unsupported out parameter modifier + + Logging methods cannot have a body Les méthodes de journalisation ne peuvent pas avoir de corps diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.it.xlf b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.it.xlf index 3f8562485927d7..48bbb69da7347c 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.it.xlf +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.it.xlf @@ -32,6 +32,16 @@ I nomi dei parametri del metodo di registrazione non possono iniziare con _ + + Argument '{0}' is using the unsupported out parameter modifier + Argument '{0}' is using the unsupported out parameter modifier + + + + Argument is using the unsupported out parameter modifier + Argument is using the unsupported out parameter modifier + + Logging methods cannot have a body I metodi di registrazione non possono avere un corpo diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.ja.xlf b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.ja.xlf index eab1acd521a293..636bab5a4b603e 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.ja.xlf +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.ja.xlf @@ -32,6 +32,16 @@ Logging method パラメーター名は「 _ 」で始まることはできません + + Argument '{0}' is using the unsupported out parameter modifier + Argument '{0}' is using the unsupported out parameter modifier + + + + Argument is using the unsupported out parameter modifier + Argument is using the unsupported out parameter modifier + + Logging methods cannot have a body ログ メソッドは本文を含めることができません diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.ko.xlf b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.ko.xlf index 990e1b75f73f62..b8d5f257095804 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.ko.xlf +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.ko.xlf @@ -32,6 +32,16 @@ 로깅 메서드 매개 변수 이름은 _로 시작할 수 없음 + + Argument '{0}' is using the unsupported out parameter modifier + Argument '{0}' is using the unsupported out parameter modifier + + + + Argument is using the unsupported out parameter modifier + Argument is using the unsupported out parameter modifier + + Logging methods cannot have a body 로깅 메서드에는 본문을 사용할 수 없음 diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.pl.xlf b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.pl.xlf index 667234656ff678..721b1a182a9329 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.pl.xlf +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.pl.xlf @@ -32,6 +32,16 @@ Nazwy parametrów metody rejestrowania nie mogą rozpoczynać się od znaku „_” + + Argument '{0}' is using the unsupported out parameter modifier + Argument '{0}' is using the unsupported out parameter modifier + + + + Argument is using the unsupported out parameter modifier + Argument is using the unsupported out parameter modifier + + Logging methods cannot have a body Metody rejestrowania nie mogą mieć treści diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.pt-BR.xlf b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.pt-BR.xlf index d20a04512c06f9..8aa086a7d078e0 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.pt-BR.xlf +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.pt-BR.xlf @@ -32,6 +32,16 @@ Os nomes dos parâmetros do método de registro em log não podem começar com _ + + Argument '{0}' is using the unsupported out parameter modifier + Argument '{0}' is using the unsupported out parameter modifier + + + + Argument is using the unsupported out parameter modifier + Argument is using the unsupported out parameter modifier + + Logging methods cannot have a body Os métodos de registro em log não podem ter um corpo diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.ru.xlf b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.ru.xlf index f0420f505260e1..5739bb98cfc6b4 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.ru.xlf +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.ru.xlf @@ -32,6 +32,16 @@ Имена параметров метода ведения журнала не могут начинаться с символа "_" + + Argument '{0}' is using the unsupported out parameter modifier + Argument '{0}' is using the unsupported out parameter modifier + + + + Argument is using the unsupported out parameter modifier + Argument is using the unsupported out parameter modifier + + Logging methods cannot have a body У методов ведения журнала не может быть текста diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.tr.xlf b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.tr.xlf index 11c1a0157d040a..7a02e1b9964492 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.tr.xlf +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.tr.xlf @@ -32,6 +32,16 @@ Günlüğe kaydetme yöntemi parametre adları _ ile başlayamaz + + Argument '{0}' is using the unsupported out parameter modifier + Argument '{0}' is using the unsupported out parameter modifier + + + + Argument is using the unsupported out parameter modifier + Argument is using the unsupported out parameter modifier + + Logging methods cannot have a body Günlüğe kaydetme yöntemleri gövde içeremez diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.zh-Hans.xlf b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.zh-Hans.xlf index b814d8a0a024e7..7ffa759042e377 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.zh-Hans.xlf +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.zh-Hans.xlf @@ -32,6 +32,16 @@ 日志记录方法参数名称不能以 _ 开头 + + Argument '{0}' is using the unsupported out parameter modifier + Argument '{0}' is using the unsupported out parameter modifier + + + + Argument is using the unsupported out parameter modifier + Argument is using the unsupported out parameter modifier + + Logging methods cannot have a body 日志记录方法不能有正文 diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.zh-Hant.xlf b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.zh-Hant.xlf index 0f13b32acba9f1..fb85e657f6aca1 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.zh-Hant.xlf +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Resources/xlf/Strings.zh-Hant.xlf @@ -32,6 +32,16 @@ 記錄方法參數名稱的開頭不能為 _ + + Argument '{0}' is using the unsupported out parameter modifier + Argument '{0}' is using the unsupported out parameter modifier + + + + Argument is using the unsupported out parameter modifier + Argument is using the unsupported out parameter modifier + + Logging methods cannot have a body 記錄方法不能有主體 diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs index e3a88ad2dfb44d..84fad3acd1704c 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratorParserTests.cs @@ -663,6 +663,21 @@ partial class C Assert.Empty(diagnostics); } + [Fact] + public async Task InvalidRefKindsOut() + { + IReadOnlyList diagnostics = await RunGenerator(@$" + partial class C + {{ + [LoggerMessage(EventId = 0, Level = LogLevel.Debug, Message = ""Parameter {{P1}}"")] + static partial void M(ILogger logger, out int p1); + }}"); + + Assert.Single(diagnostics); + Assert.Equal(DiagnosticDescriptors.InvalidLoggingMethodParameterOut.Id, diagnostics[0].Id); + Assert.Contains("p1", diagnostics[0].GetMessage(), StringComparison.InvariantCulture); + } + [Fact] public async Task Templates() {