github如何找出项目的语言?

时间:2011-03-15 21:55:36

标签: github github-linguist

我最近在JavaScript和C ++中使用github项目,并注意到github将项目标记为C ++。如果你必须选择一种语言,这可能是正确的名称,因为C ++代码被编译为JavaScript库,但这让我很奇怪...... github如何找出标记每个项目的语言?

5 个答案:

答案 0 :(得分:78)

2013年4月更新,nuclearsandwich(GitHub支持团队或“supportocat”):

  

如果您所需的语言没有收到语法高亮显示,您可以向Linguist库添加内容。


(原始答案,2012年10月)

thread on GitHub support解释了它:

  

它只是总结每个扩展名的文件大小。最大的一个“胜利”。

     

我们希望避免打开文件并解析其内容,因为两者都会减慢进程...但这可能是解决此类冲突的唯一方法。

由于这不是100%准确,因此引起了一些补充:

  

对于猜测错误的情况,我也会投票给一个简单的手动覆盖开关。


注意:Mark Rushakoffhis answer提及(upvoted),从那时起linguist project(2011年6月开源)猜测变得更好了。
你可以看到仍有问题:GitHub Linguist Issueshere for more details

  

一旦检测到语言,它就会传递给Albino Pygments包装器,它会实际突出显示语法。

你可以add linguist directives in a .gitattributes file

答案 1 :(得分:13)

目前,Github的linguist project是用于确定语言统计信息的内容,如this Github blog post(最初询问此问题几个月后出现)所述。

答案 2 :(得分:3)

首先,请知道您可以使用Linguist overrides 覆盖检测到的语言以查找存储库中的文件。

现在,简而言之,

  1. 每个存储库都使用语言统计信息中的第一种语言进行标记。
  2. 语言统计信息会计算每种检测到的编程或标记语言的文件总大小不计算供应商,文档和生成的文件。
  3. 开源项目 Linguist 检测到每个文件的语言。
  4. 语言学家如何检测语言?

    Linguist依次依赖following strategies,并在找到完美匹配后返回语言(返回单一语言的策略)。

    1. 寻找Emacs and Vim modelines
    2. 已知文件名。某些文件名与特定语言相关联(请考虑Makefile)。
    3. 寻找一个shebang。具有#!/bin/bash shebang的文件将被归类为Shell。
    4. 已知文件扩展名。语言有一组与之关联的扩展。但是,这种策略存在很多冲突。相互冲突的结果(认为.h的C ++,C和Objective-C)会被后续策略所改进。
    5. 一组heuristic rules。他们通常依赖于文件内容的正则表达式来尝试识别语言(例如,^[^#]+:- for Prolog)。
    6. sample files训练的幼稚贝叶斯分类器。最后的策略,准确度最低。贝叶斯分类器总是将一部分语言作为输入;它并不意味着在所有语言中进行分类。返回分类器找到的最佳匹配。
    7. 什么是未发布的文档文件?

      Linguist将某些文件视为 vendored ,这意味着它们不包含在语言统计信息中。这些包括第三方库,如jQuery,并在vendor.yml配置文件中定义。您还可以使用Linguist overrides在存储库中提供或取消存档文件。

      同样,文档文件在documentation.yml中定义,可以使用Linguist overrides进行更改。

      如何检测生成的文件?

      Linguist依靠simple rules来检测生成的文件,同时使用路径和文件内容。生成的文件不计入语言统计信息,也不会显示在github.com上的差异中。

      编程和标记语言怎么样?

      在语言学家中,每种语言都有一种类型。可以在主配置文件languages.yml中找到这些类型。统计中只计算编程和标记语言。

答案 3 :(得分:0)

经过一些修补linguist我 注意到了这一点。

对于Shebang的文件, Shebang在确定语言时被考虑但似乎是均匀的 对其他人加权 tokens。 这似乎是一个很大的错误,因为Shebang应该明确地定义 文件的语言。

这可能导致issues 高亮。

答案 4 :(得分:-1)

文件扩展程序是我想到的第一件事。

相关问题