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,
IsAttribute,
Constructor,
HasMethods,
HasFields,
HasProperties,
HasNestedTypes,
MethodsInclude,
MethodsExclude,
MethodsCount,
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);
HandleMapping(remap);
ScoreMapping(remap);
}
ChooseBestMatches();
@ -74,11 +74,11 @@ public class Remapper
/// Loop over all types in the assembly and score them
/// </summary>
/// <param name="mapping">Mapping to score</param>
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
/// <param name="remap">Remap to check against</param>
/// <param name="parentTypeName"></param>
/// <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
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)

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;
}

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);
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));
}
}
}

View File

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