Skip to content

Commit 8399d04

Browse files
committed
Update RequiredAttributeValidator
Fix required attribute validator by adding flags when getting the fields.
1 parent b4dd874 commit 8399d04

3 files changed

Lines changed: 17 additions & 28 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# Change Log:
2+
## 0.1.4
3+
- Fix attribute validator..?
24
## 0.1.3
35
- Fix attribute validator..?
4-
- ## 0.1.2
6+
## 0.1.2
57
- ...
68
## 0.1.1
79
- First prototype of Attribute validator.

Editor/Validators/RequiredAttributeValidator.cs

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ public class RequiredAttributeAssetValidator : IValidator
1010
{
1111
public string MenuName => "Attributes/RequiredAttributeAssetValidator";
1212

13+
private const BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
14+
1315
public Report Validate()
1416
{
1517
Report report = new Report(nameof(RequiredAttributeAssetValidator));
@@ -20,36 +22,19 @@ public Report Validate()
2022
{
2123
EditorUtility.DisplayProgressBar("RequiredAttributeAssetValidator", "RequiredAttribute...", (float)i / objects.Count);
2224

23-
FieldInfo[] fields = objects[i].GetType().GetFields();
25+
IEnumerable<(FieldInfo FieldInfo, RequiredAttribute Attribute)> fieldsWithRequiredAttribute = from fi in objects[i].GetType().GetFields(flags)
26+
let attr = fi.GetCustomAttributes(typeof(RequiredAttribute), true)
27+
where attr.Length == 1
28+
select (FieldInfo: fi, Attribute: attr.First() as RequiredAttribute);
2429

25-
for (int j = 0; j < fields.Length; j++)
30+
foreach ((FieldInfo FieldInfo, RequiredAttribute Attribute) field in fieldsWithRequiredAttribute)
2631
{
27-
object[] attr = fields[j].GetCustomAttributes(typeof(RequiredAttribute), true);
28-
29-
if(attr.Length > 0 && attr[0] is RequiredAttribute requiredAttribute)
32+
object o = field.FieldInfo.GetValue(objects[i]);
33+
if (o == null || o.Equals(null))
3034
{
31-
object o = fields[j].GetValue(objects[i]);
32-
33-
if (o == null || o.Equals(null))
34-
{
35-
report.Log(objects[i], requiredAttribute.WarningType, requiredAttribute.Category, $"{fields[j].Name} is null", $"Assign {fields[j].FieldType}");
36-
}
35+
report.Log(objects[i], field.Attribute.WarningType, field.Attribute.Category, $"{field.FieldInfo.Name} is null", $"Assign {field.FieldInfo.FieldType}");
3736
}
3837
}
39-
40-
//IEnumerable<(FieldInfo FieldInfo, RequiredAttribute Attribute)> fieldsWithRequiredAttribute = from fi in objects[i].GetType().GetFields()
41-
// let attr = fi.GetCustomAttributes(typeof(RequiredAttribute), true)
42-
// where attr.Length == 1
43-
// select (FieldInfo: fi, Attribute: attr.First() as RequiredAttribute);
44-
45-
//foreach ((FieldInfo FieldInfo, RequiredAttribute Attribute) field in fieldsWithRequiredAttribute)
46-
//{
47-
// object o = field.FieldInfo.GetValue(objects[i]);
48-
// if (o == null || o.Equals(null))
49-
// {
50-
// report.Log(objects[i], field.Attribute.WarningType, field.Attribute.Category, $"{field.FieldInfo.Name} is null", $"Assign {field.FieldInfo.FieldType}");
51-
// }
52-
//}
5338
}
5439
EditorUtility.ClearProgressBar();
5540

@@ -61,6 +46,8 @@ public class RequiredAttributeSceneValidator : IValidator
6146
{
6247
public string MenuName => "Attributes/RequiredAttributeSceneValidator";
6348

49+
private const BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
50+
6451
public Report Validate()
6552
{
6653
Report report = new Report(nameof(RequiredAttributeSceneValidator));
@@ -70,7 +57,7 @@ public Report Validate()
7057
for (int i = 0; i < objects.Count; i++)
7158
{
7259
EditorUtility.DisplayProgressBar("RequiredAttributeSceneValidator", "RequiredAttribute...", (float)i / objects.Count);
73-
IEnumerable<(FieldInfo FieldInfo, RequiredAttribute Attribute)> fieldsWithRequiredAttribute = from fi in objects[i].GetType().GetFields()
60+
IEnumerable<(FieldInfo FieldInfo, RequiredAttribute Attribute)> fieldsWithRequiredAttribute = from fi in objects[i].GetType().GetFields(flags)
7461
let attr = fi.GetCustomAttributes(typeof(RequiredAttribute), true)
7562
where attr.Length == 1
7663
select (FieldInfo: fi, Attribute: attr.First() as RequiredAttribute);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "com.vertexcolor.validator",
33
"displayName": "Validator",
4-
"version": "0.1.3",
4+
"version": "0.1.4",
55
"unity": "2019.3",
66
"description": "Unity project validator framework.",
77
"category": "Tool",

0 commit comments

Comments
 (0)