私は最近、JavaScriptとC ++の両方でgithubプロジェクトに取り組んでいて、githubがプロジェクトにC ++のタグを付けていることに気づきました。単一の言語を選択する必要がある場合、C ++コードはJavaScriptライブラリとしてコンパイルされるため、これはおそらく正しい指定ですが、これは私に不思議に思いました... githubは各プロジェクトにタグを付ける言語をどのように判断しますか?
私は最近、JavaScriptとC ++の両方でgithubプロジェクトに取り組んでいて、githubがプロジェクトにC ++のタグを付けていることに気づきました。単一の言語を選択する必要がある場合、C ++コードはJavaScriptライブラリとしてコンパイルされるため、これはおそらく正しい指定ですが、これは私に不思議に思いました... githubは各プロジェクトにタグを付ける言語をどのように判断しますか?
回答:
2013年4月の更新、nuclearsandwich(GitHubサポートチームまたは「supportocat」)による:
ヘルプページ「私のリポジトリは間違った言語としてマークされています」では、構文の強調表示とリポジトリ統計のファイル言語を決定するために言語学者ライブラリを使用することに言及しています。言語学者は、特定のベンダーのファイルとディレクトリを除いて、特定のファイル名とパスを統計から除外します。
ヘルプページ「私の好きな言語が認識されないのはなぜですか?」は次のように付け加えます。
目的の言語がシンタックスハイライトを受信していない場合は、言語学者ライブラリに貢献して追加することができます。
(元の回答、2012年10月)
GitHubサポートに関するこのスレッドはそれを説明しています:
各拡張子のファイルサイズを合計するだけです。最大のものが「勝ち」ます。
どちらもプロセスが遅くなるため、ファイルを開いてコンテンツを解析することは避けたいと思います...しかし、これがこのような競合を解決する唯一の方法である可能性があります。
これは100%正確ではないため、次のように追加する必要がありました。
私も、推測が間違っている場合に備えて、単純な手動オーバーライドスイッチに投票します。
注:Mark Rushakoffが彼の回答(賛成)で述べているように、それ以来、言語学者プロジェクト(2011年6月からオープンソース)で推測が改善されました。
ただし、まだ問題があることがわかります:GitHub言語学者の問題。
詳細については、こちらをご覧ください。
現在、Githubの言語学者プロジェクトは、このGithubブログ投稿(この質問が最初に尋ねられてから数か月後に出てきた)で説明されているように、言語統計を決定するために使用されるものです。
まず、Linguistオーバーライドを使用して、リポジトリ内のファイルに対して検出された言語をオーバーライドできることを知ってください。
さて、一言で言えば、
言語学者はどのように言語を検出しますか?
言語学者は、次の戦略に順番に依存し、完全に一致するものが見つかるとすぐに言語を返します(単一の言語が返される戦略)。
Makefile
)。#!/bin/bash
シバンのあるファイルはシェルとして分類されます。.h
)は、後続の戦略によって洗練されます。^[^#]+:-
Prologの場合)。ベンダーなしのドキュメントファイルとは何ですか?
言語学者は、一部のファイルをベンダーと見なします。つまり、言語統計には含まれていません。これらには、jQueryなどのサードパーティライブラリが含まれ、vendor.yml
構成ファイルで定義されています。Linguistオーバーライドを使用して、リポジトリ内のファイルをベンダーまたはベンダー解除することもできます。
同様に、ドキュメントファイルはで定義されてdocumentation.yml
おり、言語学者のオーバーライドを使用して変更できます。
生成されたファイルはどのように検出されますか?
言語学者は、ファイルのパスとコンテンツの両方を使用して、生成されたファイルを検出するための単純なルールに依存しています。生成されたファイルは言語統計にカウントされず、github.comのdiffに表示されません。
プログラミングとマークアップ言語はどうですか?
言語学者では、各言語にタイプが与えられます。これらのタイプは、メインの構成ファイルにありlanguages.yml
ます。プログラミング言語とマークアップ言語のみが統計にカウントされます。
ファイル拡張子は私の頭に浮かぶ最初のものです。
.js
、.cc
他の拡張子の中でも、ファイルとファイルの両方が含まれていました。