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);
        }