@@ -9,9 +9,11 @@ open System.Text.RegularExpressions
99open McMaster.NETCore .Plugins
1010open Microsoft.Extensions .Logging
1111
12+ type AnalyzerName = string
13+
1214type AnalysisResult =
1315 {
14- AnalyzerName: string
16+ AnalyzerName: AnalyzerName
1517 Output: Result < Message list , exn >
1618 }
1719
@@ -20,7 +22,7 @@ module Client =
2022 type RegisteredAnalyzer < 'TContext when 'TContext :> Context > =
2123 {
2224 AssemblyPath: string
23- Name: string
25+ Name: AnalyzerName
2426 Analyzer: Analyzer < 'TContext >
2527 ShortDescription: string option
2628 HelpUri: string option
@@ -135,8 +137,8 @@ type AssemblyLoadStats =
135137 }
136138
137139type ExcludeInclude =
138- | ExcludeFilter of ( string -> bool )
139- | IncludeFilter of ( string -> bool )
140+ | ExcludeFilter of ( AnalyzerName -> bool )
141+ | IncludeFilter of ( AnalyzerName -> bool )
140142
141143type Client < 'TAttribute , 'TContext when 'TAttribute :> AnalyzerAttribute and 'TContext :> Context >( logger : ILogger ) =
142144 do TASTCollecting.logger <- logger
@@ -263,8 +265,11 @@ type Client<'TAttribute, 'TContext when 'TAttribute :> AnalyzerAttribute and 'TC
263265 }
264266
265267 member x.RunAnalyzers ( ctx : 'TContext ) : Async < AnalyzerMessage list > =
268+ x.RunAnalyzers( ctx, fun _ -> true )
269+
270+ member x.RunAnalyzers ( ctx : 'TContext , analyzerPredicate : Client.RegisteredAnalyzer < 'TContext > -> bool ) : Async < AnalyzerMessage list > =
266271 async {
267- let analyzers = registeredAnalyzers.Values |> Seq.collect id
272+ let analyzers = registeredAnalyzers.Values |> Seq.collect id |> Seq.filter analyzerPredicate
268273
269274 let! messagesPerAnalyzer =
270275 analyzers
@@ -298,8 +303,11 @@ type Client<'TAttribute, 'TContext when 'TAttribute :> AnalyzerAttribute and 'TC
298303 }
299304
300305 member x.RunAnalyzersSafely ( ctx : 'TContext ) : Async < AnalysisResult list > =
306+ x.RunAnalyzersSafely( ctx, fun _ -> true )
307+
308+ member x.RunAnalyzersSafely ( ctx : 'TContext , analyzerPredicate : Client.RegisteredAnalyzer < 'TContext > -> bool ) : Async < AnalysisResult list > =
301309 async {
302- let analyzers = registeredAnalyzers.Values |> Seq.collect id
310+ let analyzers = registeredAnalyzers.Values |> Seq.collect id |> Seq.filter analyzerPredicate
303311
304312 let! results =
305313 analyzers
0 commit comments