Example #1
0
        public IDependencyAnalyzerResult Filter(IDependencyAnalyzerResult result)
        {
            var filteredResult = new Dictionary <string, AssemblyReferenceInfo>(result.Assemblies.Count);

            foreach (var reference in result.Assemblies)
            {
                if (reference.Value.ReferencedBy.ToList().Exists(e => e.AssemblyName.Name == "netstandard"))
                {
                    var filteredReference = new AssemblyReferenceInfo(reference.Value.AssemblyName);

                    reference.Value.References
                    .ToList()
                    .ForEach(filteredReference.AddReference);

                    reference.Value.ReferencedBy
                    .Where(referencedBy => referencedBy.AssemblyName.Name != "netstandard")
                    .ToList()
                    .ForEach(filteredReference.AddReferencedBy);
                }
                else
                {
                    filteredResult.Add(reference.Key, reference.Value);
                }
            }

            return(new DependencyAnalyzerResult(result.AnalyzedFiles, filteredResult));
        }
Example #2
0
            public AssemblyReferenceInfo[] CreateCache(string[] filePaths)
            {
                WriteDebugInfo();

                if (filePaths == null)
                {
                    throw new ArgumentNullException(nameof(filePaths));
                }

                var assemblyReferenceInfos = new List <AssemblyReferenceInfo>(filePaths.Length);

                foreach (var filePath in filePaths)
                {
                    try
                    {
                        var assemblyName = AssemblyName.GetAssemblyName(filePath).EnsureNotNull();

                        var info = new AssemblyReferenceInfo
                        {
                            FilePath     = filePath,
                            AssemblyName = assemblyName
                        };

                        assemblyReferenceInfos.Add(info);
                    }
                    catch (Exception ex)
                        when(!ex.IsFatal())
                        {
                            Trace.TraceWarning($@"Error loading the file {filePath.ToUIString()} as assembly: {ex}");
                        }
                }

                return(assemblyReferenceInfos.ToArray());
            }
        protected virtual void VisualizeAssemblyReferenceInfo(AssemblyReferenceInfo assemblyReferenceInfo)
        {
            if (assemblyReferenceInfo == null)
            {
                throw new ArgumentNullException(nameof(assemblyReferenceInfo));
            }
            ConsoleColor statusColor;

            switch (assemblyReferenceInfo.AssemblySource)
            {
            case AssemblySource.NotFound:
                statusColor = AssemblyNotFoundColor;
                break;

            case AssemblySource.Local:
                statusColor = AssemblyLocalColor;
                break;

            case AssemblySource.GlobalAssemblyCache:
                statusColor = AssemblyGlobalAssemblyCacheColor;
                break;

            case AssemblySource.Unknown:
                statusColor = AssemblyUnknownColor;
                break;

            default:
                throw new InvalidEnumArgumentException(AsmSpy_CommandLine.Invalid_AssemblySource);
            }
            Console.ForegroundColor = statusColor;
            Console.WriteLine(AsmSpy_CommandLine.ConsoleVisualizer_VisualizeAssemblyReferenceInfo____0_, assemblyReferenceInfo.AssemblyName);
            Console.Write(AsmSpy_CommandLine.Source_, assemblyReferenceInfo.AssemblySource);
            if (assemblyReferenceInfo.AssemblySource != AssemblySource.NotFound)
            {
                Console.WriteLine(AsmSpy_CommandLine.Location_, assemblyReferenceInfo.ReflectionOnlyAssembly.Location);
            }
            else
            {
                Console.WriteLine();
            }

            foreach (var referer in assemblyReferenceInfo.ReferencedBy.OrderBy(x => x.AssemblyName.ToString()))
            {
                if (!string.IsNullOrEmpty(ReferencedStartsWith) && !referer.AssemblyName.Name.ToUpperInvariant().StartsWith(ReferencedStartsWith.ToUpperInvariant(), StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }

                Console.ForegroundColor = statusColor;
                Console.Write(AsmSpy_CommandLine.ConsoleVisualizer_VisualizeAssemblyReferenceInfo______0_, assemblyReferenceInfo.AssemblyName.Version);

                Console.ForegroundColor = ConsoleColor.White;
                Console.Write(AsmSpy_CommandLine.by);

                Console.ForegroundColor = ConsoleColor.Gray;
                Console.WriteLine(AsmSpy_CommandLine.ConsoleVisualizer_VisualizeAssemblyReferenceInfo__0_, referer.AssemblyName);
            }
        }
Example #4
0
        protected virtual void VisualizeAssemblyReferenceInfo(AssemblyReferenceInfo assemblyReferenceInfo)
        {
            if (assemblyReferenceInfo == null)
            {
                throw new ArgumentNullException(nameof(assemblyReferenceInfo));
            }
            ConsoleColor statusColor;

            switch (assemblyReferenceInfo.AssemblySource)
            {
            case AssemblySource.NotFound:
                statusColor = assemblyReferenceInfo.HasAlternativeVersion ? AssemblyAlternativeColor : AssemblyNotFoundColor;
                break;

            case AssemblySource.Local:
                statusColor = AssemblyLocalColor;
                break;

            case AssemblySource.GlobalAssemblyCache:
                statusColor = AssemblyGlobalAssemblyCacheColor;
                break;

            case AssemblySource.Unknown:
                statusColor = AssemblyUnknownColor;
                break;

            default:
                throw new InvalidEnumArgumentException(AsmSpy_CommandLine.Invalid_AssemblySource);
            }
            Console.ForegroundColor = statusColor;
            Console.WriteLine(AsmSpy_CommandLine.ConsoleVisualizer_VisualizeAssemblyReferenceInfo____0_, assemblyReferenceInfo.AlternativeFoundVersion?.AssemblyName ?? assemblyReferenceInfo.AssemblyName);
            Console.Write(AsmSpy_CommandLine.Source_, assemblyReferenceInfo.AssemblySource);

            if (assemblyReferenceInfo.AssemblySource != AssemblySource.NotFound)
            {
                Console.WriteLine(AsmSpy_CommandLine.Location_, assemblyReferenceInfo.ReflectionOnlyAssembly.Location);
            }
            else
            {
                if (assemblyReferenceInfo.HasAlternativeVersion)
                {
                    Console.Write(AsmSpy_CommandLine.AlternativeVersionFound);
                }
                Console.WriteLine();
            }

            foreach (var referer in assemblyReferenceInfo.ReferencedBy.OrderBy(x => x.AssemblyName.ToString()))
            {
                Console.ForegroundColor = statusColor;
                Console.Write(AsmSpy_CommandLine.ConsoleVisualizer_VisualizeAssemblyReferenceInfo______0_, assemblyReferenceInfo.AssemblyName.Version);

                Console.ForegroundColor = ConsoleColor.White;
                Console.Write(AsmSpy_CommandLine.by);

                Console.ForegroundColor = ConsoleColor.Gray;
                Console.WriteLine(AsmSpy_CommandLine.ConsoleVisualizer_VisualizeAssemblyReferenceInfo__0_, referer.AssemblyName);
            }
        }