我正在一个大的基础上进行一些分析,主要是javascript (实际上主要是Siebel eScript,但从语法上讲,这几乎是一回事)
多年来,糟糕的程序员已经进入并评论了大量的代码,通常是函数的全部内容,并将其保留在那里。我想在代码库中寻找这样的示例,这样我就可以指导开发人员返回并清理其中的一些混乱。我有>10,000个文件,所以我想要一个bash脚本来帮我做到这一点。
我最终想要的是通过linux中的文本文件并输出每个文件中的代码和注释的字符数。
我试过的是:
sed -这里的几个问题会导致正则表达式找到//行列式和/* */对,并删除相关的注释。我尝试过一些代码片段,但它们似乎失败了(没有返回)足够多的代码,或者删除了非注释-所以我认为regex不是可行的。
我试过了,但是我找不到怎么做,只是简单的评论。缩小意味着我的wc -c结果太偏斜了
现在,这个问题的理想答案应该是告诉我使用什么命令行解析器来处理我的javascript文件来删除注释。我可以自己做剩下的事,但感觉这是我目前逃避的部分。
发布于 2015-11-06 03:37:30
考虑到您对操作系统不清楚,很难猜测您有什么命令行解析器。(wc在Linux和cygwin操作系统下都可以使用)。
我不认为是“命令行”起作用,您需要一个了解Javascript的工具,考虑到您的问题是如何保留有效的javascript词汇,并且只丢弃注释,这似乎是可能的。这可能很难写,因为它必须是对语言中的每一个词的所有regexp的分离。人们使用lexer生成器来计算这种分离;您可能无法手工完成。(是的,我写过生产JavaScript词汇)。
要获得这种效果,最简单的方法是将手放在一个完整的Javascript /解析器上。
我们的Javascript格式化程序包含这样一个lexer/解析器;它的工作是重新格式化您的代码。它的命令行选项之一是删除注释。您可以将其配置为使用项目文件在一步内处理多个文件。
基于Seibel的断言,escript是符合ECMAScript 4的,这可能对你有用。
发布于 2015-11-09 06:44:03
最终,我的解决办法是:
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_PreSetFieldValuehttps://stackoverflow.com/questions/33558650
复制相似问题