我建立了一个模块来计算Java项目的代码行(LOC)。为此,我不得不忽略:
我使用正则表达式在文件行中使用列表理解来实现前两个,并且我还解决了第三点,即使用正确的模式匹配和替换来访问整个文件字符串。我想知道,是否有更好和/或更高性能的方法可以达到相同的目标?
PS:由于多行注释可以与同一行中的实际代码交织在一起,所以我选择了替换,即使它比计数和减法重。棘手的多行注释的示例可以是:
String test2 = "abc /* fake comment*/";
String cde = "this is a test";//an inline comment
String efg = "ciccio"; /*this is a
weird comment*/ String hil = "pluto";
是,您可以尝试其他方法。
lexical SingleLineComment = "//" ~[\n] "\n";
和lexical OtherStuff = ![\\]+ !>> ![\\]
之类的东西为带注释的文件编写语法。可以访问出现的分析树以计算所有注释的大小,您可以从总数中减去它。lang::java
中的库中解析文件,并类似地分析解析树^
和$
,以便您编写的visit
变得更快。建议在REPL::set profiling true
上启用Rascal CPU Profiler,并查看运行测试后打印的概要文件中实际瓶颈AST节点的位置。