我正在对大型基础进行一些分析,主要是javascript(它实际上主要是Siebel eScript,但这或多或少是相同的,语法上的)
多年来,糟糕的程序员已经进入并评论了大部分代码,通常是函数的全部内容并将其留在那里。我想通过代码库来寻找这样的例子,这样我就可以指导开发人员回去清理一些这样的混乱。我有> 10,000个文件,所以我想要一个bash脚本来为我做这个。
我最终喜欢的是通过linux fs和输出中的文本文件,每个文件,代码与注释的字符数。
我尝试了什么:
sed - 这里的一些问题导致正则表达式找到//行和/ * * /对并删除相关的注释。我已经尝试了几个片段,但它们似乎在我的代码中失败(没有返回),或者删除了非注释 - 所以我认为正则表达式不是可行的方法。
yui-compressor - 我尝试了这个,但我找不到如何让它只是剥离评论。缩小意味着我的wc -c
结果过于倾斜
现在这个问题的理想答案就是告诉我用什么命令行解析器来处理我的javascript文件以删除注释。我自己可以做其余的事,但感觉这就是我目前无法实现的部分。
答案 0 :(得分:0)
鉴于你不清楚操作系统,你很难猜出你拥有什么命令行解析器。 (wc在Linux下可用,在windows下可以使用cygwin)。
我不认为这是一个"命令行"这样做的诀窍,你需要一个知道Javascript的工具,鉴于你的问题是保留有效的javascript lexemes,并且只丢弃注释,看起来似乎是正则表达式。它可能很难写,因为它必须是语言中每个词汇的所有正则表达式的分离。人们使用词法分析器来计算这种分离;你可能无法手工完成。 (是的,我已经编写过生产JavaScript lexers)。
获得此效果的最简单方法是获取完整的Javascript词法分析器/解析器。
我们的Javascript Formatter包含这样的词法分析器/解析器;它的工作是重新格式化你的代码。其命令行选项之一是删除注释。您可以将其配置为使用项目文件一步处理大量文件。
根据Seibel关于escript符合ECMAScript 4的断言,这可能对您有用。
答案 1 :(得分: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