Пример #1
0
        public static void PrintSceneAnalysis()
        {
            var config = Config.Config.LoadFromFile();
            var sa     = LoadStaticAnalysisRules(config);

            var violations = new Dictionary <Rule, List <IViolation> >();
            HashSet <string> ignoredSceneObjectNames = new HashSet <string>(config.IgnoredSceneRootObjectNames);

            for (var i = 0; i < SceneManager.sceneCount; i++)
            {
                var scene = SceneManager.GetSceneAt(i);

                GameObject[] rootGameObjects = scene.GetRootGameObjects();
                for (var j = 0; j < rootGameObjects.Length; j++)
                {
                    var obj = rootGameObjects[j];
                    if (ignoredSceneObjectNames.Contains(obj.name))
                    {
                        continue;
                    }

                    violations = StaticAnalysis.MergeRuleViolationDictionary(violations, sa.Analyze(ViolationScope.Scene, obj));
                }
            }

            EditorExtensions.ConsoleWindow.Instance.SetViolations(violations);
        }
Пример #2
0
        public static void PrintPrefabAnalysis()
        {
            var config = Config.Config.LoadFromFile();
            var sa     = LoadStaticAnalysisRules(config);

            var prefabDirectories = config.PrefabLocations;
            var assets            = AssetDatabase.FindAssets("t:prefab", prefabDirectories);
            var violations        = new Dictionary <Rule, List <IViolation> >();

            for (var i = 0; i < assets.Length; i++)
            {
                var asset = assets[i];
                var path  = AssetDatabase.GUIDToAssetPath(asset);
                var obj   = AssetDatabase.LoadAssetAtPath <GameObject>(path);

                violations = StaticAnalysis.MergeRuleViolationDictionary(violations, sa.Analyze(ViolationScope.Prefab, obj));
            }

            EditorExtensions.ConsoleWindow.Instance.SetViolations(violations);
        }