我最近正在使用JavaScript和C ++进行github项目,并注意到github将项目标记为C ++。如果您必须选择一种语言,这可能是正确的名称,因为C ++代码被编译为JavaScript库,但这使我感到奇怪... github如何找出标记每个项目的语言?
我最近正在使用JavaScript和C ++进行github项目,并注意到github将项目标记为C ++。如果您必须选择一种语言,这可能是正确的名称,因为C ++代码被编译为JavaScript库,但这使我感到奇怪... github如何找出标记每个项目的语言?
Answers:
由nuclearsandwich(GitHub支持团队或“ supportocat”)于2013年4月更新:
帮助页面“我的存储库被标记为错误的语言”提到现在使用语言库来确定语法突出显示和回购统计信息的文件语言。语言学家将从统计信息中排除某些文件名和路径,不包括某些供应商文件和目录。
帮助页面“为什么无法识别我最喜欢的语言? ”添加:
如果您所需的语言没有收到语法突出显示,您可以向语言学家图书馆添加它。
(原始答案,2012年10月)
GitHub支持上的该线程对此进行了解释:
它只是汇总每个扩展名的文件大小。最大的一个“获胜者”。
我们希望避免打开文件并解析它们的内容,因为两者都会减慢该过程的速度……但这可能是解决此类冲突的唯一方法。
由于这不是100%准确的,因此需要增加一些内容:
对于猜测错误的情况,我也将投票支持一个简单的手动替代开关。
注意:正如马克·拉沙科夫(Mark Rushakoff)在回答中提到的那样(建议),此后语言学家项目(自2011年6月开源)的猜测变得更好。
您仍然可以看到问题:GitHub Linguist Issues。
看到这里更多细节:
首先,要知道您可以使用Linguist覆盖覆盖为存储库中的文件检测到的语言。
简而言之,
语言学家如何检测语言?
语言学家依序采用以下策略,并在找到完全匹配的语言(返回一种语言的策略)后立即返回该语言。
Makefile
)。#!/bin/bash
Shebang的文件将归类为Shell。.h
)可以通过后续策略来完善。^[^#]+:-
Prolog)。什么是未提供的文档文件?
语言学家将某些文件视为已出售,这意味着它们不包含在语言统计中。这些包括第三方库(例如jQuery),并且在vendor.yml
配置文件中定义。您还可以使用Linguist覆盖覆盖供应商中的供应商文件或不供应商文件。
同样,文档文件在语言定义中定义,documentation.yml
并且可以使用Linguist替代进行更改。
如何检测生成的文件?
语言学家依靠简单的规则使用文件的路径和内容来检测生成的文件。生成的文件不计入语言统计信息中,也不显示在github.com上的差异中。
编程和标记语言呢?
在语言学家中,每种语言都有一种类型。这些类型可以在主配置文件中找到languages.yml
。统计仅统计编程语言和标记语言。