为sloccount添加语言支持

时间:2017-01-19 15:15:20

标签: dsl loc

有没有办法告诉sloccount某些文件既不是现有的语言,也不是新的(不同的)语言(某些DSL,sloccount不支持的语言,scala,go,rust ......)但是没有基于文件扩展名,而不是基于他们的内容(例如包含一些特定的关键字,或者特定的评论样​​式,我可以提供工具的完整标记列表等。)

这项特定任务的工作是否有更好的工具(简单)?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以将 findwc -l 一起使用以获得与 sloccount 类似的结果。

如果您在项目目录中,则可以运行以下命令来获取项目中的代码行数:

find . -name '*.scala' -print0 | wc -l --files0-from=-

注意它也计算空行,如果你想跳过空行你可以添加一个grep -v

find -name '*.scala' -exec grep -v -e '^[[:space:]]*$' {} \; | wc -l

答案 1 :(得分:-2)

  
    

Op写道:这项特定任务的工作是否有更好的工具(简单)?

  

您想要的是一种了解各种语言的工具,可以使用文件扩展名作为提示,并使用文件内容作为完整性检查或分类(如果扩展名不存在)。

语义设计'(我的公司)File Inventory工具扫描大量文件,以这种方式对其进行分类。文件扩展名提示内容。如果不存在文件扩展名,则使用一组用户可定义的正则表达式来尝试对文件类型进行基本分类。一旦猜到文件内容,使用语言准确词汇扫描仪的第二遍用于确认内容是它声称提供置信因子的内容。 (它也可以在没有词汇扫描仪的情况下工作......你只是得到了暗示类型)。

FileInventory本身不会计算源代码指标。 (它确实计算看似包含文本的文件的文件大小和行数)。但它确实为分类文件制作项目文件,以驱动我们的Source Code Search Engine (SCSE),这是一种用于搜索多种语言的大型代码库的工具。 SCSE扫描代码库以将其编入索引以便快速访问的副作用是计算基本指标:行,SLOC,注释,Halstead,McCabe指标(example output)。

[我们有一个名为“Ad Hoc Text”的特殊词法分析器。这试图模拟在zillion how-to计算机书籍中找到的随机编程语言,因此它知道典型的注释/ * ... * / - ......,各种引用的字符串“......”'。 ......'....,许多数字文字类型(十进制,浮点数),典型关键字'函数''如果''做'等等。 这个词法分析器SCSE可以部分地排除大多数随机选择的编程语言,但它足以计算出非常不准确的度量标准。这对于所有非常规的源代码来说非常方便,这些源代码经常在大型的源代码库中找到。]

因此,FileInventory和源代码搜索引擎的组合似乎可以大规模地执行您想要的操作。就内部实现的方式而言,这些工具并不是我所说的简单(做任何了解编程语言的细节实际上非常复杂),但它们配置和运行起来非常简单。