Fix rename failure reason handling

This commit is contained in:
Cj 2024-06-14 16:18:43 -04:00
parent 2ea961ee5b
commit ba71021665
9 changed files with 55 additions and 20 deletions

View File

@ -14,8 +14,16 @@ public enum EFailureReason
HasAttribute, HasAttribute,
IsAttribute, IsAttribute,
Constructor, Constructor,
HasMethods, MethodsInclude,
HasFields, MethodsExclude,
HasProperties, MethodsCount,
HasNestedTypes, FieldsInclude,
FieldsExclude,
FieldsCount,
PropertiesInclude,
PropertiesExclude,
PropertiesCount,
NestedTypeInclude,
NestedTypeExclude,
NestedTypeCount,
} }

View File

@ -31,7 +31,7 @@ public class Remapper
{ {
Logger.Log($"Finding best match for {remap.NewTypeName}...", ConsoleColor.Gray); Logger.Log($"Finding best match for {remap.NewTypeName}...", ConsoleColor.Gray);
HandleMapping(remap); ScoreMapping(remap);
} }
ChooseBestMatches(); ChooseBestMatches();
@ -74,11 +74,11 @@ public class Remapper
/// Loop over all types in the assembly and score them /// Loop over all types in the assembly and score them
/// </summary> /// </summary>
/// <param name="mapping">Mapping to score</param> /// <param name="mapping">Mapping to score</param>
private void HandleMapping(RemapModel mapping) public void ScoreMapping(RemapModel mapping)
{ {
foreach (var type in DataProvider.ModuleDefinition.Types) foreach (var type in DataProvider.ModuleDefinition.Types)
{ {
var _ = FindMatch(type, mapping); FindMatch(type, mapping);
} }
} }
@ -89,13 +89,13 @@ public class Remapper
/// <param name="remap">Remap to check against</param> /// <param name="remap">Remap to check against</param>
/// <param name="parentTypeName"></param> /// <param name="parentTypeName"></param>
/// <returns>EMatchResult</returns> /// <returns>EMatchResult</returns>
private EMatchResult FindMatch(TypeDefinition type, RemapModel remap) private void FindMatch(TypeDefinition type, RemapModel remap)
{ {
// Handle Direct Remaps by strict naming first bypasses everything else // Handle Direct Remaps by strict naming first bypasses everything else
if (remap.UseForceRename) if (remap.UseForceRename)
{ {
HandleByDirectName(type, remap); HandleByDirectName(type, remap);
return EMatchResult.HandleDirect; return;
} }
foreach (var nestedType in type.NestedTypes) foreach (var nestedType in type.NestedTypes)
@ -132,7 +132,8 @@ public class Remapper
if (NoMatch == EMatchResult.NoMatch) if (NoMatch == EMatchResult.NoMatch)
{ {
return NoMatch; remap.FailureReason = score.FailureReason;
return;
} }
var match = matches.Where(x => x.Equals(EMatchResult.Match)).Any(); var match = matches.Where(x => x.Equals(EMatchResult.Match)).Any();
@ -145,10 +146,7 @@ public class Remapper
remap.Succeeded = true; remap.Succeeded = true;
remap.FailureReason = EFailureReason.None; remap.FailureReason = EFailureReason.None;
score.AddScoreToResult(); score.AddScoreToResult();
return EMatchResult.Match;
} }
return EMatchResult.Disabled;
} }
private void HandleByDirectName(TypeDefinition type, RemapModel remap) private void HandleByDirectName(TypeDefinition type, RemapModel remap)

View File

@ -20,9 +20,10 @@ internal static class Fields
var matches = type.Fields var matches = type.Fields
.Where(field => parms.IncludeFields.Contains(field.Name)); .Where(field => parms.IncludeFields.Contains(field.Name));
score.Score += matches.Count(); score.Score += matches.Count();
score.FailureReason = matches.Any() ? EFailureReason.None : EFailureReason.FieldsInclude;
return matches.Any() return matches.Any()
? EMatchResult.Match ? EMatchResult.Match
: EMatchResult.NoMatch; : EMatchResult.NoMatch;
@ -45,6 +46,8 @@ internal static class Fields
score.Score += matches; score.Score += matches;
score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.FieldsExclude;
return matches > 0 return matches > 0
? EMatchResult.NoMatch ? EMatchResult.NoMatch
: EMatchResult.Match; : EMatchResult.Match;
@ -65,6 +68,8 @@ internal static class Fields
if (match) { score.Score++; } if (match) { score.Score++; }
score.FailureReason = match ? EFailureReason.None : EFailureReason.FieldsCount;
return match return match
? EMatchResult.Match ? EMatchResult.Match
: EMatchResult.NoMatch; : EMatchResult.NoMatch;

View File

@ -24,6 +24,8 @@ internal static class Methods
score.Score += matches; score.Score += matches;
score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.MethodsInclude;
return matches > 0 return matches > 0
? EMatchResult.Match ? EMatchResult.Match
: EMatchResult.NoMatch; : EMatchResult.NoMatch;
@ -46,6 +48,8 @@ internal static class Methods
score.Score += matches; score.Score += matches;
score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.MethodsExclude;
return matches > 0 return matches > 0
? EMatchResult.NoMatch ? EMatchResult.NoMatch
: EMatchResult.Match; : EMatchResult.Match;
@ -67,6 +71,8 @@ internal static class Methods
if (match) { score.Score++; } if (match) { score.Score++; }
score.FailureReason = match ? EFailureReason.None : EFailureReason.MethodsCount;
return match return match
? EMatchResult.Match ? EMatchResult.Match
: EMatchResult.NoMatch; : EMatchResult.NoMatch;

View File

@ -14,9 +14,10 @@ internal class NestedTypes
var matches = type.NestedTypes var matches = type.NestedTypes
.Where(nt => parms.IncludeNestedTypes.Contains(nt.Name)) .Where(nt => parms.IncludeNestedTypes.Contains(nt.Name))
.Count(); .Count();
score.Score += matches; score.Score += matches;
score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.NestedTypeInclude;
return matches > 0 return matches > 0
? EMatchResult.Match ? EMatchResult.Match
: EMatchResult.NoMatch; : EMatchResult.NoMatch;
@ -32,6 +33,8 @@ internal class NestedTypes
score.Score += matches; score.Score += matches;
score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.NestedTypeExclude;
return matches > 0 return matches > 0
? EMatchResult.NoMatch ? EMatchResult.NoMatch
: EMatchResult.Match; : EMatchResult.Match;
@ -45,6 +48,8 @@ internal class NestedTypes
if (match) { score.Score++; } if (match) { score.Score++; }
score.FailureReason = match ? EFailureReason.None : EFailureReason.NestedTypeCount;
return match return match
? EMatchResult.Match ? EMatchResult.Match
: EMatchResult.NoMatch; : EMatchResult.NoMatch;

View File

@ -14,9 +14,10 @@ namespace AssemblyRemapper.Remapper.Search
var matches = type.Properties var matches = type.Properties
.Where(property => parms.IncludeProperties.Contains(property.Name)) .Where(property => parms.IncludeProperties.Contains(property.Name))
.Count(); .Count();
score.Score += matches; score.Score += matches;
score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.PropertiesInclude;
return matches > 0 return matches > 0
? EMatchResult.Match ? EMatchResult.Match
: EMatchResult.NoMatch; : EMatchResult.NoMatch;
@ -32,6 +33,8 @@ namespace AssemblyRemapper.Remapper.Search
score.Score += matches; score.Score += matches;
score.FailureReason = matches > 0 ? EFailureReason.None : EFailureReason.PropertiesExclude;
return matches > 0 return matches > 0
? EMatchResult.NoMatch ? EMatchResult.NoMatch
: EMatchResult.Match; : EMatchResult.Match;
@ -45,6 +48,8 @@ namespace AssemblyRemapper.Remapper.Search
if (match) { score.Score++; } if (match) { score.Score++; }
score.FailureReason = match ? EFailureReason.None : EFailureReason.PropertiesCount;
return match return match
? EMatchResult.Match ? EMatchResult.Match
: EMatchResult.NoMatch; : EMatchResult.NoMatch;

View File

@ -18,6 +18,7 @@ internal static class TypeDefExtensions
// Interfaces cannot be abstract, and abstract cannot be static // Interfaces cannot be abstract, and abstract cannot be static
if (type.IsInterface || type.GetStaticConstructor() is not null) if (type.IsInterface || type.GetStaticConstructor() is not null)
{ {
score.FailureReason = EFailureReason.IsAbstract;
return EMatchResult.NoMatch; return EMatchResult.NoMatch;
} }
@ -58,6 +59,9 @@ internal static class TypeDefExtensions
if (type.IsNested == parms.IsNested) if (type.IsNested == parms.IsNested)
{ {
score.Score++; score.Score++;
Logger.Log($"Match {type.Name}");
Logger.Log($"Match {parms.IsNested}");
Logger.Log($"type: {type.IsNested} \n");
return EMatchResult.Match; return EMatchResult.Match;
} }
@ -102,6 +106,7 @@ internal static class TypeDefExtensions
if (type.BaseType?.Name == parms.IgnoreBaseClass) if (type.BaseType?.Name == parms.IgnoreBaseClass)
{ {
score.FailureReason = EFailureReason.IsDerived;
return EMatchResult.NoMatch; return EMatchResult.NoMatch;
} }

View File

@ -84,7 +84,7 @@ namespace AssemblyRemapperGUI
} }
}; };
RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap)); RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap, this));
DataProvider.Remaps.Add(remap); DataProvider.Remaps.Add(remap);
ResetAll(); ResetAll();
} }
@ -99,6 +99,8 @@ namespace AssemblyRemapperGUI
{ {
if (Remapper.IsRunning) { return; } if (Remapper.IsRunning) { return; }
Console.Clear();
Remapper.InitializeRemap(); Remapper.InitializeRemap();
} }
@ -135,7 +137,7 @@ namespace AssemblyRemapperGUI
foreach (var remap in DataProvider.Remaps) 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) foreach (var remap in DataProvider.Remaps)
{ {
RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap)); RemapTreeView.Nodes.Add(GUI.GenerateTreeNode(remap, this));
} }
} }
} }

View File

@ -1,4 +1,5 @@
using AssemblyRemapper.Models; using AssemblyRemapper.Models;
using AssemblyRemapperGUI;
namespace RemapperGUI.Utils; namespace RemapperGUI.Utils;
@ -59,7 +60,7 @@ internal static class GUI
/// </summary> /// </summary>
/// <param name="model"></param> /// <param name="model"></param>
/// <returns></returns> /// <returns></returns>
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 isPublic = model.SearchParams.IsPublic == null ? null : model.SearchParams.IsPublic;
var isAbstract = model.SearchParams.IsAbstract == null ? null : model.SearchParams.IsAbstract; var isAbstract = model.SearchParams.IsAbstract == null ? null : model.SearchParams.IsAbstract;