在JavaScript中重命名变量

时间:2013-02-22 16:51:44

标签: javascript visual-studio refactoring automated-refactoring

我一直困扰着“消除”缩小的JavaScript代码文件的令人不快的任务。使用JSBeautifier,生成的文件长约6000行。

通常,变量和参数名称将永久丢失,但在这种情况下,我有一个过时版本的原始文件,从中生成缩小的JavaScript代码文件。原始文件的这个过时版本包含大多数代码注释和变量名称,但绝对不能用于代替当前版本。

我想知道是否有某种方法可以在JavaScript中重命名特定参数或变量的所有实例。由于缩小将名称缩减为单个字符,因此无法进行查找和替换。

是否有一些工具,我可以告诉他们,在这个文件中,函数a的参数foo应该是clientName并让它在语义上重命名该参数的所有实例到clientName

不幸的是,我在一个拥有经过批准的软件列表的大型组织工作,我在可预见的未来(无VS 2012)中坚持使用Visual Studio 2010。

更新: @Kos,我们不使用Git,但我们确实使用了源代码控制。问题是,不再为我的组织工作的开发人员一旦对文件进行了更改,将其缩小,并且仅在缩小版本中检查了源代码控制,因此他对原始文档的更改已丢失。

3 个答案:

答案 0 :(得分:7)

我对这个答案迟了一年,但我遇到了类似的问题所以我建立了这个问题:https://github.com/zertosh/beautify-with-words。它使用UglifyJS2取消代码,但使用语音字生成器重命名变量。你会得到“long-ish”变量名,所以进行查找和替换是一件轻而易举的事。希望这有助于其他人!

答案 1 :(得分:2)

你可能还有另一条出路。

查看最后一个未经授权的代码版本。与缩小版相比。可以说它大多数应该是模数一致的变量重命名。你必须重新命名和重新合并的差异。

Diff不会做这种比较;你需要工具来比较程序作为代码,而不是文本。我们的SmartDifferencer工具将执行此操作(通过使用特定于语言的完整解析器生成AST,然后比较AST);实际上,它比较了程序,尽管有whitepspacing。 SmartDifferencer还处理重命名;如果两个文件相同,则模拟一次重命名,这就是SmartDifferencer告诉你的。

我不知道这项工作的成效如何;我们还没有尝试过具有6000行“一致重命名”变量的SmartDifferencer。

答案 2 :(得分:1)

我发现我们在这里获得许可的Visual Studio扩展称为“Telerik JustCode”,它具有我想要的功能。