private HashSet <Skimmer <TContext> > CreateSkimmers(TContext context) { IEnumerable <Skimmer <TContext> > skimmers; HashSet <Skimmer <TContext> > result = new HashSet <Skimmer <TContext> >(); try { skimmers = CompositionUtilities.GetExports <Skimmer <TContext> >(DefaultPlugInAssemblies); SupportedPlatform currentOS = GetCurrentRunningOS(); foreach (Skimmer <TContext> skimmer in skimmers) { if (skimmer.SupportedPlatforms.HasFlag(currentOS)) { result.Add(skimmer); } else { Warnings.LogUnsupportedPlatformForRule(context, skimmer.Name, skimmer.SupportedPlatforms, currentOS); } } } catch (Exception ex) { Errors.LogExceptionInstantiatingSkimmers(context, DefaultPlugInAssemblies, ex); ThrowExitApplicationException(context, ExitReason.UnhandledExceptionInstantiatingSkimmers, ex); } if (result.Count == 0) { Errors.LogNoRulesLoaded(context); ThrowExitApplicationException(context, ExitReason.NoRulesLoaded); } return(result); }
protected virtual ISet <Skimmer <TContext> > CreateSkimmers(TOptions analyzeOptions, TContext context) { IEnumerable <Skimmer <TContext> > skimmers; var result = new SortedSet <Skimmer <TContext> >(SkimmerIdComparer <TContext> .Instance); try { skimmers = CompositionUtilities.GetExports <Skimmer <TContext> >(RetrievePluginAssemblies(DefaultPluginAssemblies, analyzeOptions.PluginFilePaths)); SupportedPlatform currentOS = GetCurrentRunningOS(); foreach (Skimmer <TContext> skimmer in skimmers) { if (skimmer.SupportedPlatforms.HasFlag(currentOS)) { result.Add(skimmer); } else { Warnings.LogUnsupportedPlatformForRule(context, skimmer.Name, skimmer.SupportedPlatforms, currentOS); } } } catch (Exception ex) { Errors.LogExceptionInstantiatingSkimmers(context, DefaultPluginAssemblies, ex); ThrowExitApplicationException(context, ExitReason.UnhandledExceptionInstantiatingSkimmers, ex); } if (result.Count == 0) { Errors.LogNoRulesLoaded(context); ThrowExitApplicationException(context, ExitReason.NoRulesLoaded); } return(result); }