public IEnumerable <PackageVerifierIssue> Validate(IPackageRepository packageRepo, IPackage package, IPackageVerifierLogger logger)
        {
            if (!package.IsSatellitePackage())
            {
                IEnumerable <string> allXmlFiles =
                    from file in package.GetLibFiles()
                    select file.Path into path
                    where path.EndsWith(".xml", StringComparison.OrdinalIgnoreCase)
                    select path;

                foreach (IPackageFile current in package.GetLibFiles())
                {
                    string assemblyPath = current.Path;
                    // TODO: Does this need to check for just managed code?
                    if (assemblyPath.EndsWith(".dll", StringComparison.OrdinalIgnoreCase))
                    {
                        string docFilePath = Path.ChangeExtension(assemblyPath, ".xml");
                        if (!allXmlFiles.Contains(docFilePath, StringComparer.OrdinalIgnoreCase))
                        {
                            yield return(PackageIssueFactory.AssemblyHasNoDocFile(assemblyPath));
                        }
                    }
                }
            }
            yield break;
        }
Ejemplo n.º 2
0
        public IEnumerable <PackageVerifierIssue> Validate(PackageAnalysisContext context)
        {
            if (context.Metadata.PackageTypes.Any(p => p == PackageType.DotnetCliTool))
            {
                yield break;
            }

            if (!context.PackageReader.IsSatellitePackage())
            {
                var allXmlFiles =
                    from item in context.PackageReader.GetLibItems()
                    from file in item.Items
                    select file into path
                    where path.EndsWith(".xml", StringComparison.OrdinalIgnoreCase)
                    select path;

                foreach (var current in context.PackageReader.GetLibItems())
                {
                    foreach (var item in current.Items)
                    {
                        var assemblyPath = item;
                        // TODO: Does this need to check for just managed code?
                        if (assemblyPath.EndsWith(".dll", StringComparison.OrdinalIgnoreCase))
                        {
                            var docFilePath = Path.ChangeExtension(assemblyPath, ".xml");
                            if (!allXmlFiles.Contains(docFilePath, StringComparer.OrdinalIgnoreCase))
                            {
                                yield return(PackageIssueFactory.AssemblyHasNoDocFile(assemblyPath));
                            }
                        }
                    }
                }
            }
        }