From ba71021665cdc25b523de38405b0923496aee032 Mon Sep 17 00:00:00 2001
From: Cj <161484149+CJ-SPT@users.noreply.github.com>
Date: Fri, 14 Jun 2024 16:18:43 -0400
Subject: [PATCH] Fix rename failure reason handling
---
AssemblyRemapper/Enums/EFailureReason.cs | 16 ++++++++++++----
AssemblyRemapper/Remapper/Remapper.cs | 16 +++++++---------
AssemblyRemapper/Remapper/Search/Fields.cs | 7 ++++++-
AssemblyRemapper/Remapper/Search/Methods.cs | 6 ++++++
AssemblyRemapper/Remapper/Search/NestedTypes.cs | 7 ++++++-
AssemblyRemapper/Remapper/Search/Properties.cs | 7 ++++++-
.../Remapper/Search/TypeDefExtensions.cs | 5 +++++
AssemblyRemapperGUI/Form1.cs | 8 +++++---
AssemblyRemapperGUI/Utils/GUI.cs | 3 ++-
9 files changed, 55 insertions(+), 20 deletions(-)
diff --git a/AssemblyRemapper/Enums/EFailureReason.cs b/AssemblyRemapper/Enums/EFailureReason.cs
index 3964b11..a7894b0 100644
--- a/AssemblyRemapper/Enums/EFailureReason.cs
+++ b/AssemblyRemapper/Enums/EFailureReason.cs
@@ -14,8 +14,16 @@ public enum EFailureReason
HasAttribute,
IsAttribute,
Constructor,
- HasMethods,
- HasFields,
- HasProperties,
- HasNestedTypes,
+ MethodsInclude,
+ MethodsExclude,
+ MethodsCount,
+ FieldsInclude,
+ FieldsExclude,
+ FieldsCount,
+ PropertiesInclude,
+ PropertiesExclude,
+ PropertiesCount,
+ NestedTypeInclude,
+ NestedTypeExclude,
+ NestedTypeCount,
}
\ No newline at end of file
diff --git a/AssemblyRemapper/Remapper/Remapper.cs b/AssemblyRemapper/Remapper/Remapper.cs
index f7e6733..b3e588c 100644
--- a/AssemblyRemapper/Remapper/Remapper.cs
+++ b/AssemblyRemapper/Remapper/Remapper.cs
@@ -31,7 +31,7 @@ public class Remapper
{
Logger.Log($"Finding best match for {remap.NewTypeName}...", ConsoleColor.Gray);
- HandleMapping(remap);
+ ScoreMapping(remap);
}
ChooseBestMatches();
@@ -74,11 +74,11 @@ public class Remapper
/// Loop over all types in the assembly and score them
///
/// Mapping to score
- private void HandleMapping(RemapModel mapping)
+ public void ScoreMapping(RemapModel mapping)
{
foreach (var type in DataProvider.ModuleDefinition.Types)
{
- var _ = FindMatch(type, mapping);
+ FindMatch(type, mapping);
}
}
@@ -89,13 +89,13 @@ public class Remapper
/// Remap to check against
///
/// EMatchResult
- private EMatchResult FindMatch(TypeDefinition type, RemapModel remap)
+ private void FindMatch(TypeDefinition type, RemapModel remap)
{
// Handle Direct Remaps by strict naming first bypasses everything else
if (remap.UseForceRename)
{
HandleByDirectName(type, remap);
- return EMatchResult.HandleDirect;
+ return;
}
foreach (var nestedType in type.NestedTypes)
@@ -132,7 +132,8 @@ public class Remapper
if (NoMatch == EMatchResult.NoMatch)
{
- return NoMatch;
+ remap.FailureReason = score.FailureReason;
+ return;
}
var match = matches.Where(x => x.Equals(EMatchResult.Match)).Any();
@@ -145,10 +146,7 @@ public class Remapper
remap.Succeeded = true;
remap.FailureReason = EFailureReason.None;
score.AddScoreToResult();
- return EMatchResult.Match;
}
-
- return EMatchResult.Disabled;
}
private void HandleByDirectName(TypeDefinition type, RemapModel remap)
diff --git a/AssemblyRemapper/Remapper/Search/Fields.cs b/AssemblyRemapper/Remapper/Search/Fields.cs
index 75284fa..d884df7 100644
--- a/AssemblyRemapper/Remapper/Search/Fields.cs
+++ b/AssemblyRemapper/Remapper/Search/Fields.cs
@@ -20,9 +20,10 @@ internal static class Fields
var matches = type.Fields
.Where(field => parms.IncludeFields.Contains(field.Name));
-
score.Score += matches.Count();
+ score.FailureReason = matches.Any() ? EFailureReason.None : EFailureReason.FieldsInclude;
+
return matches.Any()
? EMatchResult.Match
: EMatchResult.NoMatch;
@@ -45,6 +46,8 @@ internal static class Fields
score.Score += matches;
+ score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.FieldsExclude;
+
return matches > 0
? EMatchResult.NoMatch
: EMatchResult.Match;
@@ -65,6 +68,8 @@ internal static class Fields
if (match) { score.Score++; }
+ score.FailureReason = match ? EFailureReason.None : EFailureReason.FieldsCount;
+
return match
? EMatchResult.Match
: EMatchResult.NoMatch;
diff --git a/AssemblyRemapper/Remapper/Search/Methods.cs b/AssemblyRemapper/Remapper/Search/Methods.cs
index 45ac3ac..4f28780 100644
--- a/AssemblyRemapper/Remapper/Search/Methods.cs
+++ b/AssemblyRemapper/Remapper/Search/Methods.cs
@@ -24,6 +24,8 @@ internal static class Methods
score.Score += matches;
+ score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.MethodsInclude;
+
return matches > 0
? EMatchResult.Match
: EMatchResult.NoMatch;
@@ -46,6 +48,8 @@ internal static class Methods
score.Score += matches;
+ score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.MethodsExclude;
+
return matches > 0
? EMatchResult.NoMatch
: EMatchResult.Match;
@@ -67,6 +71,8 @@ internal static class Methods
if (match) { score.Score++; }
+ score.FailureReason = match ? EFailureReason.None : EFailureReason.MethodsCount;
+
return match
? EMatchResult.Match
: EMatchResult.NoMatch;
diff --git a/AssemblyRemapper/Remapper/Search/NestedTypes.cs b/AssemblyRemapper/Remapper/Search/NestedTypes.cs
index f00ec34..c0467cb 100644
--- a/AssemblyRemapper/Remapper/Search/NestedTypes.cs
+++ b/AssemblyRemapper/Remapper/Search/NestedTypes.cs
@@ -14,9 +14,10 @@ internal class NestedTypes
var matches = type.NestedTypes
.Where(nt => parms.IncludeNestedTypes.Contains(nt.Name))
.Count();
-
score.Score += matches;
+ score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.NestedTypeInclude;
+
return matches > 0
? EMatchResult.Match
: EMatchResult.NoMatch;
@@ -32,6 +33,8 @@ internal class NestedTypes
score.Score += matches;
+ score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.NestedTypeExclude;
+
return matches > 0
? EMatchResult.NoMatch
: EMatchResult.Match;
@@ -45,6 +48,8 @@ internal class NestedTypes
if (match) { score.Score++; }
+ score.FailureReason = match ? EFailureReason.None : EFailureReason.NestedTypeCount;
+
return match
? EMatchResult.Match
: EMatchResult.NoMatch;
diff --git a/AssemblyRemapper/Remapper/Search/Properties.cs b/AssemblyRemapper/Remapper/Search/Properties.cs
index 2bf1092..3826e73 100644
--- a/AssemblyRemapper/Remapper/Search/Properties.cs
+++ b/AssemblyRemapper/Remapper/Search/Properties.cs
@@ -14,9 +14,10 @@ namespace AssemblyRemapper.Remapper.Search
var matches = type.Properties
.Where(property => parms.IncludeProperties.Contains(property.Name))
.Count();
-
score.Score += matches;
+ score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.PropertiesInclude;
+
return matches > 0
? EMatchResult.Match
: EMatchResult.NoMatch;
@@ -32,6 +33,8 @@ namespace AssemblyRemapper.Remapper.Search
score.Score += matches;
+ score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.PropertiesExclude;
+
return matches > 0
? EMatchResult.NoMatch
: EMatchResult.Match;
@@ -45,6 +48,8 @@ namespace AssemblyRemapper.Remapper.Search
if (match) { score.Score++; }
+ score.FailureReason = match ? EFailureReason.None : EFailureReason.PropertiesCount;
+
return match
? EMatchResult.Match
: EMatchResult.NoMatch;
diff --git a/AssemblyRemapper/Remapper/Search/TypeDefExtensions.cs b/AssemblyRemapper/Remapper/Search/TypeDefExtensions.cs
index a2e2d7d..f8d18bf 100644
--- a/AssemblyRemapper/Remapper/Search/TypeDefExtensions.cs
+++ b/AssemblyRemapper/Remapper/Search/TypeDefExtensions.cs
@@ -18,6 +18,7 @@ internal static class TypeDefExtensions
// Interfaces cannot be abstract, and abstract cannot be static
if (type.IsInterface || type.GetStaticConstructor() is not null)
{
+ score.FailureReason = EFailureReason.IsAbstract;
return EMatchResult.NoMatch;
}
@@ -58,6 +59,9 @@ internal static class TypeDefExtensions
if (type.IsNested == parms.IsNested)
{
score.Score++;
+ Logger.Log($"Match {type.Name}");
+ Logger.Log($"Match {parms.IsNested}");
+ Logger.Log($"type: {type.IsNested} \n");
return EMatchResult.Match;
}
@@ -102,6 +106,7 @@ internal static class TypeDefExtensions
if (type.BaseType?.Name == parms.IgnoreBaseClass)
{
+ score.FailureReason = EFailureReason.IsDerived;
return EMatchResult.NoMatch;
}
diff --git a/AssemblyRemapperGUI/Form1.cs b/AssemblyRemapperGUI/Form1.cs
index 23c7103..04ae10b 100644
--- a/AssemblyRemapperGUI/Form1.cs
+++ b/AssemblyRemapperGUI/Form1.cs
@@ -84,7 +84,7 @@ namespace AssemblyRemapperGUI
}
};
- RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap));
+ RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap, this));
DataProvider.Remaps.Add(remap);
ResetAll();
}
@@ -99,6 +99,8 @@ namespace AssemblyRemapperGUI
{
if (Remapper.IsRunning) { return; }
+ Console.Clear();
+
Remapper.InitializeRemap();
}
@@ -135,7 +137,7 @@ namespace AssemblyRemapperGUI
foreach (var remap in DataProvider.Remaps)
{
- RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap));
+ RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap, this));
}
}
@@ -348,7 +350,7 @@ namespace AssemblyRemapperGUI
foreach (var remap in DataProvider.Remaps)
{
- RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap));
+ RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap, this));
}
}
}
diff --git a/AssemblyRemapperGUI/Utils/GUI.cs b/AssemblyRemapperGUI/Utils/GUI.cs
index 5465be7..c322880 100644
--- a/AssemblyRemapperGUI/Utils/GUI.cs
+++ b/AssemblyRemapperGUI/Utils/GUI.cs
@@ -1,4 +1,5 @@
using AssemblyRemapper.Models;
+using AssemblyRemapperGUI;
namespace RemapperGUI.Utils;
@@ -59,7 +60,7 @@ internal static class GUI
///
///
///
- public static TreeNode GenerateTreeNode(RemapModel model)
+ public static TreeNode GenerateTreeNode(RemapModel model, AssemblyToolGUI gui)
{
var isPublic = model.SearchParams.IsPublic == null ? null : model.SearchParams.IsPublic;
var isAbstract = model.SearchParams.IsAbstract == null ? null : model.SearchParams.IsAbstract;