protected AbstractSymbolDefinitionTextWriter(
     SymbolFilterOptions filter,
     DefinitionListFormat format = null,
     SymbolDocumentationProvider documentationProvider = null,
     INamedTypeSymbol hierarchyRoot = null) : base(filter, format, documentationProvider, hierarchyRoot)
 {
 }
Пример #2
0
 internal TypeDocumentationModel(
     INamedTypeSymbol typeSymbol,
     SymbolFilterOptions filter)
 {
     Symbol = typeSymbol;
     Filter = filter;
 }
Пример #3
0
 public ListSymbolsCommand(
     ListSymbolsCommandLineOptions options,
     SymbolFilterOptions symbolFilterOptions,
     WrapListOptions wrapListOptions,
     SymbolDefinitionListLayout layout,
     SymbolDefinitionPartFilter ignoredParts,
     in ProjectFilter projectFilter) : base(projectFilter)
Пример #4
0
 public SymbolDefinitionJsonWriter(
     JsonWriter writer,
     SymbolFilterOptions filter  = null,
     DefinitionListFormat format = null,
     SymbolDocumentationProvider documentationProvider = null) : base(filter, format, documentationProvider)
 {
     _writer = writer;
 }
 public SymbolDefinitionJsonWriter(
     JsonWriter writer,
     SymbolFilterOptions filter  = null,
     DefinitionListFormat format = null,
     SymbolDocumentationProvider documentationProvider = null,
     INamedTypeSymbol hierarchyRoot = null) : base(filter, format, documentationProvider, hierarchyRoot)
 {
     _writer = writer;
 }
 public SymbolDefinitionHtmlWriter(
     XmlWriter writer,
     SymbolFilterOptions filter  = null,
     DefinitionListFormat format = null,
     SymbolDocumentationProvider documentationProvider = null,
     DocumentationDisplayMode documentationDisplayMode = DocumentationDisplayMode.ToolTip) : base(filter, format, documentationProvider)
 {
     _writer = writer;
     DocumentationDisplayMode = documentationDisplayMode;
 }
 public SymbolDefinitionHtmlWriter(
     XmlWriter writer,
     SymbolFilterOptions filter  = null,
     DefinitionListFormat format = null,
     SymbolDocumentationProvider documentationProvider = null,
     INamedTypeSymbol hierarchyRoot = null,
     SourceReferenceProvider sourceReferenceProvider   = null,
     DocumentationDisplayMode documentationDisplayMode = DocumentationDisplayMode.ToolTip) : base(filter, format, documentationProvider, hierarchyRoot)
 {
     _writer = writer;
     SourceReferenceProvider  = sourceReferenceProvider;
     DocumentationDisplayMode = documentationDisplayMode;
 }
Пример #8
0
        protected SymbolDefinitionWriter(
            SymbolFilterOptions filter  = null,
            DefinitionListFormat format = null,
            SymbolDocumentationProvider documentationProvider = null,
            INamedTypeSymbol hierarchyRoot = null)
        {
            Filter = filter ?? SymbolFilterOptions.Default;
            Format = format ?? DefinitionListFormat.Default;
            DocumentationProvider = documentationProvider;
            HierarchyRoot         = hierarchyRoot;

            _definitionNameFormat = new SymbolDisplayFormat(typeQualificationStyle: SymbolDisplayTypeQualificationStyle.NameOnly);
        }
Пример #9
0
        public static TypeHierarchy Create(
            IEnumerable <IAssemblySymbol> assemblies,
            SymbolFilterOptions filter            = null,
            IComparer <INamedTypeSymbol> comparer = null)
        {
            Func <INamedTypeSymbol, bool> predicate = null;

            if (filter != null)
            {
                predicate = t => filter.IsMatch(t);
            }

            IEnumerable <INamedTypeSymbol> types = assemblies.SelectMany(a => a.GetTypes(predicate));

            return(Create(types, comparer));
        }
Пример #10
0
        internal DocumentationModel(
            IEnumerable <Compilation> compilations,
            SymbolFilterOptions filter,
            IEnumerable <string> additionalXmlDocumentationPaths = null)
        {
            Compilations = compilations.ToImmutableArray();
            Assemblies   = compilations.Select(f => f.Assembly).ToImmutableArray();
            Filter       = filter;

            _symbolData        = new Dictionary <ISymbol, SymbolDocumentationData>();
            _xmlDocumentations = new Dictionary <IAssemblySymbol, XmlDocumentation>();

            if (additionalXmlDocumentationPaths != null)
            {
                _additionalXmlDocumentationPaths = additionalXmlDocumentationPaths.ToImmutableArray();
            }
        }
Пример #11
0
        internal DocumentationModel(
            Compilation compilation,
            IEnumerable <IAssemblySymbol> assemblies,
            SymbolFilterOptions filter,
            IEnumerable <string> additionalXmlDocumentationPaths = null)
        {
            Compilations = ImmutableArray.Create(compilation);
            Assemblies   = ImmutableArray.CreateRange(assemblies);
            Filter       = filter;

            _symbolData        = new Dictionary <ISymbol, SymbolDocumentationData>();
            _xmlDocumentations = new Dictionary <IAssemblySymbol, XmlDocumentation>();

            if (additionalXmlDocumentationPaths != null)
            {
                _additionalXmlDocumentationPaths = additionalXmlDocumentationPaths.ToImmutableArray();
            }
        }
Пример #12
0
        protected SymbolDefinitionWriter(
            SymbolFilterOptions filter  = null,
            DefinitionListFormat format = null,
            SymbolDocumentationProvider documentationProvider = null)
        {
            Filter = filter ?? SymbolFilterOptions.Default;
            Format = format ?? DefinitionListFormat.Default;
            DocumentationProvider = documentationProvider;

            _typeDefinitionNameFormat = new SymbolDisplayFormat(
                typeQualificationStyle: (Layout == SymbolDefinitionListLayout.TypeHierarchy) ? SymbolDisplayTypeQualificationStyle.NameAndContainingTypesAndNamespaces : SymbolDisplayTypeQualificationStyle.NameOnly,
                genericsOptions: SymbolDisplayGenericsOptions.IncludeTypeParameters);

            _memberDefinitionNameFormat = new SymbolDisplayFormat(
                typeQualificationStyle: SymbolDisplayTypeQualificationStyle.NameOnly,
                genericsOptions: SymbolDisplayGenericsOptions.IncludeTypeParameters,
                miscellaneousOptions: SymbolDisplayMiscellaneousOptions.UseSpecialTypes);
        }
Пример #13
0
        public static bool HasAttributes(ISymbol symbol, SymbolFilterOptions filter)
        {
            if (IsMatch(symbol))
            {
                return(true);
            }

            switch (symbol.Kind)
            {
            case SymbolKind.NamedType:
            {
                var typeSymbol = (INamedTypeSymbol)symbol;

                if (typeSymbol.TypeKind == TypeKind.Delegate &&
                    HasAttributes(typeSymbol.DelegateInvokeMethod?.Parameters ?? ImmutableArray <IParameterSymbol> .Empty))
                {
                    return(true);
                }

                break;
            }

            case SymbolKind.Event:
            {
                var eventSymbol = (IEventSymbol)symbol;

                if (IsMatch(eventSymbol.AddMethod))
                {
                    return(true);
                }

                if (IsMatch(eventSymbol.RemoveMethod))
                {
                    return(true);
                }

                break;
            }

            case SymbolKind.Method:
            {
                var methodSymbol = (IMethodSymbol)symbol;

                if (HasAttributes(methodSymbol.Parameters))
                {
                    return(true);
                }

                break;
            }

            case SymbolKind.Property:
            {
                var propertySymbol = (IPropertySymbol)symbol;

                if (HasAttributes(propertySymbol.Parameters))
                {
                    return(true);
                }

                if (IsMatch(propertySymbol.GetMethod))
                {
                    return(true);
                }

                if (IsMatch(propertySymbol.SetMethod))
                {
                    return(true);
                }

                break;
            }
            }

            return(false);

            bool HasAttributes(ImmutableArray <IParameterSymbol> parameters)
            {
                return(parameters.Any(f => IsMatch(f)));
            }

            bool IsMatch(ISymbol s)
            {
                if (s != null)
                {
                    foreach (AttributeData attribute in s.GetAttributes())
                    {
                        if (filter.IsMatch(s, attribute))
                        {
                            return(true);
                        }
                    }
                }

                return(false);
            }
        }
Пример #14
0
        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();
                }
            }
        }
Пример #15
0
 protected AbstractSymbolDefinitionTextWriter(
     SymbolFilterOptions filter,
     DefinitionListFormat format = null,
     SymbolDocumentationProvider documentationProvider = null) : base(filter, format, documentationProvider)
 {
 }