diff --git a/ReleaseHistory.md b/ReleaseHistory.md index b3818a721..9979d179d 100644 --- a/ReleaseHistory.md +++ b/ReleaseHistory.md @@ -19,6 +19,7 @@ `System.Diagnostics.Debug` 4.3.0, `System.IO.FileSystem.Primitives` 4.3.0, `System.Text.Encoding.Extensions` 4.3.0. +* NEW: Expose `MultithreadedAnalyzeCommandBase.BuildDisabledSkimmersSet`, a utility function which extracts a disabled skimmer set from a `TContext`. ## **v4.5.0 [Sdk](https://www.nuget.org/packages/Sarif.Sdk/v4.5.0) | [Driver](https://www.nuget.org/packages/Sarif.Driver/v4.5.0) | [Converters](https://www.nuget.org/packages/Sarif.Converters/v4.5.0) | [Multitool](https://www.nuget.org/packages/Sarif.Multitool/v4.5.0) | [Multitool Library](https://www.nuget.org/packages/Sarif.Multitool.Library/v4.5.0) * DEP: Downgrade `System.Text.Encoding.CodePages` from 8.0.0 to 4.3.0 in `Sarif`. diff --git a/src/Sarif.Driver/Sdk/MultithreadedAnalyzeCommandBase.cs b/src/Sarif.Driver/Sdk/MultithreadedAnalyzeCommandBase.cs index 7e3ab3a95..704dc6291 100644 --- a/src/Sarif.Driver/Sdk/MultithreadedAnalyzeCommandBase.cs +++ b/src/Sarif.Driver/Sdk/MultithreadedAnalyzeCommandBase.cs @@ -1075,6 +1075,21 @@ private static SupportedPlatform GetCurrentRunningOS() ThrowExitApplicationException(ExitReason.NoRulesLoaded); } + ISet disabledSkimmers = BuildDisabledSkimmersSet(context, skimmers); + + if (disabledSkimmers.Count == skimmers.Count()) + { + Errors.LogAllRulesExplicitlyDisabled(context); + ThrowExitApplicationException(ExitReason.NoRulesLoaded); + } + + this.CheckIncompatibleRules(skimmers, context, disabledSkimmers); + + MultithreadedAnalyzeTargets(context, skimmers, disabledSkimmers); + } + + public static ISet BuildDisabledSkimmersSet(TContext context, IEnumerable> skimmers) + { var disabledSkimmers = new SortedSet(); foreach (Skimmer skimmer in skimmers) @@ -1108,15 +1123,7 @@ private static SupportedPlatform GetCurrentRunningOS() } } - if (disabledSkimmers.Count == skimmers.Count()) - { - Errors.LogAllRulesExplicitlyDisabled(context); - ThrowExitApplicationException(ExitReason.NoRulesLoaded); - } - - this.CheckIncompatibleRules(skimmers, context, disabledSkimmers); - - MultithreadedAnalyzeTargets(context, skimmers, disabledSkimmers); + return disabledSkimmers; } protected virtual TContext DetermineApplicabilityAndAnalyze(TContext context,