📄 Core/MemberCollectors/DocumentationCommentIdMemberCollector.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
using System.Collections.Generic;
using Microsoft.CodeAnalysis;

namespace Reacher.MemberCollectors;

internal sealed class DocumentationCommentIdMemberCollector(HashSet<string> documentationIds) : MembersCollector
{
    public static IEnumerable<ISymbol> CollectMembers(IEnumerable<string> documentationIds, Compilation[] compilations)
    {
        var collector = new DocumentationCommentIdMemberCollector([.. documentationIds]);
        compilations.Accept(collector);
        return collector.Members;
    }

    protected override bool ShouldMemberBeIncluded(ISymbol member) =>
        member.GetDocumentationCommentId() is string documentationId && documentationIds.Contains(documentationId);
}