Recentemente, eu estava trabalhando em um projeto github em JavaScript e C ++ e percebi que o github marcou o projeto como C ++. Se você tiver que escolher uma única linguagem, esta provavelmente é a designação correta, já que o código C ++ é compilado como uma biblioteca JavaScript, mas isso me fez pensar ... como o github descobre em qual linguagem marcar cada projeto?
github
github-linguist
Justin Ethier
fonte
fonte
Respostas:
Atualização de abril de 2013, por nuclearsandwich (equipe de suporte do GitHub ou "supportocat"):
a página de ajuda " Meu repositório está marcado como o idioma errado " menciona o uso da biblioteca linguística para determinar o idioma do arquivo para realce de sintaxe e estatísticas de repositório . O Linguist excluirá certos nomes de arquivo e caminhos da estatística, excluindo certos arquivos e diretórios de fornecedores .
a página de ajuda " Por que meu idioma favorito não é reconhecido? " adiciona:
(Resposta original, outubro de 2012)
Este tópico no suporte do GitHub explica isso:
Como isso não é 100% preciso, isso levou alguns a adicionar:
Nota: como Mark Rushakoff menciona em sua resposta (votação positiva), a suposição melhorou desde então com o projeto linguístico (código aberto em junho de 2011).
Você pode ver que ainda há problemas: Problemas de linguista do GitHub .
Veja aqui para mais detalhes :
E você pode adicionar diretivas linguísticas em um arquivo .gitattributes .
fonte
Atualmente, o projeto linguístico do Github é o que é usado para determinar as estatísticas do idioma, conforme descrito nesta postagem do blog do Github (que saiu alguns meses depois que essa pergunta foi feita originalmente).
fonte
Primeiro, saiba que você pode substituir o idioma detectado para arquivos em seu repositório usando substituições do Linguist .
Agora, em poucas palavras,
Como o Linguist detecta os idiomas?
Linguist conta com as seguintes estratégias , em ordem, e retorna o idioma assim que encontra uma correspondência perfeita (estratégia com um único idioma retornado).
Makefile
).#!/bin/bash
shebang será classificado como Shell..h
) são refinados pelas estratégias subsequentes.^[^#]+:-
para Prolog ).O que são arquivos não vendidos e arquivos de documentação?
O Linguist considera alguns arquivos como vendidos , o que significa que não são incluídos nas estatísticas do idioma. Isso inclui bibliotecas de terceiros, como jQuery, e são definidas no
vendor.yml
arquivo de configuração. Você também pode fornecer ou cancelar o fornecimento de arquivos em seu repositório usando substituições do Linguist .Da mesma forma, os arquivos de documentação são definidos
documentation.yml
e podem ser alterados usando as substituições do Linguist .Como os arquivos gerados são detectados?
O Linguist depende de regras simples para detectar os arquivos gerados, usando os caminhos e o conteúdo dos arquivos. Os arquivos gerados não são contados nas estatísticas do idioma e não são exibidos nos diffs em github.com.
E quanto às linguagens de programação e marcação?
Em Linguist, cada idioma recebe um tipo. Esses tipos podem ser encontrados no arquivo de configuração principal
languages.yml
,. Apenas as linguagens de programação e marcação são contadas nas estatísticas.fonte
Depois de alguns ajustes com o linguista , percebi isso.
Para arquivos com um Shebang , o Shebang é considerado ao determinar o idioma, mas parece ter o mesmo peso em relação a outros tokens . Este parece ser um grande erro porque o Shebang deve definir definitivamente o idioma do arquivo.
Isso pode causar problemas com o realce.
fonte
Extensões de arquivo é a primeira coisa que me vem à mente.
fonte
.js
e.cc
, entre outras extensões.