Closed lksr-demant closed 6 months ago
dotnet --info
)dotnet build
?Hi, at least MA0117 and MA0118 works fine
Generated from code like
@code {
[SupplyParameterFromQuery] // MA0116: Missing [Parameter] attribute - DO NOT WORK
public string? Value2 { get; set; }
[EditorRequired] // MA0117: Missing [Parameter] attribute - WORKS
public string? Value { get; set; }
[JSInvokable] // MA0118: The method must be public - WORKS
internal static int[] ReturnArray()
{
return [1, 2, 3];
}
}
Which is strange because from what I see in your repo both MA0116 and MA0117 comes from one Analyzer class ParameterAttributeForRazorComponentAnalyzer. When I use same code in project with .net 7.0 then all works fine!
λ dotnet --info .NET SDK: Version: 8.0.200 Commit: 438cab6a9d Workload version: 8.0.200-manifests.e575128c
Runtime Environment: OS Name: Windows OS Version: 10.0.19045 OS Platform: Windows RID: win-x64 Base Path: C:\Program Files\dotnet\sdk\8.0.200\
.NET workloads installed: [android] Installation Source: VS 17.9.34622.214, VS 17.9.34310.174 Manifest Version: 34.0.52/8.0.100 Manifest Path: C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.android\34.0.52\WorkloadManifest.json Install Type: Msi
[maui-windows] Installation Source: VS 17.9.34622.214, VS 17.9.34310.174 Manifest Version: 8.0.6/8.0.100 Manifest Path: C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.maui\8.0.6\WorkloadManifest.json Install Type: Msi
[maccatalyst] Installation Source: VS 17.9.34622.214, VS 17.9.34310.174 Manifest Version: 17.2.8004/8.0.100 Manifest Path: C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.maccatalyst\17.2.8004\WorkloadManifest.json Install Type: Msi
[ios] Installation Source: VS 17.9.34622.214, VS 17.9.34310.174 Manifest Version: 17.2.8004/8.0.100 Manifest Path: C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.ios\17.2.8004\WorkloadManifest.json Install Type: Msi
Host: Version: 8.0.2 Architecture: x64 Commit: 1381d5ebd2
.NET SDKs installed: 7.0.116 [C:\Program Files\dotnet\sdk] 8.0.100 [C:\Program Files\dotnet\sdk] 8.0.200 [C:\Program Files\dotnet\sdk]
.NET runtimes installed: Microsoft.AspNetCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 6.0.25 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 6.0.27 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 7.0.14 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 7.0.16 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 8.0.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.NETCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 6.0.25 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 6.0.27 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 7.0.14 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 7.0.16 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 8.0.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.WindowsDesktop.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 6.0.25 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 6.0.27 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 7.0.14 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 7.0.16 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 8.0.2 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Other architectures found: x86 [C:\Program Files (x86)\dotnet] registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]
Can you try with the latest SDK (Version: 8.0.201)? I think it contains some fixes related to analyzers.
I'll try to reproduce the bug on my side later, maybe this weekend.
Note that some rules such as MA0116 and MA0122 are not reported on .NET 8 as the attributes are now useless. More info: https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-6/?WT.mc_id=DT-MVP-5003978#cascade-query-string-values-to-blazor-components
On my machine the analyzer seems to work correctly on .NET 8 with the latest SDK. Could you provide a repro if you still have the issue?
Unfortunately after installing new SDK situation do not changes.
Repro steps:
With this repository BlazorWithRoslynAnalyzersClean.zip
Go into solution folder. From cmd execute "dotnet build"
I get following errors. MA0115 and MA0116 are valid just for .net 7.0 project. Eventhough MA0116 is useless and not reporten on .net8.0 MA0115 still should work, right?
D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzers\BlazorWithRoslynAnalyzers.Client\Pages\Index.razor(13,20): error MA0117: Parameters with [EditorRequired] attributes should also be marked as [Parameter] (https://github.com/meziantou/Meziantou.Analyzer/blob/main/docs/Rules/MA0117.md) [D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzers\BlazorWithRoslynAnalyzers.Client\BlazorWithRoslynAnalyzers.Client.csproj]
D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzers\BlazorWithRoslynAnalyzers.Client\Program.cs(5,1): error MA0004: Use Task.ConfigureAwait(false) if the current SynchronizationContext is not needed (https://github.com/meziantou/Meziantou.Analyzer/blob/main/docs/Rules/MA0004.md) [D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzers\BlazorWithRoslynAnalyzers.Client\BlazorWithRoslynAnalyzers.Client.csproj]
D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzers\BlazorWithRoslynAnalyzers.Client\Pages\Index.razor(16,27): error MA0118: [JSInvokable] methods must be public (https://github.com/meziantou/Meziantou.Analyzer/blob/main/docs/Rules/MA0118.md) [D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzers\BlazorWithRoslynAnalyzers.Client\BlazorWithRoslynAnalyzers.Client.csproj]
D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorApp7\Pages\Index.razor(10,20): error MA0116: Parameters with [SupplyParameterFromQuery] attributes should also be marked as [Parameter] (https://github.com/meziantou/Meziantou.Analyzer/blob/main/docs/Rules/MA0116.md) [D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorApp7\BlazorApp7.csproj]
D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorApp7\Pages\Index.razor(13,20): error MA0117: Parameters with [EditorRequired] attributes should also be marked as [Parameter] (https://github.com/meziantou/Meziantou.Analyzer/blob/main/docs/Rules/MA0117.md) [D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorApp7\BlazorApp7.csproj]
D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorApp7\Microsoft.CodeAnalysis.Razor.Compiler.SourceGenerators\Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator\Pages_Index_razor.g.cs(104,13): error MA0115: The parameter 'Undef' does not exist on component 'BlazorApp7.Components.CustomLabel' (https://github.com/meziantou/Meziantou.Analyzer/blob/main/docs/Rules/MA0115.md) [D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorApp7\BlazorApp7.csproj]
D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorApp7\Pages\Index.razor(16,27): error MA0118: [JSInvokable] methods must be public (https://github.com/meziantou/Meziantou.Analyzer/blob/main/docs/Rules/MA0118.md) [D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorApp7\BlazorApp7.csproj]
D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorApp7\Program.cs(11,1): error MA0004: Use Task.ConfigureAwait(false) if the current SynchronizationContext is not needed (https://github.com/meziantou/Meziantou.Analyzer/blob/main/docs/Rules/MA0004.md) [D:\src-tests\Blazor\BlazorWithRoslynAnalyzersClean\BlazorWithRoslynAnalyzersClean\BlazorApp7\BlazorApp7.csproj]
0 Warning(s)
8 Error(s)
λ dotnet --list-sdks 7.0.116 [C:\Program Files\dotnet\sdk] 8.0.200 [C:\Program Files\dotnet\sdk] 8.0.201 [C:\Program Files\dotnet\sdk]
λ dotnet --version 8.0.201
MA0115 should be reported. In ASP.NET 8, Blazor introduced a new method AddComponentParameter
which is not yet detected. A fix should appears soon :)
I have updated to newest version and MA0115 works fine.
Thank you very much for your feedback and fast fix!!!
Version of the Meziantou.Analyzer NuGet package
2.0.145
Rule Identifier
MA0115
Target Framework
net8.0
C# Language version
C#12
Description
Hi, I'm trying to setup Meziantou.Analyzer for Blazor project on .net 8.0. It seems that some of the rules (MA0115, MA0116, MA0122, MA0119, MA0120) do not work. When I check them against project on .net 7.0 at least MA0115 works fine.
PS: I downloaded your code on my machine and assure that it compiles and all UnitTests (also for MA0115) passes.
Reproduction Steps
Minimal code:
Other information
No response