public static void AddMethodReferences4Method(MethodDefinition method, Func<string, bool> isInterestingType, IDependencyStructureGraphBuilder builder)
        {
            var methods = FindMethodsUsedBy(method);

            var localMethods = methods.Where(m => isInterestingType(m.DeclaringType.FullName)).ToList();
            localMethods.ForEach(
                m => builder.AddMethodReference(method, m)
            );
        }
        public static object DumpAssemblyGraph(string[] assemblies, Func<string, bool> isInterestingType, IDependencyStructureGraphBuilder builder)
        {
            var types = assemblies.ToList().Select(ModuleDefinition.ReadModule).SelectMany(m => m.Types);

            types.Where(t => isInterestingType(t.FullName)).ToList().ForEach(type =>
                GraphType(type, isInterestingType, builder)
            );

            return builder.BuildGraph();
        }
        public static void AddFieldReferences4Method(MethodDefinition method, Func<string, bool> isInterestingType, IDependencyStructureGraphBuilder builder)
        {
            var fields = FindFieldsUsedBy(method);

            //TODO: feature - Declare sub-types as sub-graphs
            var localFields = fields.Where(
                 a => isInterestingType(a.DeclaringType.FullName) || IsFieldReferenceToSubType(a, method.DeclaringType)
            ).ToList();

            localFields.ForEach(
                f => builder.AddFieldReference(method, f)
            );

            var externalFields = fields.Except(localFields).ToList();
            externalFields.ForEach(
                f => builder.AddExternalFieldReference(method, f)
            );
        }
 private static void GraphType(TypeDefinition type, Func<string, bool> isInterestingType, IDependencyStructureGraphBuilder builder)
 {
     builder.OpenTypeSubGraph(type);
     SelectInterestingFieldsFrom(type).ForEach(builder.AddField);
     SelectInterestingMethodsFrom(type).ForEach(method =>
     {
         builder.AddMethod(method);
         AddFieldReferences4Method(method, isInterestingType, builder);
         AddMethodReferences4Method(method, isInterestingType, builder);
     });
     builder.CloseTypeSubGraph();
 }
Esempio n. 5
0
 public TypeExplorer UsingBuilder(IDependencyStructureGraphBuilder dependencyStructureGraphBuilder)
 {
     _dependencyStructureGraphBuilder = dependencyStructureGraphBuilder;
     return this;
 }
Esempio n. 6
0
 public TypeExplorer UsingBuilder(IDependencyStructureGraphBuilder dependencyStructureGraphBuilder)
 {
     _dependencyStructureGraphBuilder = dependencyStructureGraphBuilder;
     return(this);
 }
        public static void AddMethodReferences4Method(MethodDefinition method, Func <string, bool> isInterestingType, IDependencyStructureGraphBuilder builder)
        {
            var methods = FindMethodsUsedBy(method);

            var localMethods = methods.Where(m => isInterestingType(m.DeclaringType.FullName)).ToList();

            localMethods.ForEach(
                m => builder.AddMethodReference(method, m)
                );
        }
        public static void AddFieldReferences4Method(MethodDefinition method, Func <string, bool> isInterestingType, IDependencyStructureGraphBuilder builder)
        {
            var fields = FindFieldsUsedBy(method);

            //TODO: feature - Declare sub-types as sub-graphs
            var localFields = fields.Where(
                a => isInterestingType(a.DeclaringType.FullName) || IsFieldReferenceToSubType(a, method.DeclaringType)
                ).ToList();

            localFields.ForEach(
                f => builder.AddFieldReference(method, f)
                );

            var externalFields = fields.Except(localFields).ToList();

            externalFields.ForEach(
                f => builder.AddExternalFieldReference(method, f)
                );
        }
 private static void GraphType(TypeDefinition type, Func <string, bool> isInterestingType, IDependencyStructureGraphBuilder builder)
 {
     builder.OpenTypeSubGraph(type);
     SelectInterestingFieldsFrom(type).ForEach(builder.AddField);
     SelectInterestingMethodsFrom(type).ForEach(method =>
     {
         builder.AddMethod(method);
         AddFieldReferences4Method(method, isInterestingType, builder);
         AddMethodReferences4Method(method, isInterestingType, builder);
     });
     builder.CloseTypeSubGraph();
 }
        public static object DumpAssemblyGraph(string[] assemblies, Func <string, bool> isInterestingType, IDependencyStructureGraphBuilder builder)
        {
            var types = assemblies.ToList().Select(ModuleDefinition.ReadModule).SelectMany(m => m.Types);

            types.Where(t => isInterestingType(t.FullName)).ToList().ForEach(type =>
                                                                             GraphType(type, isInterestingType, builder)
                                                                             );

            return(builder.BuildGraph());
        }