2015-11-06 97 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