dotnet / sdk

Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI
https://dot.net/core
MIT License
2.68k stars 1.06k forks source link

dotnet-watch needs to be updated to newer analyzers #30786

Open crummel opened 1 year ago

crummel commented 1 year ago

It appears the DoNotCallToImmutableCollectionOnAnImmutableCollectionValueAnalyzer has updated its return type and this is causing an error in the 8.0.0 preview1 source-build: https://dev.azure.com/dnceng-public/public/_build/results?buildId=179384&view=logs&jobId=61a52f3a-cec1-5bff-8c02-d8ba2c8bed99&j=61a52f3a-cec1-5bff-8c02-d8ba2c8bed99&t=53e46d9d-cfbd-5072-889d-e51560a71252

In some cases we just disable analyzers entirely for source-build so if that's an option in this case we could also do that.

@tmat @nagilson

Error:

   CSC : error AD0001: Analyzer 'Microsoft.NetCore.Analyzers.ImmutableCollections.DoNotCallToImmutableCollectionOnAnImmutableCollectionValueAnalyzer' threw an exception of type 'System.InvalidCastException' with message 'Unable to cast object of type 'Microsoft.CodeAnalysis.CSharp.Symbols.PublicModel.ArrayTypeSymbol' to type 'Microsoft.CodeAnalysis.INamedTypeSymbol'.'. [/vmr/src/sdk/artifacts/source-build/self/src/src/BuiltInTools/dotnet-watch/dotnet-watch.csproj]
##[error]CSC(0,0): error AD0001: (NETCORE_ENGINEERING_TELEMETRY=Build) Analyzer 'Microsoft.NetCore.Analyzers.ImmutableCollections.DoNotCallToImmutableCollectionOnAnImmutableCollectionValueAnalyzer' threw an exception of type 'System.InvalidCastException' with message 'Unable to cast object of type 'Microsoft.CodeAnalysis.CSharp.Symbols.PublicModel.ArrayTypeSymbol' to type 'Microsoft.CodeAnalysis.INamedTypeSymbol'.'.
    CSC : error AD0001: Analyzer 'Microsoft.NetCore.Analyzers.ImmutableCollections.DoNotCallToImmutableCollectionOnAnImmutableCollectionValueAnalyzer' threw an exception of type 'System.InvalidCastException' with message 'Unable to cast object of type 'Microsoft.CodeAnalysis.CSharp.Symbols.PublicModel.ArrayTypeSymbol' to type 'Microsoft.CodeAnalysis.INamedTypeSymbol'.'. [/vmr/src/sdk/artifacts/source-build/self/src/src/BuiltInTools/dotnet-watch/dotnet-watch.csproj]
##[error]CSC(0,0): error AD0001: (NETCORE_ENGINEERING_TELEMETRY=Build) Analyzer 'Microsoft.NetCore.Analyzers.ImmutableCollections.DoNotCallToImmutableCollectionOnAnImmutableCollectionValueAnalyzer' threw an exception of type 'System.InvalidCastException' with message 'Unable to cast object of type 'Microsoft.CodeAnalysis.CSharp.Symbols.PublicModel.ArrayTypeSymbol' to type 'Microsoft.CodeAnalysis.INamedTypeSymbol'.'.
tmat commented 1 year ago

@sharwell @mavasani

crummel commented 1 year ago

We think this will block any update of the SDK in installer as well as the source-build PR I linked - let me know if there's any wa yI can help to move it along.

nagilson commented 1 year ago

I am not privy to the release schedule for 8.0, but I thought that most components were already in the middle of being flowed for the final builds.

IMO we should disable the analyzer now, but I don't know how much time there is left. Marc is OOF but I'd imagine he'd say the same thing if we are within the end of the timeframe. @crummel are Matt / other involved parties aware of this?

Maybe it's something the watch team would want to take to servicing. It may be too late for that.

sharwell commented 1 year ago

The .binlog will contain the full exception and stack trace. I couldn't find the one for this build though.

sharwell commented 1 year ago

This issue was fixed by https://github.com/dotnet/roslyn-analyzers/pull/6476

crummel commented 1 year ago

Opened a PR to disable the analyzers in dotnet-watch for source-build at https://github.com/dotnet/sdk/pull/31076. Once the roslyn-analyzers fix above is taken this won't be necessary but it also won't hurt anything to not run this analyzer in source-build.