public ListSymbolsCommand( ListSymbolsCommandLineOptions options, SymbolFilterOptions symbolFilterOptions, WrapListOptions wrapListOptions, SymbolDefinitionListLayout layout, SymbolDefinitionPartFilter ignoredParts, in ProjectFilter projectFilter) : base(projectFilter)
private static async Task <int> ListSymbolsAsync(ListSymbolsCommandLineOptions options) { if (!options.TryGetProjectFilter(out ProjectFilter projectFilter)) { return(1); } if (!TryParseOptionValueAsEnum(options.Depth, ParameterNames.Depth, out DocumentationDepth depth, DocumentationDepth.Member)) { return(1); } if (!TryParseOptionValueAsEnumFlags(options.WrapList, ParameterNames.WrapList, out WrapListOptions wrapListOptions)) { return(1); } if (!TryParseMetadataNames(options.IgnoredAttributes, out ImmutableArray <MetadataName> ignoredAttributes)) { return(1); } if (!TryParseMetadataNames(options.IgnoredSymbols, out ImmutableArray <MetadataName> ignoredSymbols)) { return(1); } if (!TryParseOptionValueAsEnumFlags(options.IgnoredParts, ParameterNames.IgnoredParts, out SymbolDefinitionPartFilter ignoredParts)) { return(1); } if (!TryParseOptionValueAsEnum(options.Layout, ParameterNames.Layout, out SymbolDefinitionListLayout layout, SymbolDefinitionListLayout.NamespaceList)) { return(1); } if (!TryParseOptionValueAsEnumFlags(options.Visibility, ParameterNames.Visibility, out VisibilityFilter visibilityFilter, SymbolFilterOptions.Default.Visibility)) { return(1); } ImmutableArray <SymbolFilterRule> rules = (ignoredSymbols.Any()) ? ImmutableArray.Create <SymbolFilterRule>(new IgnoredNameSymbolFilterRule(ignoredSymbols)) : ImmutableArray <SymbolFilterRule> .Empty; ImmutableArray <AttributeFilterRule> attributeRules = ImmutableArray.Create <AttributeFilterRule>( IgnoredAttributeNameFilterRule.Default, new IgnoredAttributeNameFilterRule(ignoredAttributes)); var symbolFilterOptions = new SymbolFilterOptions( visibility: visibilityFilter, symbolGroups: GetSymbolGroupFilter(), rules: rules, attributeRules: attributeRules); var command = new ListSymbolsCommand( options: options, symbolFilterOptions: symbolFilterOptions, wrapListOptions: wrapListOptions, layout: layout, ignoredParts: ignoredParts, projectFilter: projectFilter); CommandResult result = await command.ExecuteAsync(options.Path, options.MSBuildPath, options.Properties); return((result.Kind == CommandResultKind.Success) ? 0 : 1); SymbolGroupFilter GetSymbolGroupFilter() { switch (depth) { case DocumentationDepth.Member: return(SymbolGroupFilter.TypeOrMember); case DocumentationDepth.Type: return(SymbolGroupFilter.Type); case DocumentationDepth.Namespace: return(SymbolGroupFilter.None); default: throw new InvalidOperationException(); } } }