From f847ab424d5575b63ca602dc09c25cc3c794314c Mon Sep 17 00:00:00 2001
From: Cj <161484149+CJ-SPT@users.noreply.github.com>
Date: Sun, 16 Jun 2024 16:21:42 -0400
Subject: [PATCH] Basic method support
---
RecodeItGUI/GUI/Main.Designer.cs | 237 ++++++++++++-------
RecodeItGUI/GUI/Main.cs | 41 +++-
RecodeItLib/AutoMapper/MappingPair.cs | 13 +
RecodeItLib/AutoMapper/ReCodeItAutoMapper.cs | 128 ++++++++--
RecodeItLib/Models/AppSettingsModel.cs | 4 +
Templates/Settings.jsonc | 3 +
6 files changed, 318 insertions(+), 108 deletions(-)
diff --git a/RecodeItGUI/GUI/Main.Designer.cs b/RecodeItGUI/GUI/Main.Designer.cs
index 9af44a8..90e73bf 100644
--- a/RecodeItGUI/GUI/Main.Designer.cs
+++ b/RecodeItGUI/GUI/Main.Designer.cs
@@ -101,6 +101,19 @@ partial class ReCodeItForm
IsSealedUpDown = new DomainUpDown();
TabControlMain = new TabControl();
AutoMapperTab = new TabPage();
+ AutoMapperMethodTextBox = new TextBox();
+ AutoMapperMethodRemoveButton = new Button();
+ AutoMapperMethodAddButton = new Button();
+ AutoMapperMethodBox = new ListBox();
+ AutoMapperSearchMethodsCheckBox = new CheckBox();
+ AutoMapperFPTextField = new TextBox();
+ AutoMapperFPRemoveButton = new Button();
+ AutoMapperFPAddButton = new Button();
+ AutoMapperFPBox = new ListBox();
+ AutoMapperTokensTextField = new TextBox();
+ AutoMapperTokensRemoveButton = new Button();
+ AutoMapperTokensAddButton = new Button();
+ AutoMapperTokensBox = new ListBox();
label3 = new Label();
AutoMapperMinLengthUpDown = new NumericUpDown();
RunAutoRemapButton = new Button();
@@ -128,14 +141,6 @@ partial class ReCodeItForm
AssemblyPathTextBox = new TextBox();
SilentModeCheckbox = new CheckBox();
DebugLoggingCheckbox = new CheckBox();
- AutoMapperTokensTextField = new TextBox();
- AutoMapperTokensRemoveButton = new Button();
- AutoMapperTokensAddButton = new Button();
- AutoMapperTokensBox = new ListBox();
- AutoMapperFPTextField = new TextBox();
- AutoMapperFPRemoveButton = new Button();
- AutoMapperFPAddButton = new Button();
- AutoMapperFPBox = new ListBox();
TabPageRemapper.SuspendLayout();
groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)ConstuctorCountUpDown).BeginInit();
@@ -943,6 +948,11 @@ partial class ReCodeItForm
// AutoMapperTab
//
AutoMapperTab.BackColor = SystemColors.ControlDarkDark;
+ AutoMapperTab.Controls.Add(AutoMapperMethodTextBox);
+ AutoMapperTab.Controls.Add(AutoMapperMethodRemoveButton);
+ AutoMapperTab.Controls.Add(AutoMapperMethodAddButton);
+ AutoMapperTab.Controls.Add(AutoMapperMethodBox);
+ AutoMapperTab.Controls.Add(AutoMapperSearchMethodsCheckBox);
AutoMapperTab.Controls.Add(AutoMapperFPTextField);
AutoMapperTab.Controls.Add(AutoMapperFPRemoveButton);
AutoMapperTab.Controls.Add(AutoMapperFPAddButton);
@@ -967,6 +977,134 @@ partial class ReCodeItForm
AutoMapperTab.TabIndex = 3;
AutoMapperTab.Text = "Auto Mapper";
//
+ // AutoMapperMethodTextBox
+ //
+ AutoMapperMethodTextBox.BackColor = SystemColors.ScrollBar;
+ AutoMapperMethodTextBox.Location = new Point(365, 496);
+ AutoMapperMethodTextBox.Name = "AutoMapperMethodTextBox";
+ AutoMapperMethodTextBox.PlaceholderText = "method parameter names to blacklist";
+ AutoMapperMethodTextBox.Size = new Size(353, 31);
+ AutoMapperMethodTextBox.TabIndex = 43;
+ //
+ // AutoMapperMethodRemoveButton
+ //
+ AutoMapperMethodRemoveButton.Location = new Point(606, 768);
+ AutoMapperMethodRemoveButton.Name = "AutoMapperMethodRemoveButton";
+ AutoMapperMethodRemoveButton.Size = new Size(112, 34);
+ AutoMapperMethodRemoveButton.TabIndex = 42;
+ AutoMapperMethodRemoveButton.Text = "Remove";
+ AutoMapperMethodRemoveButton.UseVisualStyleBackColor = true;
+ AutoMapperMethodRemoveButton.Click += AutoMapperMethodRemoveButton_Click;
+ //
+ // AutoMapperMethodAddButton
+ //
+ AutoMapperMethodAddButton.Location = new Point(365, 768);
+ AutoMapperMethodAddButton.Name = "AutoMapperMethodAddButton";
+ AutoMapperMethodAddButton.Size = new Size(112, 34);
+ AutoMapperMethodAddButton.TabIndex = 41;
+ AutoMapperMethodAddButton.Text = "Add";
+ AutoMapperMethodAddButton.UseVisualStyleBackColor = true;
+ AutoMapperMethodAddButton.Click += AutoMapperMethodAddButton_Click;
+ //
+ // AutoMapperMethodBox
+ //
+ AutoMapperMethodBox.BackColor = Color.Gray;
+ AutoMapperMethodBox.FormattingEnabled = true;
+ AutoMapperMethodBox.ItemHeight = 25;
+ AutoMapperMethodBox.Location = new Point(365, 533);
+ AutoMapperMethodBox.Name = "AutoMapperMethodBox";
+ AutoMapperMethodBox.Size = new Size(353, 229);
+ AutoMapperMethodBox.TabIndex = 40;
+ //
+ // AutoMapperSearchMethodsCheckBox
+ //
+ AutoMapperSearchMethodsCheckBox.AutoSize = true;
+ AutoMapperSearchMethodsCheckBox.Location = new Point(13, 132);
+ AutoMapperSearchMethodsCheckBox.Name = "AutoMapperSearchMethodsCheckBox";
+ AutoMapperSearchMethodsCheckBox.Size = new Size(291, 29);
+ AutoMapperSearchMethodsCheckBox.TabIndex = 39;
+ AutoMapperSearchMethodsCheckBox.Text = "Search Methods (Experiemental)";
+ AutoMapperSearchMethodsCheckBox.UseVisualStyleBackColor = true;
+ AutoMapperSearchMethodsCheckBox.CheckedChanged += SearchMethodsCheckBox_CheckedChanged;
+ //
+ // AutoMapperFPTextField
+ //
+ AutoMapperFPTextField.BackColor = SystemColors.ScrollBar;
+ AutoMapperFPTextField.Location = new Point(6, 496);
+ AutoMapperFPTextField.Name = "AutoMapperFPTextField";
+ AutoMapperFPTextField.PlaceholderText = "Field or property names to blacklist";
+ AutoMapperFPTextField.Size = new Size(353, 31);
+ AutoMapperFPTextField.TabIndex = 38;
+ //
+ // AutoMapperFPRemoveButton
+ //
+ AutoMapperFPRemoveButton.Location = new Point(247, 768);
+ AutoMapperFPRemoveButton.Name = "AutoMapperFPRemoveButton";
+ AutoMapperFPRemoveButton.Size = new Size(112, 34);
+ AutoMapperFPRemoveButton.TabIndex = 37;
+ AutoMapperFPRemoveButton.Text = "Remove";
+ AutoMapperFPRemoveButton.UseVisualStyleBackColor = true;
+ AutoMapperFPRemoveButton.Click += AutoMapperFPRemoveButton_Click;
+ //
+ // AutoMapperFPAddButton
+ //
+ AutoMapperFPAddButton.Location = new Point(6, 768);
+ AutoMapperFPAddButton.Name = "AutoMapperFPAddButton";
+ AutoMapperFPAddButton.Size = new Size(112, 34);
+ AutoMapperFPAddButton.TabIndex = 36;
+ AutoMapperFPAddButton.Text = "Add";
+ AutoMapperFPAddButton.UseVisualStyleBackColor = true;
+ AutoMapperFPAddButton.Click += AutoMapperFPAddButton_Click;
+ //
+ // AutoMapperFPBox
+ //
+ AutoMapperFPBox.BackColor = Color.Gray;
+ AutoMapperFPBox.FormattingEnabled = true;
+ AutoMapperFPBox.ItemHeight = 25;
+ AutoMapperFPBox.Location = new Point(6, 533);
+ AutoMapperFPBox.Name = "AutoMapperFPBox";
+ AutoMapperFPBox.Size = new Size(353, 229);
+ AutoMapperFPBox.TabIndex = 35;
+ //
+ // AutoMapperTokensTextField
+ //
+ AutoMapperTokensTextField.BackColor = SystemColors.ScrollBar;
+ AutoMapperTokensTextField.Location = new Point(365, 173);
+ AutoMapperTokensTextField.Name = "AutoMapperTokensTextField";
+ AutoMapperTokensTextField.PlaceholderText = "Class Tokens To Match During Renaming";
+ AutoMapperTokensTextField.Size = new Size(353, 31);
+ AutoMapperTokensTextField.TabIndex = 34;
+ //
+ // AutoMapperTokensRemoveButton
+ //
+ AutoMapperTokensRemoveButton.Location = new Point(606, 445);
+ AutoMapperTokensRemoveButton.Name = "AutoMapperTokensRemoveButton";
+ AutoMapperTokensRemoveButton.Size = new Size(112, 34);
+ AutoMapperTokensRemoveButton.TabIndex = 33;
+ AutoMapperTokensRemoveButton.Text = "Remove";
+ AutoMapperTokensRemoveButton.UseVisualStyleBackColor = true;
+ AutoMapperTokensRemoveButton.Click += AutoMapperTokensRemoveButton_Click;
+ //
+ // AutoMapperTokensAddButton
+ //
+ AutoMapperTokensAddButton.Location = new Point(365, 445);
+ AutoMapperTokensAddButton.Name = "AutoMapperTokensAddButton";
+ AutoMapperTokensAddButton.Size = new Size(112, 34);
+ AutoMapperTokensAddButton.TabIndex = 32;
+ AutoMapperTokensAddButton.Text = "Add";
+ AutoMapperTokensAddButton.UseVisualStyleBackColor = true;
+ AutoMapperTokensAddButton.Click += AutoMapperTokensAddButton_Click;
+ //
+ // AutoMapperTokensBox
+ //
+ AutoMapperTokensBox.BackColor = Color.Gray;
+ AutoMapperTokensBox.FormattingEnabled = true;
+ AutoMapperTokensBox.ItemHeight = 25;
+ AutoMapperTokensBox.Location = new Point(365, 210);
+ AutoMapperTokensBox.Name = "AutoMapperTokensBox";
+ AutoMapperTokensBox.Size = new Size(353, 229);
+ AutoMapperTokensBox.TabIndex = 31;
+ //
// label3
//
label3.AutoSize = true;
@@ -1254,84 +1392,6 @@ partial class ReCodeItForm
DebugLoggingCheckbox.UseVisualStyleBackColor = true;
DebugLoggingCheckbox.CheckedChanged += DebugLoggingCheckbox_CheckedChanged;
//
- // AutoMapperTokensTextField
- //
- AutoMapperTokensTextField.BackColor = SystemColors.ScrollBar;
- AutoMapperTokensTextField.Location = new Point(365, 173);
- AutoMapperTokensTextField.Name = "AutoMapperTokensTextField";
- AutoMapperTokensTextField.PlaceholderText = "Class Tokens To Match During Renaming";
- AutoMapperTokensTextField.Size = new Size(353, 31);
- AutoMapperTokensTextField.TabIndex = 34;
- //
- // AutoMapperTokensRemoveButton
- //
- AutoMapperTokensRemoveButton.Location = new Point(606, 445);
- AutoMapperTokensRemoveButton.Name = "AutoMapperTokensRemoveButton";
- AutoMapperTokensRemoveButton.Size = new Size(112, 34);
- AutoMapperTokensRemoveButton.TabIndex = 33;
- AutoMapperTokensRemoveButton.Text = "Remove";
- AutoMapperTokensRemoveButton.UseVisualStyleBackColor = true;
- AutoMapperTokensRemoveButton.Click += AutoMapperTokensRemoveButton_Click;
- //
- // AutoMapperTokensAddButton
- //
- AutoMapperTokensAddButton.Location = new Point(365, 445);
- AutoMapperTokensAddButton.Name = "AutoMapperTokensAddButton";
- AutoMapperTokensAddButton.Size = new Size(112, 34);
- AutoMapperTokensAddButton.TabIndex = 32;
- AutoMapperTokensAddButton.Text = "Add";
- AutoMapperTokensAddButton.UseVisualStyleBackColor = true;
- AutoMapperTokensAddButton.Click += AutoMapperTokensAddButton_Click;
- //
- // AutoMapperTokensBox
- //
- AutoMapperTokensBox.BackColor = Color.Gray;
- AutoMapperTokensBox.FormattingEnabled = true;
- AutoMapperTokensBox.ItemHeight = 25;
- AutoMapperTokensBox.Location = new Point(365, 210);
- AutoMapperTokensBox.Name = "AutoMapperTokensBox";
- AutoMapperTokensBox.Size = new Size(353, 229);
- AutoMapperTokensBox.TabIndex = 31;
- //
- // AutoMapperFPTextField
- //
- AutoMapperFPTextField.BackColor = SystemColors.ScrollBar;
- AutoMapperFPTextField.Location = new Point(6, 496);
- AutoMapperFPTextField.Name = "AutoMapperFPTextField";
- AutoMapperFPTextField.PlaceholderText = "Field or property names to blacklist";
- AutoMapperFPTextField.Size = new Size(353, 31);
- AutoMapperFPTextField.TabIndex = 38;
- //
- // AutoMapperFPRemoveButton
- //
- AutoMapperFPRemoveButton.Location = new Point(247, 768);
- AutoMapperFPRemoveButton.Name = "AutoMapperFPRemoveButton";
- AutoMapperFPRemoveButton.Size = new Size(112, 34);
- AutoMapperFPRemoveButton.TabIndex = 37;
- AutoMapperFPRemoveButton.Text = "Remove";
- AutoMapperFPRemoveButton.UseVisualStyleBackColor = true;
- AutoMapperFPRemoveButton.Click += AutoMapperFPRemoveButton_Click;
- //
- // AutoMapperFPAddButton
- //
- AutoMapperFPAddButton.Location = new Point(6, 768);
- AutoMapperFPAddButton.Name = "AutoMapperFPAddButton";
- AutoMapperFPAddButton.Size = new Size(112, 34);
- AutoMapperFPAddButton.TabIndex = 36;
- AutoMapperFPAddButton.Text = "Add";
- AutoMapperFPAddButton.UseVisualStyleBackColor = true;
- AutoMapperFPAddButton.Click += AutoMapperFPAddButton_Click;
- //
- // AutoMapperFPBox
- //
- AutoMapperFPBox.BackColor = Color.Gray;
- AutoMapperFPBox.FormattingEnabled = true;
- AutoMapperFPBox.ItemHeight = 25;
- AutoMapperFPBox.Location = new Point(6, 533);
- AutoMapperFPBox.Name = "AutoMapperFPBox";
- AutoMapperFPBox.Size = new Size(353, 229);
- AutoMapperFPBox.TabIndex = 35;
- //
// ReCodeItForm
//
AutoScaleDimensions = new SizeF(10F, 25F);
@@ -1483,4 +1543,9 @@ partial class ReCodeItForm
private Button AutoMapperFPRemoveButton;
private Button AutoMapperFPAddButton;
private ListBox AutoMapperFPBox;
+ private CheckBox AutoMapperSearchMethodsCheckBox;
+ private TextBox AutoMapperMethodTextBox;
+ private Button AutoMapperMethodRemoveButton;
+ private Button AutoMapperMethodAddButton;
+ private ListBox AutoMapperMethodBox;
}
diff --git a/RecodeItGUI/GUI/Main.cs b/RecodeItGUI/GUI/Main.cs
index 5c1332f..07ff124 100644
--- a/RecodeItGUI/GUI/Main.cs
+++ b/RecodeItGUI/GUI/Main.cs
@@ -365,6 +365,7 @@ public partial class ReCodeItForm : Form
MaxMatchCountUpDown.Value = DataProvider.Settings.Remapper.MaxMatchCount;
AutoMapperRequiredMatchesUpDown.Value = DataProvider.Settings.AutoMapper.RequiredMatches;
+ AutoMapperMinLengthUpDown.Value = DataProvider.Settings.AutoMapper.MinLengthToMatch;
}
#region SETTINGS_BUTTONS
@@ -486,6 +487,7 @@ public partial class ReCodeItForm : Form
MaxMatchCountUpDown.Value = DataProvider.Settings.Remapper.MaxMatchCount;
AutoMapperRequiredMatchesUpDown.Value = DataProvider.Settings.AutoMapper.RequiredMatches;
+ AutoMapperSearchMethodsCheckBox.Checked = DataProvider.Settings.AutoMapper.SearchMethods;
foreach (var type in DataProvider.Settings.AutoMapper.TypesToIgnore)
{
@@ -501,6 +503,11 @@ public partial class ReCodeItForm : Form
{
AutoMapperFPBox.Items.Add(fp);
}
+
+ foreach (var mp in DataProvider.Settings.AutoMapper.MethodParamaterBlackList)
+ {
+ AutoMapperMethodBox.Items.Add(mp);
+ }
}
private void AutoMapperRequiredMatchesUpDown_ValueChanged_1(object sender, EventArgs e)
@@ -520,9 +527,9 @@ public partial class ReCodeItForm : Form
if (!AutoMapperTokensBox.Items.Contains(AutoMapperTokensTextField.Text))
{
AutoMapperTokensBox.Items.Add(AutoMapperTokensTextField.Text);
+ DataProvider.Settings.AutoMapper.TokensToMatch.Add(AutoMapperTokensTextField.Text);
AutoMapperTokensTextField.Clear();
- DataProvider.Settings.AutoMapper.TokensToMatch.Add(AutoMapperTokensTextField.Text);
DataProvider.SaveAppSettings();
}
}
@@ -532,7 +539,7 @@ public partial class ReCodeItForm : Form
if (AutoMapperTokensBox.SelectedItem != null)
{
AutoMapperTokensBox.Items.Remove(AutoMapperTokensBox.SelectedItem);
- DataProvider.Settings.AutoMapper.TokensToMatch.RemoveAt(AutoMapperTokensBox.SelectedIndex);
+ DataProvider.Settings.AutoMapper.TokensToMatch.RemoveAt(AutoMapperTokensBox.SelectedIndex + 1);
DataProvider.SaveAppSettings();
}
}
@@ -542,9 +549,9 @@ public partial class ReCodeItForm : Form
if (!AutoMapperFPBox.Items.Contains(AutoMapperFPTextField.Text))
{
AutoMapperFPBox.Items.Add(AutoMapperFPTextField.Text);
+ DataProvider.Settings.AutoMapper.PropertyFieldBlackList.Add(AutoMapperFPTextField.Text);
AutoMapperFPTextField.Clear();
- DataProvider.Settings.AutoMapper.PropertyFieldBlackList.Add(AutoMapperFPTextField.Text);
DataProvider.SaveAppSettings();
}
}
@@ -559,6 +566,34 @@ public partial class ReCodeItForm : Form
}
}
+ private void AutoMapperMethodAddButton_Click(object sender, EventArgs e)
+ {
+ if (!AutoMapperMethodBox.Items.Contains(AutoMapperMethodTextBox.Text))
+ {
+ AutoMapperMethodBox.Items.Add(AutoMapperMethodTextBox.Text);
+ DataProvider.Settings.AutoMapper.MethodParamaterBlackList.Add(AutoMapperMethodTextBox.Text);
+
+ AutoMapperMethodTextBox.Clear();
+ DataProvider.SaveAppSettings();
+ }
+ }
+
+ private void AutoMapperMethodRemoveButton_Click(object sender, EventArgs e)
+ {
+ if (AutoMapperMethodBox.SelectedItem != null)
+ {
+ AutoMapperMethodBox.Items.Remove(AutoMapperMethodBox.SelectedItem);
+ DataProvider.Settings.AutoMapper.MethodParamaterBlackList.RemoveAt(AutoMapperMethodBox.SelectedIndex > 0 ? AutoMapperMethodBox.SelectedIndex : 0);
+ DataProvider.SaveAppSettings();
+ }
+ }
+
+ private void SearchMethodsCheckBox_CheckedChanged(object sender, EventArgs e)
+ {
+ DataProvider.Settings.AutoMapper.SearchMethods = AutoMapperSearchMethodsCheckBox.Checked;
+ DataProvider.SaveAppSettings();
+ }
+
#endregion AUTOMAPPER
// Reset All UI elements to default
diff --git a/RecodeItLib/AutoMapper/MappingPair.cs b/RecodeItLib/AutoMapper/MappingPair.cs
index ee5543a..812b32a 100644
--- a/RecodeItLib/AutoMapper/MappingPair.cs
+++ b/RecodeItLib/AutoMapper/MappingPair.cs
@@ -38,6 +38,11 @@ public sealed class MappingPair(
///
public bool HasBeenRenamed { get; set; } = false;
+ ///
+ /// Did this match come from a method?
+ ///
+ public EMapPairSource IsMatchFrom { get; set; } = EMapPairSource.None;
+
///
/// This is the name we want to change the assembly class to
///
@@ -47,4 +52,12 @@ public sealed class MappingPair(
/// Original name of the property or field type
///
public string OriginalPropOrFieldName { get; } = name;
+}
+
+public enum EMapPairSource
+{
+ None,
+ Field,
+ Property,
+ Method
}
\ No newline at end of file
diff --git a/RecodeItLib/AutoMapper/ReCodeItAutoMapper.cs b/RecodeItLib/AutoMapper/ReCodeItAutoMapper.cs
index 3ac8a32..a1ea2dd 100644
--- a/RecodeItLib/AutoMapper/ReCodeItAutoMapper.cs
+++ b/RecodeItLib/AutoMapper/ReCodeItAutoMapper.cs
@@ -48,11 +48,20 @@ public class ReCodeItAutoMapper
foreach (var type in types)
{
+ // We dont want to do anything with compiler generated objects
+ if (CompilerGeneratedClasses.Contains(type.Name))
+ {
+ continue;
+ }
+
MappingPairs.AddRange(FilterFieldNames(type));
MappingPairs.AddRange(FilterPropertyNames(type));
- }
- Logger.Log(MappingPairs.Count());
+ if (Settings.SearchMethods)
+ {
+ MappingPairs.AddRange(GatherFromMethods(type));
+ }
+ }
PrimaryTypeNameFilter();
SanitizeProposedNames();
@@ -89,6 +98,68 @@ public class ReCodeItAutoMapper
}
}
+ #region METHODS
+
+ private List GatherFromMethods(TypeDefinition type)
+ {
+ var methodsWithTypes = new List();
+
+ // Handle nested types recursively
+ foreach (var nestedType in type.NestedTypes)
+ {
+ methodsWithTypes.AddRange(GatherFromMethods(nestedType));
+ }
+
+ var methods = type.Methods
+ // We only want methods with parameters
+ .Where(m => m.HasParameters)
+
+ // Only want parameter names of a certain length
+ .Where(m => m.Parameters.Any(p => p.Name.Length > Settings.MinLengthToMatch));
+
+ // Now go over over all filterd methods manually, because fuck this with linq
+ foreach (var method in methods)
+ {
+ var parmNames = method.Parameters.Select(p => p.Name);
+ var parmTypes = method.Parameters.Select(p => p.ParameterType.Name);
+
+ // Now over all parameters in the method
+ foreach (var parm in method.Parameters)
+ {
+ // We dont want blacklisted items
+ if (Settings.MethodParamaterBlackList.Contains(parm.ParameterType.Name.TrimAfterSpecialChar())
+ || Settings.TypesToIgnore.Contains(parm.ParameterType.Name.TrimAfterSpecialChar()))
+ {
+ continue;
+ }
+
+ if (parm.ParameterType.Resolve() == null) { continue; }
+
+ //Logger.Log($"Method Data Found");
+ //Logger.Log($"Parameter count: {method.Parameters.Count}");
+ //Logger.Log($"Paremeter Names: {string.Join(", ", parmNames)}");
+ //Logger.Log($"Paremeter Types: {string.Join(", ", parmTypes)}\n");
+
+ var mapPair = new MappingPair(
+ parm.ParameterType.Resolve(),
+ parm.Name,
+ parm.ParameterType.Resolve().IsInterface,
+ parm.ParameterType.Name.Contains("Struct"),
+ true);
+
+ mapPair.IsMatchFrom = EMapPairSource.Method;
+
+ methodsWithTypes.Add(mapPair);
+ }
+ }
+
+ return methodsWithTypes;
+ }
+
+ #endregion METHODS
+
+ #region FIELDS_PROPERTIES
+
///
/// Pair field declaring types with their names
///
@@ -98,12 +169,6 @@ public class ReCodeItAutoMapper
{
var fieldsWithTypes = new List();
- if (CompilerGeneratedClasses.Contains(type.Name))
- {
- //Logger.Log($"Skipping over compiler generated object: {type.Name}");
- return fieldsWithTypes;
- }
-
// Handle nested types recursively
foreach (var nestedType in type.NestedTypes)
{
@@ -133,12 +198,16 @@ public class ReCodeItAutoMapper
// Dont rename things we cant resolve
if (typeDef is null) { continue; }
- fieldsWithTypes.Add(new MappingPair(
+ var pair = new MappingPair(
typeDef,
field.Name,
field.FieldType.Name.Contains("Interface"),
field.FieldType.Name.Contains("Struct"),
- field.IsPublic));
+ field.IsPublic);
+
+ pair.IsMatchFrom = EMapPairSource.Field;
+
+ fieldsWithTypes.Add(pair);
}
return fieldsWithTypes;
@@ -153,12 +222,6 @@ public class ReCodeItAutoMapper
{
var propertiesWithTypes = new List();
- if (CompilerGeneratedClasses.Contains(type.Name))
- {
- //Logger.Log($"Skipping over compiler generated object: {type.Name}");
- return propertiesWithTypes;
- }
-
// Handle nested types recursively
foreach (var nestedType in type.NestedTypes)
{
@@ -188,17 +251,25 @@ public class ReCodeItAutoMapper
// Dont rename things we cant resolve
if (typeDef is null) { continue; }
- propertiesWithTypes.Add(new MappingPair(
+ var mapPair = new MappingPair(
typeDef,
property.Name,
property.PropertyType.Name.Contains("Interface"),
property.PropertyType.Name.Contains("Struct"),
- true));
+ true);
+
+ mapPair.IsMatchFrom = EMapPairSource.Property;
+
+ propertiesWithTypes.Add(mapPair);
}
return propertiesWithTypes;
}
+ #endregion FIELDS_PROPERTIES
+
+ #region FILTER
+
///
/// This giant linq statement handles all of the filtering once the initial gathering of fields
/// and properties is complete
@@ -248,6 +319,9 @@ public class ReCodeItAutoMapper
FinalGroupAndSelect();
}
+ ///
+ /// This is where we make sure everything is original
+ ///
private void FinalGroupAndSelect()
{
MappingPairs = MappingPairs
@@ -258,6 +332,10 @@ public class ReCodeItAutoMapper
.Select(group => group.First()).ToList();
}
+ #endregion FILTER
+
+ #region OUTPUT
+
///
/// Sanitizes and prepares mapping pairs for remapping once filtering is complete.
///
@@ -311,6 +389,7 @@ public class ReCodeItAutoMapper
Logger.Log($"Matched From Name: {pair.OriginalPropOrFieldName}");
Logger.Log($"IsInterface: {pair.IsInterface}");
Logger.Log($"IsStruct: {pair.IsStruct}");
+ Logger.Log($"Is match from: {pair.IsMatchFrom}");
Logger.Log($"------------------------------------------------------------------------");
}
@@ -338,6 +417,7 @@ public class ReCodeItAutoMapper
{
Logger.Log($"------------------------------------------------------------------------", ConsoleColor.Green);
Logger.Log($"Renaming: {pair.OriginalTypeDefinition.Name} to {pair.Name}", ConsoleColor.Green);
+ Logger.Log($"Is match from method: {pair.IsMatchFrom}", ConsoleColor.Green);
var fieldCount = RenameHelper.RenameAllFields(
pair.OriginalTypeDefinition.Name,
@@ -371,6 +451,7 @@ public class ReCodeItAutoMapper
Logger.Log($"Trying to match: {pair.IsInterface}", ConsoleColor.Red);
Logger.Log($"IsInterface: {pair.IsInterface}", ConsoleColor.Red);
Logger.Log($"IsStruct: {pair.IsStruct}", ConsoleColor.Red);
+ Logger.Log($"Is match from: {pair.IsMatchFrom}", ConsoleColor.Red);
Logger.Log($"------------------------------------------------------------------------", ConsoleColor.Red);
FailureCount++;
@@ -402,12 +483,21 @@ public class ReCodeItAutoMapper
{
var path = DataProvider.WriteAssemblyDefinition();
+ var fieldCountMatchResult = MappingPairs.Where(x => x.IsMatchFrom == EMapPairSource.Field).Count();
+ var propertyCountMatchResult = MappingPairs.Where(x => x.IsMatchFrom == EMapPairSource.Property).Count();
+ var methodCountMatchResult = MappingPairs.Where(x => x.IsMatchFrom == EMapPairSource.Method).Count();
+
Logger.Log($"-------------------------------RESULT-----------------------------------", ConsoleColor.Green);
Logger.Log($"Complete: Assembly written to `{path}`", ConsoleColor.Green);
Logger.Log($"Found {MappingPairs.Count()} automatic remaps", ConsoleColor.Green);
+ Logger.Log($"Found {fieldCountMatchResult} automatic remaps from fields", ConsoleColor.Green);
+ Logger.Log($"Found {propertyCountMatchResult} automatic remaps from properties", ConsoleColor.Green);
+ Logger.Log($"Found {methodCountMatchResult} automatic remaps from methods", ConsoleColor.Green);
Logger.Log($"Renamed {TotalFieldRenameCount} fields", ConsoleColor.Green);
Logger.Log($"Renamed {TotalPropertyRenameCount} properties", ConsoleColor.Green);
- Logger.Log($"Failed to rename: {FailureCount} mapping pairs", ConsoleColor.Green);
+ Logger.Log($"Failed to rename: {FailureCount} mapping pairs", (FailureCount == 0 ? ConsoleColor.Green : ConsoleColor.Red));
Logger.Log($"------------------------------------------------------------------------", ConsoleColor.Green);
}
+
+ #endregion OUTPUT
}
\ No newline at end of file
diff --git a/RecodeItLib/Models/AppSettingsModel.cs b/RecodeItLib/Models/AppSettingsModel.cs
index 89f014c..1f2bf80 100644
--- a/RecodeItLib/Models/AppSettingsModel.cs
+++ b/RecodeItLib/Models/AppSettingsModel.cs
@@ -35,9 +35,13 @@ public class AutoMapperSettings
public int MinLengthToMatch { get; set; }
+ public bool SearchMethods { get; set; }
+
public List TypesToIgnore { get; set; }
public List TokensToMatch { get; set; }
public List PropertyFieldBlackList { get; set; }
+
+ public List MethodParamaterBlackList { get; set; }
}
\ No newline at end of file
diff --git a/Templates/Settings.jsonc b/Templates/Settings.jsonc
index 7e613e9..b57fff4 100644
--- a/Templates/Settings.jsonc
+++ b/Templates/Settings.jsonc
@@ -16,6 +16,7 @@
"AutoMapper": {
"RequiredMatches": 5, // Minimum number of times a member must have this name in the assembly before considering it for remapping
"MinLengthToMatch": 7, // Minimum length of the field/property name in code before it will be considered for a rename
+ "SearchMethods": true, // Will attempt to map types from method meta data and parameters
"TypesToIgnore": [ // Any member name you want to ignore while iterating through the assembly
"Boolean",
"List",
@@ -51,6 +52,8 @@
"Instance",
"Command",
"_template"
+ ],
+ "MethodParamaterBlackList": [ // method parameter names to ignore in the automap, these are case sanitized so case does not matter
]
}
}