diff --git a/samples/OptionAnalyzer.Test/UnitTests.fs b/samples/OptionAnalyzer.Test/UnitTests.fs index 1546fe5..5886cd7 100644 --- a/samples/OptionAnalyzer.Test/UnitTests.fs +++ b/samples/OptionAnalyzer.Test/UnitTests.fs @@ -478,7 +478,7 @@ module ClientTests = let stats = client.LoadAnalyzers(path) let! messages = client.RunAnalyzersSafely(ctx) - Assert.That(stats.Analyzers, Is.Not.EqualTo 0) + Assert.That(stats.AnalyzerNames, Is.Not.Empty) match List.tryHead messages with | Some message -> @@ -510,7 +510,7 @@ module ClientTests = let stats = client.LoadAnalyzers(path) let! messages = client.RunAnalyzersSafely(ctx) - Assert.That(stats.Analyzers, Is.Not.EqualTo 0) + Assert.That(stats.AnalyzerNames, Is.Not.Empty) match List.tryHead messages with | Some message -> @@ -542,7 +542,7 @@ module ClientTests = let stats = client.LoadAnalyzers(path) let! messages = client.RunAnalyzersSafely(ctx) - Assert.That(stats.Analyzers, Is.Not.EqualTo 0) + Assert.That(stats.AnalyzerNames, Is.Not.Empty) match List.tryHead messages with | Some message -> @@ -575,7 +575,7 @@ module ClientTests = let stats = client.LoadAnalyzers(path) let! messages = client.RunAnalyzersSafely(ctx) - Assert.That(stats.Analyzers, Is.Not.EqualTo 0) + Assert.That(stats.AnalyzerNames, Is.Not.Empty) match List.tryHead messages with | Some message -> @@ -609,7 +609,7 @@ module ClientTests = let stats = client.LoadAnalyzers(path) let! messages = client.RunAnalyzersSafely(ctx) - Assert.That(stats.Analyzers, Is.Not.EqualTo 0) + Assert.That(stats.AnalyzerNames, Is.Not.Empty) match List.tryHead messages with | Some message -> @@ -662,7 +662,7 @@ module ClientTests = let stats = client.LoadAnalyzers(path) let! messages = client.RunAnalyzers(ctx) - Assert.That(stats.Analyzers, Is.Not.EqualTo 0) + Assert.That(stats.AnalyzerNames, Is.Not.Empty) Assert.That(messages, Is.Not.Empty) } @@ -685,7 +685,7 @@ module ClientTests = let stats = client.LoadAnalyzers(path) let! messages = client.RunAnalyzers(ctx) - Assert.That(stats.Analyzers, Is.Not.EqualTo 0) + Assert.That(stats.AnalyzerNames, Is.Not.Empty) Assert.That(messages, Is.Empty) } @@ -707,7 +707,7 @@ module ClientTests = let stats = client.LoadAnalyzers(path) let! messages = client.RunAnalyzers(ctx) - Assert.That(stats.Analyzers, Is.Not.EqualTo 0) + Assert.That(stats.AnalyzerNames, Is.Not.Empty) Assert.That(messages, Is.Empty) } @@ -730,7 +730,7 @@ module ClientTests = let stats = client.LoadAnalyzers(path) let! messages = client.RunAnalyzers(ctx) - Assert.That(stats.Analyzers, Is.Not.EqualTo 0) + Assert.That(stats.AnalyzerNames, Is.Not.Empty) Assert.That(messages, Is.Empty) } @@ -754,6 +754,6 @@ module ClientTests = let stats = client.LoadAnalyzers(path) let! messages = client.RunAnalyzers(ctx) - Assert.That(stats.Analyzers, Is.Not.EqualTo 0) + Assert.That(stats.AnalyzerNames, Is.Not.Empty) Assert.That(messages, Is.Empty) } diff --git a/src/FSharp.Analyzers.SDK/FSharp.Analyzers.SDK.Client.fs b/src/FSharp.Analyzers.SDK/FSharp.Analyzers.SDK.Client.fs index a5da6ce..7535e0e 100644 --- a/src/FSharp.Analyzers.SDK/FSharp.Analyzers.SDK.Client.fs +++ b/src/FSharp.Analyzers.SDK/FSharp.Analyzers.SDK.Client.fs @@ -201,10 +201,12 @@ module Client = type AssemblyLoadStats = { AnalyzerAssemblies: int - Analyzers: int + AnalyzerNames: string list FailedAssemblies: int } + member x.Analyzers = x.AnalyzerNames.Length + type ExcludeInclude = | ExcludeFilter of (AnalyzerName -> bool) | IncludeFilter of (AnalyzerName -> bool) @@ -325,16 +327,17 @@ type Client<'TAttribute, 'TContext when 'TAttribute :> AnalyzerAttribute and 'TC let assemblyCount = Array.length analyzers - let analyzerCount = + let analyzerNames = analyzers - |> Seq.sumBy ( + |> Seq.collect ( snd - >> Seq.length + >> Seq.map (fun a -> a.Name) ) + |> Seq.toList { AnalyzerAssemblies = assemblyCount - Analyzers = analyzerCount + AnalyzerNames = analyzerNames FailedAssemblies = skippedAssemblies.Value } else @@ -342,7 +345,7 @@ type Client<'TAttribute, 'TContext when 'TAttribute :> AnalyzerAttribute and 'TC { AnalyzerAssemblies = 0 - Analyzers = 0 + AnalyzerNames = [] FailedAssemblies = 0 } diff --git a/src/FSharp.Analyzers.SDK/FSharp.Analyzers.SDK.Client.fsi b/src/FSharp.Analyzers.SDK/FSharp.Analyzers.SDK.Client.fsi index d367f66..23c7f69 100644 --- a/src/FSharp.Analyzers.SDK/FSharp.Analyzers.SDK.Client.fsi +++ b/src/FSharp.Analyzers.SDK/FSharp.Analyzers.SDK.Client.fsi @@ -22,12 +22,15 @@ type AssemblyLoadStats = { /// The number of DLLs from which we tried to load analyzers. AnalyzerAssemblies: int - /// The total number of analyzers loaded across all attempted DLLs. - Analyzers: int + /// The names of all analyzers loaded across all attempted DLLs. + AnalyzerNames: string list /// The number of assemblies from which we tried and failed to load any DLLs. FailedAssemblies: int } + /// The total number of analyzers loaded across all attempted DLLs. + member Analyzers: int + type ExcludeInclude = /// A predicate function to exclude Analyzers. | ExcludeFilter of (string -> bool)