1
0
mirror of https://github.com/maxartz15/Validator.git synced 2025-07-04 22:46:06 +02:00

Compare commits

..

4 Commits

Author SHA1 Message Date
max
5b70e24c32 Changed naming and tabs 2022-07-21 02:03:11 +02:00
max
15808ce035 Changed MenuName of attribute validators 2022-05-07 02:02:33 +02:00
max
8399d043f5 Update RequiredAttributeValidator
Fix required attribute validator by adding flags when getting the fields.
2022-05-04 00:39:01 +02:00
max
b4dd8744df Fix attribute 2022-05-03 21:11:12 +02:00
12 changed files with 439 additions and 428 deletions

View File

@ -1,4 +1,10 @@
# Change Log: # Change Log:
## 0.1.4
- Fix attribute validator..?
## 0.1.3
- Fix attribute validator..?
## 0.1.2
- ...
## 0.1.1 ## 0.1.1
- First prototype of Attribute validator. - First prototype of Attribute validator.
## 0.1.1 ## 0.1.1

View File

@ -8,18 +8,21 @@ namespace Validator.Editor
{ {
public class RequiredAttributeAssetValidator : IValidator public class RequiredAttributeAssetValidator : IValidator
{ {
public string MenuName => "Attributes/RequiredAttributeAssetValidator"; public string MenuName => nameof(RequiredAttributeAssetValidator);
private const BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
public Report Validate() public Report Validate()
{ {
Report report = new Report(nameof(RequiredAttributeAssetValidator)); Report report = new Report(nameof(RequiredAttributeAssetValidator));
List<Object> objects = AssetValidator.FindAssetsByType<Object>(); List<Object> objects = ValidatableAssetValidator.FindAssetsByType<Object>();
for (int i = 0; i < objects.Count; i++) for (int i = 0; i < objects.Count; i++)
{ {
EditorUtility.DisplayProgressBar("RequiredAttributeAssetValidator", "RequiredAttribute...", (float)i / objects.Count); EditorUtility.DisplayProgressBar("RequiredAttributeAssetValidator", "RequiredAttribute...", (float)i / objects.Count);
IEnumerable<(FieldInfo FieldInfo, RequiredAttribute Attribute)> fieldsWithRequiredAttribute = from fi in objects[i].GetType().GetFields()
IEnumerable<(FieldInfo FieldInfo, RequiredAttribute Attribute)> fieldsWithRequiredAttribute = from fi in objects[i].GetType().GetFields(flags)
let attr = fi.GetCustomAttributes(typeof(RequiredAttribute), true) let attr = fi.GetCustomAttributes(typeof(RequiredAttribute), true)
where attr.Length == 1 where attr.Length == 1
select (FieldInfo: fi, Attribute: attr.First() as RequiredAttribute); select (FieldInfo: fi, Attribute: attr.First() as RequiredAttribute);
@ -41,18 +44,20 @@ namespace Validator.Editor
public class RequiredAttributeSceneValidator : IValidator public class RequiredAttributeSceneValidator : IValidator
{ {
public string MenuName => "Attributes/RequiredAttributeSceneValidator"; public string MenuName => nameof(RequiredAttributeSceneValidator);
private const BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
public Report Validate() public Report Validate()
{ {
Report report = new Report(nameof(RequiredAttributeSceneValidator)); Report report = new Report(nameof(RequiredAttributeSceneValidator));
List<MonoBehaviour> objects = SceneValidator.FindAllObjectsOfType<MonoBehaviour>(); List<MonoBehaviour> objects = ValidatableSceneValidator.FindAllObjectsOfType<MonoBehaviour>();
for (int i = 0; i < objects.Count; i++) for (int i = 0; i < objects.Count; i++)
{ {
EditorUtility.DisplayProgressBar("RequiredAttributeSceneValidator", "RequiredAttribute...", (float)i / objects.Count); EditorUtility.DisplayProgressBar("RequiredAttributeSceneValidator", "RequiredAttribute...", (float)i / objects.Count);
IEnumerable<(FieldInfo FieldInfo, RequiredAttribute Attribute)> fieldsWithRequiredAttribute = from fi in objects[i].GetType().GetFields() IEnumerable<(FieldInfo FieldInfo, RequiredAttribute Attribute)> fieldsWithRequiredAttribute = from fi in objects[i].GetType().GetFields(flags)
let attr = fi.GetCustomAttributes(typeof(RequiredAttribute), true) let attr = fi.GetCustomAttributes(typeof(RequiredAttribute), true)
where attr.Length == 1 where attr.Length == 1
select (FieldInfo: fi, Attribute: attr.First() as RequiredAttribute); select (FieldInfo: fi, Attribute: attr.First() as RequiredAttribute);

View File

@ -1,57 +0,0 @@
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace Validator.Editor
{
public class SceneValidator : IValidator
{
public string MenuName => nameof(SceneValidator);
public Report Validate()
{
Report report = new Report(nameof(SceneValidator));
List<IValidatable> objects = FindAllObjectsOfType<IValidatable>();
for (int i = 0; i < objects.Count; i++)
{
EditorUtility.DisplayProgressBar("SceneValidator", "Validate...", (float)i / objects.Count);
objects[i].Validate(report);
}
EditorUtility.ClearProgressBar();
return report;
}
private static List<GameObject> GetAllRootGameObjects()
{
List<GameObject> gameObjects = new List<GameObject>();
for (int i = 0; i < SceneManager.sceneCount; i++)
{
EditorUtility.DisplayProgressBar("SceneValidator", "GetAllRootGameObjects...", (float)i / SceneManager.sceneCount);
gameObjects.AddRange(SceneManager.GetSceneAt(i).GetRootGameObjects());
}
EditorUtility.ClearProgressBar();
return gameObjects;
}
public static List<T> FindAllObjectsOfType<T>()
{
List<T> objects = new List<T>();
List<GameObject> gameObjects = GetAllRootGameObjects();
for (int i = 0; i < gameObjects.Count; i++)
{
EditorUtility.DisplayProgressBar("SceneValidator", "FindAllObjectsOfType...", (float)i / gameObjects.Count);
objects.AddRange(gameObjects[i].GetComponentsInChildren<T>(true));
}
EditorUtility.ClearProgressBar();
return objects;
}
}
}

View File

@ -4,13 +4,13 @@ using UnityEngine;
namespace Validator.Editor namespace Validator.Editor
{ {
public class AssetValidator : IValidator public class ValidatableAssetValidator : IValidator
{ {
public string MenuName => nameof(AssetValidator); public string MenuName => nameof(ValidatableAssetValidator);
public Report Validate() public Report Validate()
{ {
Report report = new Report(nameof(AssetValidator)); Report report = new Report(nameof(ValidatableAssetValidator));
List<Object> objects = FindAssetsByType<Object>(); List<Object> objects = FindAssetsByType<Object>();
for (int i = 0; i < objects.Count; i++) for (int i = 0; i < objects.Count; i++)

View File

@ -0,0 +1,57 @@
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace Validator.Editor
{
public class ValidatableSceneValidator : IValidator
{
public string MenuName => nameof(ValidatableSceneValidator);
public Report Validate()
{
Report report = new Report(nameof(ValidatableSceneValidator));
List<IValidatable> objects = FindAllObjectsOfType<IValidatable>();
for (int i = 0; i < objects.Count; i++)
{
EditorUtility.DisplayProgressBar("SceneValidator", "Validate...", (float)i / objects.Count);
objects[i].Validate(report);
}
EditorUtility.ClearProgressBar();
return report;
}
private static List<GameObject> GetAllRootGameObjects()
{
List<GameObject> gameObjects = new List<GameObject>();
for (int i = 0; i < SceneManager.sceneCount; i++)
{
EditorUtility.DisplayProgressBar("SceneValidator", "GetAllRootGameObjects...", (float)i / SceneManager.sceneCount);
gameObjects.AddRange(SceneManager.GetSceneAt(i).GetRootGameObjects());
}
EditorUtility.ClearProgressBar();
return gameObjects;
}
public static List<T> FindAllObjectsOfType<T>()
{
List<T> objects = new List<T>();
List<GameObject> gameObjects = GetAllRootGameObjects();
for (int i = 0; i < gameObjects.Count; i++)
{
EditorUtility.DisplayProgressBar("SceneValidator", "FindAllObjectsOfType...", (float)i / gameObjects.Count);
objects.AddRange(gameObjects[i].GetComponentsInChildren<T>(true));
}
EditorUtility.ClearProgressBar();
return objects;
}
}
}

View File

@ -1,7 +1,7 @@
{ {
"name": "com.vertexcolor.validator", "name": "com.vertexcolor.validator",
"displayName": "Validator", "displayName": "Validator",
"version": "0.1.2", "version": "0.1.4",
"unity": "2019.3", "unity": "2019.3",
"description": "Unity project validator framework.", "description": "Unity project validator framework.",
"category": "Tool", "category": "Tool",