1
0
mirror of https://github.com/maxartz15/Validator.git synced 2024-11-09 14:52:53 +01:00

Update RequiredAttributeValidator

Fix required attribute validator by adding flags when getting the fields.
This commit is contained in:
max 2022-05-04 00:39:01 +02:00
parent b4dd8744df
commit 8399d043f5
3 changed files with 17 additions and 28 deletions

View File

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

View File

@ -10,6 +10,8 @@ namespace Validator.Editor
{ {
public string MenuName => "Attributes/RequiredAttributeAssetValidator"; public string MenuName => "Attributes/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));
@ -20,37 +22,20 @@ namespace Validator.Editor
{ {
EditorUtility.DisplayProgressBar("RequiredAttributeAssetValidator", "RequiredAttribute...", (float)i / objects.Count); EditorUtility.DisplayProgressBar("RequiredAttributeAssetValidator", "RequiredAttribute...", (float)i / objects.Count);
FieldInfo[] fields = 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)
where attr.Length == 1
select (FieldInfo: fi, Attribute: attr.First() as RequiredAttribute);
for (int j = 0; j < fields.Length; j++) foreach ((FieldInfo FieldInfo, RequiredAttribute Attribute) field in fieldsWithRequiredAttribute)
{ {
object[] attr = fields[j].GetCustomAttributes(typeof(RequiredAttribute), true); object o = field.FieldInfo.GetValue(objects[i]);
if(attr.Length > 0 && attr[0] is RequiredAttribute requiredAttribute)
{
object o = fields[j].GetValue(objects[i]);
if (o == null || o.Equals(null)) if (o == null || o.Equals(null))
{ {
report.Log(objects[i], requiredAttribute.WarningType, requiredAttribute.Category, $"{fields[j].Name} is null", $"Assign {fields[j].FieldType}"); report.Log(objects[i], field.Attribute.WarningType, field.Attribute.Category, $"{field.FieldInfo.Name} is null", $"Assign {field.FieldInfo.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(); EditorUtility.ClearProgressBar();
return report; return report;
@ -61,6 +46,8 @@ namespace Validator.Editor
{ {
public string MenuName => "Attributes/RequiredAttributeSceneValidator"; public string MenuName => "Attributes/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));
@ -70,7 +57,7 @@ namespace Validator.Editor
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,7 +1,7 @@
{ {
"name": "com.vertexcolor.validator", "name": "com.vertexcolor.validator",
"displayName": "Validator", "displayName": "Validator",
"version": "0.1.3", "version": "0.1.4",
"unity": "2019.3", "unity": "2019.3",
"description": "Unity project validator framework.", "description": "Unity project validator framework.",
"category": "Tool", "category": "Tool",