[英]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.