2015-11-06 60 views
2

我在一個大型基地做了一些分析,主要是JavaScript的(它實際上是主要的Siebel eScript,但是這或多或少同樣的事情,語法)條評論批量

多年來,壞程序員已經在並且評論了大部分代碼,通常是一個函數的全部內容並將其留在那裏。我想瀏覽代碼庫尋找這樣的例子,這樣我就可以指導開發人員回去並清理一些這些混亂。我有> 10,000個文件,所以我想要一個bash腳本來爲我做這個。

我最終想要的是通過linux fs中的文本文件並輸出每個文件的代碼與評論的字符數。

我已經試過:

sed的 - 在這裏有幾個問題導致的是找到//線和/ * * /對,並刪除相關的評論正則表達式。我已經嘗試了一些片段,但他們似乎失敗(不返回)我的代碼,或脫去非評論 - 所以我認爲正則表達式不是要走的路。

yui-compressor - 我試過這個,但是我找不到如何讓它變成條狀評論。 Minifying意味着我的wc -c結果太偏斜了

現在這個問題的理想答案是告訴我用什麼命令行解析器來處理我的javascript文件以刪除註釋。我可以自己去做其他事情,但是感覺這就是目前無法迴避的部分。

+0

如果你可以使用Node.js的,然後通過你的文件實現一個循環,並且使用[decommination](https://github.com/vitaly-t/decomment)這樣的東西來刪除每個文件的註釋。 –

回答

0

鑑於您對操作系統不清楚,很難猜測您的命令行解析器。 (wc可以在Linux下使用,在Windows下使用cygwin)。

我不認爲這是一個「命令行」,你需要一個知道Javascript的工具,鑑於你的問題是保留有效的javascript詞法,並拋掉評論,它會拋出看起來像正則表達式將是可能的。它可能很難寫,因爲它必須是語言中每個詞位的所有正則表達式的分離。人們使用詞法分析器來計算分離;你可能無法手工完成。 (是的,我已經編寫了生產JavaScript詞法分析器)。

獲得這種效果的最簡單方法是使用完整的Javascript詞法分析器。

我們的Javascript格式包含這樣一個詞法分析器/解析器;它的工作是重新格式化你的代碼。其命令行選項之一是去除評論。您可以使用項目文件將其配置爲一步處理大量文件。

根據Seibel的說法,escript符合ECMAScript 4,這可能適用於您。

+0

謝謝艾拉。目前,我一直在研究Debian虛擬機(不知道確切的版本),但我可以訪問windows和macos,因此從這個角度來看,我可以相當不可知論者。我將下載格式化程序的評估版本,並查看它對我的影響。謝謝! – bcbmcmlxxvi

+0

我決定使用python-jsmin,但是Ira讓我回答了問題,並幫助我縮小了Google的研究範圍。 – bcbmcmlxxvi

0

最終,我的解決辦法是這樣的:

for d in *Script*; do for f in ${d}/*; do echo `/usr/bin/python -m jsmin ${f} | wc -c` `wc -c ${f}`; done; done > function-size.txt 

一些樣本輸出(例子在那裏發現的大部分代碼被註釋):

36 2388 Business+Component+Server+Script/FS+Invoice+Adjustment.Old_BusComp_NewRecord 
90 1981 Business+Component+Server+Script/FS+Invoice+Adjustment.Old_BusComp_PreGetFieldValue 
43 2012 Business+Component+Server+Script/FS+Invoice+Adjustment.old_BusComp_PreSetFieldValue