簡體   English   中英

在JavaScript中重命名變量

[英]Renaming variables in JavaScript

我一直困擾着“消除”縮小的JavaScript代碼文件的令人不快的任務。 使用JSBeautifier,生成的文件大約6000行。

通常,變量和參數名稱將永久丟失,但在這種情況下,我有一個過時版本的原始文件,從中生成縮小的JavaScript代碼文件。 原始文件的這個過時版本包含大多數代碼注釋和變量名稱,但絕對不能用於代替當前版本。

我想知道是否有一些方法可以在JavaScript中重命名特定參數或變量的所有實例。 由於縮小將名稱縮減為單個字符,因此無法進行查找和替換。

是否有一些工具,我可以告訴,在這個文件中,函數foo的參數a應該是clientName並讓它在語義上將該參數的所有實例重命名為clientName

不幸的是,我在一個擁有經過批准的軟件列表的大型組織工作,並且我在可預見的未來中堅持使用Visual Studio 2010(沒有VS 2012)。

更新: @Kos,我們不使用Git,但我們確實使用源代碼控制。 問題是,不再為我的組織工作的開發人員一旦對文件進行了更改,將其縮小,並且僅在縮小版本中檢查了源代碼控制,因此他對原始文件的更改已丟失。

我對這個答案遲了一年,但我遇到了類似的問題,所以我建立了這個: https//github.com/zertosh/beautify-with-words 它使用UglifyJS2取消代碼,但使用語音字生成器重命名變量。 你會得到“long-ish”變量名,所以進行查找和替換是一件輕而易舉的事。 希望這有助於其他人!

你可能還有另一條出路。

查看最后一個未經授權的代碼版本。 與縮小版相比。 可以說它大多數應該是模數一致的變量重命名。 你必須重新命名和重新合並的差異。

Diff不會做這種比較; 你需要工具來比較程序作為代碼,而不是文本。 我們的SmartDifferencer工具將執行此操作(通過使用特定於語言的完整解析器生成AST,然后比較AST); 實際上,它比較了程序,盡管有whitepspacing。 SmartDifferencer還處理重命名; 如果兩個文件相同,則模擬一次重命名,這就是SmartDifferencer告訴你的。

我不知道這項工作有多順利; 我們還沒有嘗試過具有6000行“一致重命名”變量的SmartDifferencer。

我發現我們在這里獲得許可的Visual Studio擴展稱為“Telerik JustCode”,它具有我想要的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM