From b4dd8744df79b7cb1643723853f0513e001dd665 Mon Sep 17 00:00:00 2001 From: max Date: Tue, 3 May 2022 21:11:12 +0200 Subject: [PATCH] Fix attribute --- CHANGELOG.md | 4 +++ .../Validators/RequiredAttributeValidator.cs | 34 ++++++++++++++----- package.json | 2 +- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 769c591..e2cb1f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,8 @@ # Change Log: +## 0.1.3 +- Fix attribute validator..? +- ## 0.1.2 +- ... ## 0.1.1 - First prototype of Attribute validator. ## 0.1.1 diff --git a/Editor/Validators/RequiredAttributeValidator.cs b/Editor/Validators/RequiredAttributeValidator.cs index 3c16e4f..8d73d43 100644 --- a/Editor/Validators/RequiredAttributeValidator.cs +++ b/Editor/Validators/RequiredAttributeValidator.cs @@ -19,19 +19,37 @@ namespace Validator.Editor for (int i = 0; i < objects.Count; i++) { EditorUtility.DisplayProgressBar("RequiredAttributeAssetValidator", "RequiredAttribute...", (float)i / objects.Count); - IEnumerable<(FieldInfo FieldInfo, RequiredAttribute Attribute)> fieldsWithRequiredAttribute = from fi in objects[i].GetType().GetFields() - let attr = fi.GetCustomAttributes(typeof(RequiredAttribute), true) - where attr.Length == 1 - select (FieldInfo: fi, Attribute: attr.First() as RequiredAttribute); - foreach ((FieldInfo FieldInfo, RequiredAttribute Attribute) field in fieldsWithRequiredAttribute) + FieldInfo[] fields = objects[i].GetType().GetFields(); + + for (int j = 0; j < fields.Length; j++) { - object o = field.FieldInfo.GetValue(objects[i]); - if (o == null || o.Equals(null)) + object[] attr = fields[j].GetCustomAttributes(typeof(RequiredAttribute), true); + + if(attr.Length > 0 && attr[0] is RequiredAttribute requiredAttribute) { - report.Log(objects[i], field.Attribute.WarningType, field.Attribute.Category, $"{field.FieldInfo.Name} is null", $"Assign {field.FieldInfo.FieldType}"); + object o = fields[j].GetValue(objects[i]); + + if (o == null || o.Equals(null)) + { + report.Log(objects[i], requiredAttribute.WarningType, requiredAttribute.Category, $"{fields[j].Name} is null", $"Assign {fields[j].FieldType}"); + } } } + + //IEnumerable<(FieldInfo FieldInfo, RequiredAttribute Attribute)> fieldsWithRequiredAttribute = from fi in objects[i].GetType().GetFields() + // let attr = fi.GetCustomAttributes(typeof(RequiredAttribute), true) + // where attr.Length == 1 + // select (FieldInfo: fi, Attribute: attr.First() as RequiredAttribute); + + //foreach ((FieldInfo FieldInfo, RequiredAttribute Attribute) field in fieldsWithRequiredAttribute) + //{ + // object o = field.FieldInfo.GetValue(objects[i]); + // if (o == null || o.Equals(null)) + // { + // report.Log(objects[i], field.Attribute.WarningType, field.Attribute.Category, $"{field.FieldInfo.Name} is null", $"Assign {field.FieldInfo.FieldType}"); + // } + //} } EditorUtility.ClearProgressBar(); diff --git a/package.json b/package.json index 2a733c0..9bbb6f7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.vertexcolor.validator", "displayName": "Validator", - "version": "0.1.2", + "version": "0.1.3", "unity": "2019.3", "description": "Unity project validator framework.", "category": "Tool",