Ejemplo n.º 1
0
        /// <summary>
        /// Constructor to create a pre-filled <see cref="InstanceValidatorCache"/>.
        /// </summary>
        public InstanceValidatorCache()
        {
            _validators = new List <AbstractInstanceValidator>();

            // Make sure any overriden disabled types are not included
            var overrideConfig = AssetValidatorOverrideConfig.FindOrCreate();

            // Get and add all field validators, excluding override disabled ones.
            var fieldValidators = ReflectionTools.GetAllDerivedInstancesOfType <FieldValidatorBase>();

            foreach (var fieldValidator in fieldValidators)
            {
                var t = fieldValidator.GetType();

                AssetValidatorOverrideConfig.OverrideItem overrideItem;
                if (overrideConfig.TryGetOverrideConfigItem(t, out overrideItem) && overrideItem.enabled)
                {
                    _validators.Add(fieldValidator);
                }
            }

            // Get and add all object validators, excluding override disabled ones.
            var objectValidators = ReflectionTools.GetAllDerivedInstancesOfType <ObjectValidatorBase>();

            foreach (var objectValidator in objectValidators)
            {
                var t = objectValidator.GetType();

                AssetValidatorOverrideConfig.OverrideItem overrideItem;
                if (overrideConfig.TryGetOverrideConfigItem(t, out overrideItem) && overrideItem.enabled)
                {
                    _validators.Add(objectValidator);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Find an existing <see cref="AssetValidatorOverrideConfig"/> in memory or project and where none
        /// exist create one in the project.
        /// </summary>
        /// <returns></returns>
        internal static AssetValidatorOverrideConfig FindOrCreate()
        {
            if (_config == null)
            {
                _config = Resources.Load <AssetValidatorOverrideConfig>(EditorConstants.OverrideConfigName);
            }

            if (_config != null)
            {
                _config.FindAndAddMissingTypes();
                return(_config);
            }

            Debug.LogWarningFormat(EditorConstants.CouldNotFindConfigWarning);

            return(CreateInstance <AssetValidatorOverrideConfig>());
        }
        /// <summary>
        /// Constructor that accepts the <see cref="LogCache"/> <paramref name="logCache"/> that logs will be
        /// stored in and the <see cref="SceneValidationMode"/> <paramref name="validationMode"/> that scenes
        /// will be validated in (if any).
        /// </summary>
        /// <param name="logCache"></param>
        /// <param name="validationMode"></param>
        public AssetValidatorRunner(LogCache logCache, SceneValidationMode validationMode)
        {
            _scenePaths = ProjectTools.GetScenePaths(validationMode);

            _logCache = logCache;

            _cache = new ClassTypeCache();

            // Ensure any unit test types do not get picked up for validation.
            _cache.IgnoreType <MonoBehaviourTwo>();
            _cache.IgnoreAttribute <OnlyIncludeInTestsAttribute>();

            // Find all objects for validation
            _cache.AddTypeWithAttribute <MonoBehaviour, ValidateAttribute>();

            // Add all disabled logs for this run
            AssetValidatorOverrideConfig.FindOrCreate().AddDisabledLogs(logCache);

            _isRunning   = true;
            _runningTime = EditorApplication.timeSinceStartup;
        }
        /// <summary>
        /// Constructor to create a pre-filled <see cref="ProjectValidatorCache"/>.
        /// </summary>
        public ProjectValidatorCache()
        {
            _validators = new List <ProjectValidatorBase>();

            // Make sure any overriden disabled types are not included
            var overrideConfig = AssetValidatorOverrideConfig.FindOrCreate();

            // Get and add all field validators, excluding override disabled ones.
            var pvs = ReflectionTools.GetAllDerivedInstancesOfTypeWithAttribute <ProjectValidatorBase, ValidatorAttribute>();

            foreach (var projectValidator in pvs)
            {
                var t = projectValidator.GetType();

                AssetValidatorOverrideConfig.OverrideItem overrideItem;
                if (overrideConfig.TryGetOverrideConfigItem(t, out overrideItem) && overrideItem.enabled)
                {
                    _validators.Add(projectValidator);
                }
            }
        }
        /// <summary>
        /// Constructor to create a pre-filled <see cref="CrossSceneValidatorCache"/>.
        /// </summary>
        public CrossSceneValidatorCache()
        {
            // Find all non-abstract derived instances of CrossSceneValidatorBase
            var validators = ReflectionTools.GetAllDerivedInstancesOfType <CrossSceneValidatorBase>();

            _validators = new List <CrossSceneValidatorBase>();

            // Make sure any overriden, disabled validator types are not included
            var overrideConfig = AssetValidatorOverrideConfig.FindOrCreate();

            foreach (var baseCrossSceneValidator in validators)
            {
                var t = baseCrossSceneValidator.GetType();

                AssetValidatorOverrideConfig.OverrideItem overrideItem;
                if (overrideConfig.TryGetOverrideConfigItem(t, out overrideItem) && overrideItem.enabled)
                {
                    _validators.Add(baseCrossSceneValidator);
                }
            }
        }
 private void OnEnable()
 {
     _config = (AssetValidatorOverrideConfig)target;
     _config.FindAndAddMissingTypes();
 }