コード例 #1
0
    public static void Run()
    {
        Setup();

        using (var infoFile = File.CreateText("FindLog_Info.txt"))
            using (var errFile = File.CreateText("FindLog_Error.txt"))
                using (var outputFile = File.CreateText("FindLog_Output.txt"))
                {
                    var obj = Instance.mUnit;

                    ReferenceAnalysisAlgorithm.TypeGraph graph;
                    using (new ReferenceAnalysisAlgorithm.ScopeTimer("Build type graph", infoFile.WriteLine))
                    {
                        graph = new ReferenceAnalysisAlgorithm.TypeGraph(obj.GetType(),
                                                                         new ReferenceAnalysisAlgorithm.ReflectionPolicy()
                        {
                            GetInstanceProperties = type =>
                            {
#if UNITY_EDITOR
                                if (type.IsArray)
                                {
                                    return(Enumerable.Empty <PropertyInfo>());
                                }
                                if (!type.IsSubclassOf(typeof(Delegate)) && type.Assembly != typeof(UnityEngine.Vector3).Assembly)
                                {
                                    return(Enumerable.Empty <PropertyInfo>());
                                }
                                return
                                (from prop in type.GetProperties(BindingFlags.Public | BindingFlags.Instance)
                                 where !prop.PropertyType.ContainsGenericParameters
                                 let getter = prop.GetGetMethod()
                                              where getter != null && getter.GetParameters().Length == 0
                                              select prop);
#else
                                return(Enumerable.Empty <PropertyInfo>());
#endif
                            },
                        });
                    }

                    var finder = new ReferenceAnalysisAlgorithm.ReferenceFinder(graph)
                    {
                        LogInfo  = infoFile.WriteLine,
                        LogError = errFile.WriteLine,
                    };

                    finder.FindReferences(obj, outputFile.WriteLine);
                }

        Cleanup();
    }
コード例 #2
0
    public static void Run()
    {
        Setup();

        using (var infoFile = File.CreateText("FindLog_Info.txt"))
        using (var errFile = File.CreateText("FindLog_Error.txt"))
        using (var outputFile = File.CreateText("FindLog_Output.txt"))
        {
            var obj = Instance.mUnit;

            ReferenceAnalysisAlgorithm.TypeGraph graph;
            using (new ReferenceAnalysisAlgorithm.ScopeTimer("Build type graph", infoFile.WriteLine))
            {
                graph = new ReferenceAnalysisAlgorithm.TypeGraph(obj.GetType(),
                    new ReferenceAnalysisAlgorithm.ReflectionPolicy()
                    {
                        GetInstanceProperties = type =>
                        {
        #if UNITY_EDITOR
                            if (type.IsArray) return Enumerable.Empty<PropertyInfo>();
                            if (!type.IsSubclassOf(typeof(Delegate)) && type.Assembly != typeof(UnityEngine.Vector3).Assembly) return Enumerable.Empty<PropertyInfo>();
                            return
                                from prop in type.GetProperties(BindingFlags.Public | BindingFlags.Instance)
                                where !prop.PropertyType.ContainsGenericParameters
                                let getter = prop.GetGetMethod()
                                where getter != null && getter.GetParameters().Length == 0
                                select prop;
        #else
                        return Enumerable.Empty<PropertyInfo>();
        #endif
                        },
                    });
            }

            var finder = new ReferenceAnalysisAlgorithm.ReferenceFinder(graph)
            {
                LogInfo = infoFile.WriteLine,
                LogError = errFile.WriteLine,
            };

            finder.FindReferences(obj, outputFile.WriteLine);
        }

        Cleanup();
    }