linec icon indicating copy to clipboard operation
linec copied to clipboard

Suggestion: count line of comment

Open qin-nz opened this issue 4 years ago • 10 comments

提个建议啊,你的 code 里面是不是包含了所有非空行的部分? 是否能再对这一部分进行拆分,统计注释的行数。

这里是别人的一个统计程序,但是UI确实不好看,而且种类没有你的全。 image

qin-nz avatar Apr 20 '20 05:04 qin-nz

主要是注释不太好统计,因为语言不同,需要不通的解析器去解析吧。

hua1995116 avatar Apr 20 '20 05:04 hua1995116

其实一个解析器就可以,然后每种语言都需要配置一下,可以参考下 vscode,comment 通常分为单行注释和多行注释,只要分别处理下就可以。

https://github.com/microsoft/vscode/blob/5578eadf868dfa0674d976b141a7ca3674a101da/extensions/javascript/javascript-language-configuration.json#L2-L5

https://github.com/microsoft/vscode/blob/master/extensions/python/language-configuration.json#L2-L5

https://github.com/microsoft/vscode/blob/master/extensions/go/language-configuration.json#L2-L5

qin-nz avatar Apr 20 '20 13:04 qin-nz

确实可以,如果不考虑边界情况的话,逐行解析,blockComment 开头结尾匹配,就是需要维护那个大 的语言 json 。这两天我抽空试试看,或者你有空也可以尝试一下。😃

hua1995116 avatar Apr 20 '20 13:04 hua1995116

我不会 js /(ㄒoㄒ)/~~

qin-nz avatar Apr 20 '20 13:04 qin-nz

哈哈哈,那没事,我这两天试一下吧。

hua1995116 avatar Apr 20 '20 13:04 hua1995116

你可以看看词法解析器这种东西,这样更复杂的东西也可以做了,比如 https://github.com/jimbojw/jslex 或 https://github.com/royswastik/lexical-analyzer

以及,如果强行逐行解析的话,要注意这种 hello = "this is // stirng" 这种里面没有注释

qin-nz avatar Apr 20 '20 14:04 qin-nz

现在只能做个大概的通用的,不同的语言解析不一样呀。单行的做个trim直接匹配开头就行了。

hua1995116 avatar Apr 20 '20 14:04 hua1995116

已经支持 comments 了

hua1995116 avatar May 04 '20 10:05 hua1995116

1.4.1 确实实现了 comments,但我貌似发现了2个bug

  • code 数据里面包含了 blank
  • 我在 Windows 上新增1个空行(换行符为LF),但blank和code结果都+2
  • 新增一行代码,blank +1, code+2

qin-nz avatar May 06 '20 00:05 qin-nz

现在考虑的基础版本有点问题,回头我用 LL(1)重写一下。

hua1995116 avatar May 06 '20 02:05 hua1995116