mirror of
https://github.com/maxartz15/Validator.git
synced 2024-11-21 19:55:34 +01:00
Update RequiredAttributeValidator
Fix required attribute validator by adding flags when getting the fields.
This commit is contained in:
parent
b4dd8744df
commit
8399d043f5
@ -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.
|
||||||
|
@ -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,36 +22,19 @@ 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 (o == null || o.Equals(null))
|
||||||
if(attr.Length > 0 && attr[0] is RequiredAttribute requiredAttribute)
|
|
||||||
{
|
{
|
||||||
object o = fields[j].GetValue(objects[i]);
|
report.Log(objects[i], field.Attribute.WarningType, field.Attribute.Category, $"{field.FieldInfo.Name} is null", $"Assign {field.FieldInfo.FieldType}");
|
||||||
|
|
||||||
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();
|
EditorUtility.ClearProgressBar();
|
||||||
|
|
||||||
@ -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);
|
||||||
|
@ -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",
|
||||||
|
Loading…
Reference in New Issue
Block a user