Exemplo n.º 1
0
    private static Docs?ParseDocs(GeneratorExecutionContext context)
    {
        Docs?docs = null;

        if (context.AnalyzerConfigOptions.GlobalOptions.TryGetValue("build_property.CsWin32InputDocPaths", out string?delimitedApiDocsPaths) &&
            !string.IsNullOrWhiteSpace(delimitedApiDocsPaths))
        {
            string[] apiDocsPaths = delimitedApiDocsPaths !.Split('|');
            if (apiDocsPaths.Length > 0)
            {
                List <Docs> docsList = new(apiDocsPaths.Length);
                foreach (string path in apiDocsPaths)
                {
                    try
                    {
                        docsList.Add(Docs.Get(path));
                    }
                    catch (Exception e)
                    {
                        context.ReportDiagnostic(Diagnostic.Create(DocParsingError, null, path, e.Message));
                    }
                }

                docs = Docs.Merge(docsList);
            }
        }

        return(docs);
    }