Skip to content

Commit 7c8a4db

Browse files
authored
Convert analyzer strings to localizable strings (#47295)
1 parent 106208b commit 7c8a4db

File tree

2 files changed

+128
-32
lines changed

2 files changed

+128
-32
lines changed

src/Framework/AspNetCoreAnalyzers/src/Analyzers/DiagnosticDescriptors.cs

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,107 +10,107 @@ internal static class DiagnosticDescriptors
1010
{
1111
internal static readonly DiagnosticDescriptor DoNotUseModelBindingAttributesOnRouteHandlerParameters = new(
1212
"ASP0003",
13-
"Do not use model binding attributes with route handlers",
14-
"{0} should not be specified for a {1} Delegate parameter",
13+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseModelBindingAttributesOnRouteHandlerParameters_Title), Resources.ResourceManager, typeof(Resources)),
14+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseModelBindingAttributesOnRouteHandlerParameters_Message), Resources.ResourceManager, typeof(Resources)),
1515
"Usage",
1616
DiagnosticSeverity.Warning,
1717
isEnabledByDefault: true,
1818
helpLinkUri: "https://aka.ms/aspnet/analyzers");
1919

2020
internal static readonly DiagnosticDescriptor DoNotReturnActionResultsFromRouteHandlers = new(
2121
"ASP0004",
22-
"Do not use action results with route handlers",
23-
"IActionResult instances should not be returned from a {0} Delegate parameter. Consider returning an equivalent result from Microsoft.AspNetCore.Http.Results.",
22+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotReturnActionResultsFromRouteHandlers_Title), Resources.ResourceManager, typeof(Resources)),
23+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotReturnActionResultsFromRouteHandlers_Message), Resources.ResourceManager, typeof(Resources)),
2424
"Usage",
2525
DiagnosticSeverity.Warning,
2626
isEnabledByDefault: true,
2727
helpLinkUri: "https://aka.ms/aspnet/analyzers");
2828

2929
internal static readonly DiagnosticDescriptor DetectMisplacedLambdaAttribute = new(
3030
"ASP0005",
31-
"Do not place attribute on method called by route handler lambda",
32-
"'{0}' should be placed directly on the route handler lambda to be effective",
31+
new LocalizableResourceString(nameof(Resources.Analyzer_DetectMisplacedLambdaAttribute_Title), Resources.ResourceManager, typeof(Resources)),
32+
new LocalizableResourceString(nameof(Resources.Analyzer_DetectMisplacedLambdaAttribute_Message), Resources.ResourceManager, typeof(Resources)),
3333
"Usage",
3434
DiagnosticSeverity.Warning,
3535
isEnabledByDefault: true,
3636
helpLinkUri: "https://aka.ms/aspnet/analyzers");
3737

3838
internal static readonly DiagnosticDescriptor DoNotUseNonLiteralSequenceNumbers = new(
3939
"ASP0006",
40-
"Do not use non-literal sequence numbers",
41-
"'{0}' should not be used as a sequence number. Instead, use an integer literal representing source code order.",
40+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseNonLiteralSequenceNumbers_Title), Resources.ResourceManager, typeof(Resources)),
41+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseNonLiteralSequenceNumbers_Message), Resources.ResourceManager, typeof(Resources)),
4242
"Usage",
4343
DiagnosticSeverity.Warning,
4444
isEnabledByDefault: true,
4545
helpLinkUri: "https://aka.ms/aspnet/analyzers");
4646

4747
internal static readonly DiagnosticDescriptor DetectMismatchedParameterOptionality = new(
4848
"ASP0007",
49-
"Route parameter and argument optionality is mismatched",
50-
"'{0}' argument should be annotated as optional or nullable to match route parameter",
49+
new LocalizableResourceString(nameof(Resources.Analyzer_DetectMismatchedParameterOptionality_Title), Resources.ResourceManager, typeof(Resources)),
50+
new LocalizableResourceString(nameof(Resources.Analyzer_DetectMismatchedParameterOptionality_Message), Resources.ResourceManager, typeof(Resources)),
5151
"Usage",
5252
DiagnosticSeverity.Warning,
5353
isEnabledByDefault: true,
5454
helpLinkUri: "https://aka.ms/aspnet/analyzers");
5555

5656
internal static readonly DiagnosticDescriptor DoNotUseConfigureWebHostWithConfigureHostBuilder = new(
5757
"ASP0008",
58-
"Do not use ConfigureWebHost with WebApplicationBuilder.Host",
59-
"ConfigureWebHost cannot be used with WebApplicationBuilder.Host",
58+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseConfigureWebHostWithConfigureHostBuilder_Title), Resources.ResourceManager, typeof(Resources)),
59+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseConfigureWebHostWithConfigureHostBuilder_Message), Resources.ResourceManager, typeof(Resources)),
6060
"Usage",
6161
DiagnosticSeverity.Error,
6262
isEnabledByDefault: true,
6363
helpLinkUri: "https://aka.ms/aspnet/analyzers");
6464

6565
internal static readonly DiagnosticDescriptor DoNotUseConfigureWithConfigureWebHostBuilder = new(
6666
"ASP0009",
67-
"Do not use Configure with WebApplicationBuilder.WebHost",
68-
"Configure cannot be used with WebApplicationBuilder.WebHost",
67+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseConfigureWithConfigureWebHostBuilder_Title), Resources.ResourceManager, typeof(Resources)),
68+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseConfigureWithConfigureWebHostBuilder_Message), Resources.ResourceManager, typeof(Resources)),
6969
"Usage",
7070
DiagnosticSeverity.Error,
7171
isEnabledByDefault: true,
7272
helpLinkUri: "https://aka.ms/aspnet/analyzers");
7373

7474
internal static readonly DiagnosticDescriptor DoNotUseUseStartupWithConfigureWebHostBuilder = new(
7575
"ASP0010",
76-
"Do not use UseStartup with WebApplicationBuilder.WebHost",
77-
"UseStartup cannot be used with WebApplicationBuilder.WebHost",
76+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseUseStartupWithConfigureWebHostBuilder_Title), Resources.ResourceManager, typeof(Resources)),
77+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseUseStartupWithConfigureWebHostBuilder_Message), Resources.ResourceManager, typeof(Resources)),
7878
"Usage",
7979
DiagnosticSeverity.Error,
8080
isEnabledByDefault: true,
8181
helpLinkUri: "https://aka.ms/aspnet/analyzers");
8282

8383
internal static readonly DiagnosticDescriptor DoNotUseHostConfigureLogging = new(
8484
"ASP0011",
85-
"Suggest using builder.Logging over Host.ConfigureLogging or WebHost.ConfigureLogging",
86-
"Suggest using builder.Logging instead of {0}",
85+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseHostConfigureLogging_Title), Resources.ResourceManager, typeof(Resources)),
86+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseHostConfigureLogging_Message), Resources.ResourceManager, typeof(Resources)),
8787
"Usage",
8888
DiagnosticSeverity.Warning,
8989
isEnabledByDefault: true,
9090
helpLinkUri: "https://aka.ms/aspnet/analyzers");
9191

9292
internal static readonly DiagnosticDescriptor DoNotUseHostConfigureServices = new(
9393
"ASP0012",
94-
"Suggest using builder.Services over Host.ConfigureServices or WebHost.ConfigureServices",
95-
"Suggest using builder.Services instead of {0}",
94+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseHostConfigureServices_Title), Resources.ResourceManager, typeof(Resources)),
95+
new LocalizableResourceString(nameof(Resources.Analyzer_DoNotUseHostConfigureServices_Message), Resources.ResourceManager, typeof(Resources)),
9696
"Usage",
9797
DiagnosticSeverity.Warning,
9898
isEnabledByDefault: true,
9999
helpLinkUri: "https://aka.ms/aspnet/analyzers");
100100

101101
internal static readonly DiagnosticDescriptor DisallowConfigureAppConfigureHostBuilder = new(
102102
"ASP0013",
103-
"Suggest switching from using Configure methods to WebApplicationBuilder.Configuration",
104-
"Suggest using WebApplicationBuilder.Configuration instead of {0}",
103+
new LocalizableResourceString(nameof(Resources.Analyzer_DisallowConfigureAppConfigureHostBuilder_Title), Resources.ResourceManager, typeof(Resources)),
104+
new LocalizableResourceString(nameof(Resources.Analyzer_DisallowConfigureAppConfigureHostBuilder_Message), Resources.ResourceManager, typeof(Resources)),
105105
"Usage",
106106
DiagnosticSeverity.Warning,
107107
isEnabledByDefault: true,
108108
helpLinkUri: "https://aka.ms/aspnet/analyzers");
109109

110110
internal static readonly DiagnosticDescriptor UseTopLevelRouteRegistrationsInsteadOfUseEndpoints = new(
111111
"ASP0014",
112-
"Suggest using top level route registrations",
113-
"Suggest using top level route registrations instead of {0}",
112+
new LocalizableResourceString(nameof(Resources.Analyzer_UseTopLevelRouteRegistrationsInsteadOfUseEndpoints_Title), Resources.ResourceManager, typeof(Resources)),
113+
new LocalizableResourceString(nameof(Resources.Analyzer_UseTopLevelRouteRegistrationsInsteadOfUseEndpoints_Message), Resources.ResourceManager, typeof(Resources)),
114114
"Usage",
115115
DiagnosticSeverity.Warning,
116116
isEnabledByDefault: true,
@@ -163,35 +163,35 @@ internal static class DiagnosticDescriptors
163163

164164
internal static readonly DiagnosticDescriptor RouteParameterComplexTypeIsNotParsable = new(
165165
"ASP0020",
166-
"Complex types referenced by route parameters must be parsable",
167-
"Parameter '{0}' of type {1} should define a bool TryParse(string, IFormatProvider, out {1}) method, or implement IParsable<{1}>.",
166+
new LocalizableResourceString(nameof(Resources.Analyzer_RouteParameterComplexTypeIsNotParsable_Title), Resources.ResourceManager, typeof(Resources)),
167+
new LocalizableResourceString(nameof(Resources.Analyzer_RouteParameterComplexTypeIsNotParsable_Message), Resources.ResourceManager, typeof(Resources)),
168168
"Usage",
169169
DiagnosticSeverity.Error,
170170
isEnabledByDefault: true,
171171
helpLinkUri: "https://aka.ms/aspnet/analyzers");
172172

173173
internal static readonly DiagnosticDescriptor BindAsyncSignatureMustReturnValueTaskOfT = new(
174174
"ASP0021",
175-
"When implementing BindAsync(...) method, the return type must be ValueTask<T>.",
176-
"Parameter '{0}' of type {1} has a BindAsync(...) method, but the return type is not ValueTask<{1}>. Consider implementing IBindFromHttpContext<{1}> to enforce implementation.",
175+
new LocalizableResourceString(nameof(Resources.Analyzer_BindAsyncSignatureMustReturnValueTaskOfT_Title), Resources.ResourceManager, typeof(Resources)),
176+
new LocalizableResourceString(nameof(Resources.Analyzer_BindAsyncSignatureMustReturnValueTaskOfT_Message), Resources.ResourceManager, typeof(Resources)),
177177
"Usage",
178178
DiagnosticSeverity.Error,
179179
isEnabledByDefault: true,
180180
helpLinkUri: "https://aka.ms/aspnet/analyzers");
181181

182182
internal static readonly DiagnosticDescriptor AmbiguousRouteHandlerRoute = new(
183183
"ASP0022",
184-
"Route conflict detected between route handlers",
185-
"Route '{0}' conflicts with another handler route. An HTTP request that matches multiple routes results in an ambiguous match error. Fix the conflict by changing the route's pattern, HTTP method, or route constraints.",
184+
new LocalizableResourceString(nameof(Resources.Analyzer_AmbiguousRouteHandlerRoute_Title), Resources.ResourceManager, typeof(Resources)),
185+
new LocalizableResourceString(nameof(Resources.Analyzer_AmbiguousRouteHandlerRoute_Message), Resources.ResourceManager, typeof(Resources)),
186186
"Usage",
187187
DiagnosticSeverity.Warning,
188188
isEnabledByDefault: true,
189189
helpLinkUri: "https://aka.ms/aspnet/analyzers");
190190

191191
internal static readonly DiagnosticDescriptor AmbiguousActionRoute = new(
192192
"ASP0023",
193-
"Route conflict detected between controller actions",
194-
"Route '{0}' conflicts with another action route. An HTTP request that matches multiple routes results in an ambiguous match error. Fix the conflict by changing the route's pattern, HTTP method, or route constraints.",
193+
new LocalizableResourceString(nameof(Resources.Analyzer_AmbiguousActionRoute_Title), Resources.ResourceManager, typeof(Resources)),
194+
new LocalizableResourceString(nameof(Resources.Analyzer_AmbiguousActionRoute_Message), Resources.ResourceManager, typeof(Resources)),
195195
"Usage",
196196
DiagnosticSeverity.Warning,
197197
isEnabledByDefault: true,

src/Framework/AspNetCoreAnalyzers/src/Analyzers/Resources.resx

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,4 +213,100 @@
213213
<data name="Analyzer_MultipleFromBody_Title" xml:space="preserve">
214214
<value>Route handler has multiple parameters with the [FromBody] attribute.</value>
215215
</data>
216+
<data name="Analyzer_DoNotUseModelBindingAttributesOnRouteHandlerParameters_Title" xml:space="preserve">
217+
<value>Do not use model binding attributes with route handlers</value>
218+
</data>
219+
<data name="Analyzer_DoNotUseModelBindingAttributesOnRouteHandlerParameters_Message" xml:space="preserve">
220+
<value>{0} should not be specified for a {1} Delegate parameter</value>
221+
</data>
222+
<data name="Analyzer_DoNotReturnActionResultsFromRouteHandlers_Title" xml:space="preserve">
223+
<value>Do not use action results with route handlers</value>
224+
</data>
225+
<data name="Analyzer_DoNotReturnActionResultsFromRouteHandlers_Message" xml:space="preserve">
226+
<value>IActionResult instances should not be returned from a {0} Delegate parameter. Consider returning an equivalent result from Microsoft.AspNetCore.Http.Results.</value>
227+
</data>
228+
<data name="Analyzer_DetectMisplacedLambdaAttribute_Title" xml:space="preserve">
229+
<value>Do not place attribute on method called by route handler lambda</value>
230+
</data>
231+
<data name="Analyzer_DetectMisplacedLambdaAttribute_Message" xml:space="preserve">
232+
<value>'{0}' should be placed directly on the route handler lambda to be effective</value>
233+
</data>
234+
<data name="Analyzer_DoNotUseNonLiteralSequenceNumbers_Title" xml:space="preserve">
235+
<value>Do not use non-literal sequence numbers</value>
236+
</data>
237+
<data name="Analyzer_DoNotUseNonLiteralSequenceNumbers_Message" xml:space="preserve">
238+
<value>'{0}' should not be used as a sequence number. Instead, use an integer literal representing source code order.</value>
239+
</data>
240+
<data name="Analyzer_DetectMismatchedParameterOptionality_Title" xml:space="preserve">
241+
<value>Route parameter and argument optionality is mismatched</value>
242+
</data>
243+
<data name="Analyzer_DetectMismatchedParameterOptionality_Message" xml:space="preserve">
244+
<value>'{0}' argument should be annotated as optional or nullable to match route parameter</value>
245+
</data>
246+
<data name="Analyzer_DoNotUseConfigureWebHostWithConfigureHostBuilder_Title" xml:space="preserve">
247+
<value>Do not use ConfigureWebHost with WebApplicationBuilder.Host</value>
248+
</data>
249+
<data name="Analyzer_DoNotUseConfigureWebHostWithConfigureHostBuilder_Message" xml:space="preserve">
250+
<value>ConfigureWebHost cannot be used with WebApplicationBuilder.Host</value>
251+
</data>
252+
<data name="Analyzer_DoNotUseConfigureWithConfigureWebHostBuilder_Title" xml:space="preserve">
253+
<value>Do not use Configure with WebApplicationBuilder.WebHost</value>
254+
</data>
255+
<data name="Analyzer_DoNotUseConfigureWithConfigureWebHostBuilder_Message" xml:space="preserve">
256+
<value>Configure cannot be used with WebApplicationBuilder.WebHost</value>
257+
</data>
258+
<data name="Analyzer_DoNotUseUseStartupWithConfigureWebHostBuilder_Title" xml:space="preserve">
259+
<value>Do not use UseStartup with WebApplicationBuilder.WebHost</value>
260+
</data>
261+
<data name="Analyzer_DoNotUseUseStartupWithConfigureWebHostBuilder_Message" xml:space="preserve">
262+
<value>UseStartup cannot be used with WebApplicationBuilder.WebHost</value>
263+
</data>
264+
<data name="Analyzer_DoNotUseHostConfigureLogging_Title" xml:space="preserve">
265+
<value>Suggest using builder.Logging over Host.ConfigureLogging or WebHost.ConfigureLogging</value>
266+
</data>
267+
<data name="Analyzer_DoNotUseHostConfigureLogging_Message" xml:space="preserve">
268+
<value>Suggest using builder.Logging instead of {0}</value>
269+
</data>
270+
<data name="Analyzer_DoNotUseHostConfigureServices_Title" xml:space="preserve">
271+
<value>Suggest using builder.Services over Host.ConfigureServices or WebHost.ConfigureServices</value>
272+
</data>
273+
<data name="Analyzer_DoNotUseHostConfigureServices_Message" xml:space="preserve">
274+
<value>Suggest using builder.Services instead of {0}</value>
275+
</data>
276+
<data name="Analyzer_DisallowConfigureAppConfigureHostBuilder_Title" xml:space="preserve">
277+
<value>Suggest switching from using Configure methods to WebApplicationBuilder.Configuration</value>
278+
</data>
279+
<data name="Analyzer_DisallowConfigureAppConfigureHostBuilder_Message" xml:space="preserve">
280+
<value>Suggest using WebApplicationBuilder.Configuration instead of {0}</value>
281+
</data>
282+
<data name="Analyzer_UseTopLevelRouteRegistrationsInsteadOfUseEndpoints_Title" xml:space="preserve">
283+
<value>Suggest using top level route registrations</value>
284+
</data>
285+
<data name="Analyzer_UseTopLevelRouteRegistrationsInsteadOfUseEndpoints_Message" xml:space="preserve">
286+
<value>Suggest using top level route registrations instead of {0}</value>
287+
</data>
288+
<data name="Analyzer_RouteParameterComplexTypeIsNotParsable_Title" xml:space="preserve">
289+
<value>Complex types referenced by route parameters must be parsable</value>
290+
</data>
291+
<data name="Analyzer_RouteParameterComplexTypeIsNotParsable_Message" xml:space="preserve">
292+
<value>Parameter '{0}' of type {1} should define a bool TryParse(string, IFormatProvider, out {1}) method, or implement IParsable&lt;{1}&gt;.</value>
293+
</data>
294+
<data name="Analyzer_BindAsyncSignatureMustReturnValueTaskOfT_Title" xml:space="preserve">
295+
<value>When implementing BindAsync(...) method, the return type must be ValueTask&lt;T&gt;.</value>
296+
</data>
297+
<data name="Analyzer_BindAsyncSignatureMustReturnValueTaskOfT_Message" xml:space="preserve">
298+
<value>Parameter '{0}' of type {1} has a BindAsync(...) method, but the return type is not ValueTask&lt;{1}&gt;. Consider implementing IBindFromHttpContext&lt;{1}&gt; to enforce implementation.</value>
299+
</data>
300+
<data name="Analyzer_AmbiguousRouteHandlerRoute_Title" xml:space="preserve">
301+
<value>Route conflict detected between route handlers</value>
302+
</data>
303+
<data name="Analyzer_AmbiguousRouteHandlerRoute_Message" xml:space="preserve">
304+
<value>Route '{0}' conflicts with another handler route. An HTTP request that matches multiple routes results in an ambiguous match error. Fix the conflict by changing the route's pattern, HTTP method, or route constraints.</value>
305+
</data>
306+
<data name="Analyzer_AmbiguousActionRoute_Title" xml:space="preserve">
307+
<value>Route conflict detected between controller actions</value>
308+
</data>
309+
<data name="Analyzer_AmbiguousActionRoute_Message" xml:space="preserve">
310+
<value>Route '{0}' conflicts with another action route. An HTTP request that matches multiple routes results in an ambiguous match error. Fix the conflict by changing the route's pattern, HTTP method, or route constraints.</value>
311+
</data>
216312
</root>

0 commit comments

Comments
 (0)