@@ -136,13 +136,42 @@ module dotnet =
136136
137137 let fantomas args = DotNet.exec id " fantomas" args
138138
139+ let analyzers args = DotNet.exec id " fsharp-analyzers" args
140+
139141
140142let formatCode _ =
141143 let result = dotnet.fantomas " ."
142144
143145 if not result.OK then
144146 Trace.traceErrorfn " Errors while formatting all files: %A " result.Messages
145147
148+ let analyze _ =
149+ let analyzerPaths = !! " packages/analyzers/**/analyzers/dotnet/fs"
150+
151+ let createArgsForProject ( project : string ) analyzerPaths =
152+ let projectName = Path.GetFileNameWithoutExtension project
153+
154+ [
155+ yield " --project"
156+ yield project
157+ yield " --analyzers-path"
158+ yield ! analyzerPaths
159+ if isCI.Value then
160+ yield " --report"
161+ yield $" analysisreports/{projectName}-analysis.sarif"
162+ ]
163+ |> String.concat " "
164+
165+ !! " src/**/*.fsproj"
166+ |> Seq.iter ( fun fsproj ->
167+ let result =
168+ createArgsForProject fsproj analyzerPaths
169+ |> dotnet.analyzers
170+
171+ result.Errors
172+ |> Seq.iter Trace.traceError
173+ )
174+
146175
147176let checkFormatCode _ =
148177 let result = dotnet.fantomas " --check ."
@@ -445,6 +474,7 @@ let initTargets () =
445474 Target.create " DotnetPack" dotnetPack
446475 Target.create " FormatCode" formatCode
447476 Target.create " CheckFormatCode" checkFormatCode
477+ Target.create " Analyzers" analyze
448478 Target.create " PublishToNuGet" publishNuget
449479 Target.create " GitRelease" gitRelease
450480 Target.create " GitHubRelease" githubRelease
@@ -468,6 +498,9 @@ let initTargets () =
468498 " DotnetRestore"
469499 ==>! " CheckFormatCode"
470500
501+ " DotnetRestore"
502+ ==>! " Analyzers"
503+
471504 //*** Dotnet Build ***//
472505 " DotnetRestore"
473506 ==>! " Build"
0 commit comments