-
-
Notifications
You must be signed in to change notification settings - Fork 26
Utilize RunAnalyzer and Fsc args in msbuild analyze if available #241
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
e8ca072 to
530335b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR enhances the MSBuild integration for F# analyzers by utilizing F# compiler command line arguments (FSC args) when available, improving performance by avoiding design-time builds. It adds the ability to run analyzers automatically after build when enabled through MSBuild properties.
- Adds automatic analyzer execution after build when
RunAnalyzersDuringBuildorRunAnalyzersis set to true - Utilizes
FscCommandLineArgsfromCoreCompiletarget to speed up analyzer execution - Introduces configurable properties for analyzer execution control and error handling
Reviewed Changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| FSharp.Analyzers.Build.targets | Core implementation adding new targets and properties for automatic analyzer execution |
| MsBuildExample.fsproj | Sample project demonstrating the new MSBuild integration features |
| Program.fs | Sample F# code for testing the analyzer integration |
| MSBuild.md | Documentation explaining the new after-build analyzer functionality |
Comments suppressed due to low confidence (2)
src/FSharp.Analyzers.Build/build/FSharp.Analyzers.Build.targets:64
- This line overwrites the
_FSharpAnalyzers_ProjectOptionsproperty that was set earlier to--project "$(MSBuildProjectFile)". The condition should use an 'else' pattern or append to the existing value rather than completely replacing it.
<_FSharpAnalyzers_ProjectOptions Condition="'@(FscCommandLineArgs->Count())' != '0'">--fsc-args "@(FscCommandLineArgs)"</_FSharpAnalyzers_ProjectOptions>
src/FSharp.Analyzers.Build/build/FSharp.Analyzers.Build.targets
Outdated
Show resolved
Hide resolved
|
Wow, this looks amazing! Will play with this when I can! |
I'm hearing you say that the output Property/Item isn't being set on purely-incremental builds. I'm not sure that is expected behavior - I'd expect that an incrementally-skipped Target would emit its outputs. |
Yeah it's not really incremental usingg the Inputs/Outputs semantics, only running conditionally when |
|
Ok updated my comment on incremental builds, since following Inputs/Outputs would probably be too much effort. |
nojaf
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This worked for me!
The output is a little less clear; a warning is definitely presented as one you would ignore. But that is probably just the MSBuild way of displaying it.
Treat it as error does come out of this very verbose
MsBuildExample net8.0 succeeded with 2 warning(s) (1.8s) → artifacts/bin/MsBuildExample/debug_net8.0/MsBuildExample.dll
/Users/nojaf/Projects/FSharp.Analyzers.SDK/samples/MsBuildExample/Program.fs(5,27): warning OV001: Option.Value shouldn't be used
/Users/nojaf/Projects/FSharp.Analyzers.SDK/src/FSharp.Analyzers.Build/build/FSharp.Analyzers.Build.targets(66,9): warning MSB3073: The command "dotnet ../../artifacts/bin/FSharp.Analyzers.Cli/debug/FSharp.Analyzers.Cli.dll --fsc-args "-o:/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/MsBuildExample.dll;-g;--debug:embedded;--embed:/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/MsBuildExample.AssemblyInfo.fs;--embed:/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.fs;--embed:/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/MsBuildExample.AssemblyInfo.fs;--sourcelink:/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/MsBuildExample.sourcelink.json;--noframework;--define:TRACE;--define:DEBUG;--define:NET;--define:NET8_0;--define:NETCOREAPP;--define:NET5_0_OR_GREATER;--define:NET6_0_OR_GREATER;--define:NET7_0_OR_GREATER;--define:NET8_0_OR_GREATER;--define:NETCOREAPP1_0_OR_GREATER;--define:NETCOREAPP1_1_OR_GREATER;--define:NETCOREAPP2_0_OR_GREATER;--define:NETCOREAPP2_1_OR_GREATER;--define:NETCOREAPP2_2_OR_GREATER;--define:NETCOREAPP3_0_OR_GREATER;--define:NETCOREAPP3_1_OR_GREATER;--optimize-;--tailcalls-;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/Microsoft.CSharp.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/Microsoft.VisualBasic.Core.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/Microsoft.VisualBasic.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/Microsoft.Win32.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/Microsoft.Win32.Registry.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/mscorlib.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/netstandard.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.AppContext.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Buffers.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Collections.Concurrent.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Collections.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Collections.Immutable.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Collections.NonGeneric.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Collections.Specialized.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ComponentModel.Annotations.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ComponentModel.DataAnnotations.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ComponentModel.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ComponentModel.EventBasedAsync.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ComponentModel.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ComponentModel.TypeConverter.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Configuration.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Console.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Core.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Data.Common.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Data.DataSetExtensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Data.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.Contracts.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.Debug.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.DiagnosticSource.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.FileVersionInfo.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.Process.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.StackTrace.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.TextWriterTraceListener.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.Tools.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.TraceSource.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Diagnostics.Tracing.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Drawing.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Drawing.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Dynamic.Runtime.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Formats.Asn1.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Formats.Tar.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Globalization.Calendars.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Globalization.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Globalization.Extensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.Compression.Brotli.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.Compression.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.Compression.FileSystem.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.Compression.ZipFile.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.FileSystem.AccessControl.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.FileSystem.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.FileSystem.DriveInfo.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.FileSystem.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.FileSystem.Watcher.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.IsolatedStorage.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.MemoryMappedFiles.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.Pipes.AccessControl.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.Pipes.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.IO.UnmanagedMemoryStream.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Linq.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Linq.Expressions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Linq.Parallel.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Linq.Queryable.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Memory.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Http.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Http.Json.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.HttpListener.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Mail.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.NameResolution.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.NetworkInformation.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Ping.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Quic.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Requests.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Security.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.ServicePoint.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.Sockets.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.WebClient.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.WebHeaderCollection.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.WebProxy.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.WebSockets.Client.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Net.WebSockets.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Numerics.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Numerics.Vectors.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ObjectModel.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.DispatchProxy.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.Emit.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.Emit.ILGeneration.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.Emit.Lightweight.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.Extensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.Metadata.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Reflection.TypeExtensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Resources.Reader.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Resources.ResourceManager.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Resources.Writer.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.CompilerServices.Unsafe.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.CompilerServices.VisualC.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Extensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Handles.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.InteropServices.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.InteropServices.JavaScript.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.InteropServices.RuntimeInformation.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Intrinsics.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Loader.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Numerics.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Serialization.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Serialization.Formatters.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Serialization.Json.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Serialization.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Runtime.Serialization.Xml.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.AccessControl.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Claims.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.Algorithms.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.Cng.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.Csp.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.Encoding.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.OpenSsl.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.Primitives.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Cryptography.X509Certificates.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Principal.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.Principal.Windows.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Security.SecureString.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ServiceModel.Web.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ServiceProcess.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Text.Encoding.CodePages.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Text.Encoding.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Text.Encoding.Extensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Text.Encodings.Web.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Text.Json.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Text.RegularExpressions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Channels.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Overlapped.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Tasks.Dataflow.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Tasks.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Tasks.Extensions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Tasks.Parallel.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Thread.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.ThreadPool.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Threading.Timer.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Transactions.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Transactions.Local.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.ValueTuple.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Web.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Web.HttpUtility.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Windows.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.Linq.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.ReaderWriter.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.Serialization.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.XDocument.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.XmlDocument.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.XmlSerializer.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.XPath.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/System.Xml.XPath.XDocument.dll;-r:/Users/nojaf/.nuget/packages/microsoft.netcore.app.ref/8.0.12/ref/net8.0/WindowsBase.dll;--target:exe;--warn:3;--warnon:1182,3390;--warnaserror;--warnaserror:3239;--fullpaths;--flaterrors;--highentropyva+;--targetprofile:netcore;--nocopyfsharpcore;--deterministic+;--simpleresolution;--test:GraphBasedChecking;--test:ParallelOptimization;--test:ParallelIlxGen;/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/MsBuildExample.AssemblyInfo.fs;/Users/nojaf/Projects/FSharp.Analyzers.SDK/artifacts/obj/MsBuildExample/debug_net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.fs;Program.fs" --analyzers-path "../../artifacts/bin/OptionAnalyzer/debug" -v d --treat-as-error OV001" exited with code 254.
…on analyzer settings
This kind of revitalizes #164, but this takes a slightly different approach.
CoreCompile/AfterBuildtarget actually runs.RunAnalyzerorRunAnalyzersDuringBuild(see Roslyn variables) to determine if it should run or not.FsharpAnalyzerAfterBuildtarget ifCoreCompiledoes not produce FscArgs. However someone can useFSharpAnalyzers_AlwaysRunAfterBuildto always run after a build, still using Ionide.ProjInfo as before to do design time builds.