不混淆地重命名所有变量和文字

Renaming all variables and literals without obfuscation

我想重命名代码中的所有 类 和变量,以使其更加模糊。例如这个示例代码:

public class Dog
{
   public Dog()
   {
      Bark(4);
   }

   private void Bark(int times)
   {
       //Do something
   }
}

变成:

public class Cat
{
   public Cat()
   {
      Wood(4);
   }

   private void Wood(int asdasd)
   {
       //Do something
   }
}

如果这不可能,也许更简单的方法是我们只需在每个 variable/name:

的中间添加一个字符
public class Do1g
{
   public Do1g()
   {
      Bar1k(4);
   }

   private void Bar1k(int time1s)
   {
       //Do something
   }
}

功能保持不变,并且是人类可读的;但是,关于变量命名、类、方法等的所有信息都已更改。

有没有办法在保持可读性的同时进行混淆?

首先,我不知道如何使用它,但是,在评论中你说创建一个看起来像所需对象的新对象是可以接受的,所以

这是我的建议

  1. 使用反射读取class的所有方法
  2. 使用第 1 步中的所有属性和方法名称创建一个列表

从那里您可以使用 LINQ 创建一个新对象,名称从您创建的列表中创建。

请记住,我不知道这将如何工作,甚至不知道这是否会工作。

您可以使用 Visual Studio 代码模型重命名符号。例如,要将 'x' 添加到当前函数名称:

    EnvDTE.TextSelection ts = DTE.ActiveWindow.Selection as EnvDTE.TextSelection;
    EnvDTE80.CodeElement2 func = ts.ActivePoint.CodeElement[vsCMElement.vsCMElementFunction]
        as EnvDTE80.CodeElement2;
    func.RenameSymbol(func.Name + "x");

(您可以 运行 使用 Visual Commander 或在您自己的扩展中使用此代码)。

此重命名操作还会更新所有引用。您可以自然地扩展此示例以重命名 类、命名空间和流程文件、项目。