IEnumerable <T> FindReferencesGlobal(CancellationToken ct)
        {
            IEnumerable <ModuleDef> modules;

            if (TIAHelper.IsTypeDefEquivalent(analyzedType))
            {
                var analyzedTypes = new List <TypeDef> {
                    analyzedType
                };
                SearchNode.AddTypeEquivalentTypes(documentService, analyzedType, analyzedTypes);
                modules = SearchNode.GetTypeEquivalentModules(analyzedTypes);
            }
            else
            {
                modules = GetReferencingModules(analyzedType.Module, ct);
            }
            allModules.AddRange(modules);
            return(allModules.AsParallel().WithCancellation(ct).SelectMany(a => FindReferencesInModule(a, ct)));
        }
        IEnumerable <T> FindReferencesInAssemblyAndFriends(CancellationToken ct)
        {
            IEnumerable <ModuleDef> modules;

            if (includeAllModules)
            {
                modules = documentService.GetDocuments().Select(a => a.ModuleDef).OfType <ModuleDef>();
            }
            else if (TIAHelper.IsTypeDefEquivalent(analyzedType))
            {
                var analyzedTypes = new List <TypeDef> {
                    analyzedType
                };
                SearchNode.AddTypeEquivalentTypes(documentService, analyzedType, analyzedTypes);
                modules = SearchNode.GetTypeEquivalentModules(analyzedTypes);
            }
            else
            {
                modules = GetModuleAndAnyFriends(analyzedType.Module, ct);
            }
            allModules.AddRange(modules);
            return(allModules.AsParallel().WithCancellation(ct).SelectMany(a => FindReferencesInModule(a, ct)));
        }
Beispiel #3
0
        IEnumerable <T> FindReferencesGlobal(CancellationToken ct)
        {
            IEnumerable <ModuleDef> modules;

            if ((options & ScopedWhereUsedAnalyzerOptions.IncludeAllModules) != 0)
            {
                modules = documentService.GetDocuments().Select(a => a.ModuleDef).OfType <ModuleDef>();
            }
            else if (TIAHelper.IsTypeDefEquivalent(analyzedType))
            {
                var analyzedTypes = new List <TypeDef> {
                    analyzedType
                };
                SearchNode.AddTypeEquivalentTypes(documentService, analyzedType, analyzedTypes);
                modules = SearchNode.GetTypeEquivalentModules(analyzedTypes);
            }
            else
            {
                modules = GetReferencingModules(analyzedType.Module, ct);
            }
            allModules.AddRange(modules);
            return(allModules.AsParallel().WithCancellation(ct).SelectMany(a => FindReferencesInModule(a, ct)));
        }