Buscar/Adicionar extensões de arquivo ou novas linguagens a um repositório de detecção de linguagens

Adicionar extensões de arquivo ou novas linguagens a um repositório de detecção de linguagens

Use quando uma IA adicionar extensões ou linguagens a um detector de linguagens. Adiciona amostras de código real e regras testadas para extensões compartilhadas, usa os scripts do repositório para o que é gerado e confere uso e licenças antes do envio.

Para usar estas regras de IA
## Identificar quais arquivos e ferramentas cuidam de cada parte da detecção Antes de editar, identifique quais arquivos e ferramentas controlam cada parte da detecção de linguagens: - o cadastro de linguagens para nomes, extensões, nomes de arquivos e propriedades da linguagem; - as regras heurísticas e sua implementação para arquivos ambíguos; - o classificador estatístico e seu corpus de amostras reais; - o cadastro de gramáticas usado para realce de sintaxe; - as fontes de gramáticas incorporadas e os dados de licença armazenados em cache; - os scripts de manutenção, testes e pontos de entrada da integração contínua. Trate essas áreas como contratos coordenados. Uma alteração de metadados pode exigir amostras, heurísticas, identificadores gerados, dados de gramática, testes e evidências, em vez de uma única edição isolada. ## Preparar o projeto no contêiner de desenvolvimento e usar seus scripts Quando disponível, prefira o contêiner de desenvolvimento ou o ambiente hospedado mantido pelo repositório. Ele deve fornecer o runtime da linguagem declarado, as ferramentas de pacotes, o runtime de contêiner, as bibliotecas nativas e todas as dependências do projeto. Ao trabalhar localmente: 1. Execute o comando oficial de preparação. 2. Invoque a biblioteca ou a ferramenta de linha de comando por meio do executor de dependências do repositório. 3. Use os scripts de manutenção documentados em vez de reproduzir seus efeitos manualmente. 4. Confirme a presença das dependências nativas necessárias para detectar codificação, acessar o repositório ou trabalhar com gramáticas. Não trate uma invocação improvisada que funcionou localmente como prova de que o ambiente com suporte também passará nas verificações. ## Adicionar uma extensão em ordem alfabética e com amostras reais Ao adicionar uma extensão de arquivo a uma linguagem existente: 1. Atualize a entrada oficial da linguagem. 2. Mantenha as listas de extensões na ordem alfabética exigida, diferenciando maiúsculas de minúsculas, com maiúsculas antes de minúsculas e a extensão principal em primeiro lugar. 3. Adicione arquivos de amostra representativos do uso real sob a linguagem responsável. 4. Se outra linguagem compartilhar a extensão, forneça pelo menos duas amostras e adicione uma heurística de desambiguação. 5. Adicione ou atualize testes para os metadados e para o comportamento da heurística. Não use exemplos comuns de tutoriais, como programas triviais de saudação, como evidência para o classificador. As amostras devem refletir código real que o detector deve reconhecer. ## Adicionar uma nova linguagem com gramática e um ID gerado por script Uma nova linguagem exige mais do que um rótulo no cadastro: 1. Adicione a entrada da linguagem, mas deixe seu identificador gerado sem definição. 2. Cadastre uma gramática aprovada e compatível para realce de sintaxe por meio da ferramenta oficial de gramáticas. 3. Adicione arquivos de amostra representativos de fontes originais verificáveis. 4. Execute o script de geração de identificadores em vez de atribuir um identificador manualmente. 5. Se qualquer extensão for compartilhada, forneça pelo menos duas amostras e adicione regras de desambiguação testadas. 6. Verifique em conjunto os metadados, o cadastro da gramática, a classificação e as alterações geradas. Mantenha intactas as orientações do cabeçalho do cadastro, os requisitos dos campos e a ordenação que diferencia maiúsculas de minúsculas. ## Escrever regras regex testadas para distinguir linguagens com a mesma extensão As heurísticas devem resolver ambiguidades reais sem criar falsos positivos amplos. - Busque a menor evidência distintiva que separe as linguagens concorrentes. - Mantenha cada padrão linear em relação ao tamanho da entrada. - Evite estruturas vulneráveis a ataques de negação de serviço por expressões regulares. - Use somente a sintaxe aceita pelo mecanismo de expressões regulares exigido pelo repositório. - Teste casos positivos, casos da linguagem concorrente e casos próximos do limite. - Execute a validação cruzada do classificador quando uma alteração de heurística ou amostra puder mudar o comportamento da detecção. Toda heurística deve ter testes. Uma regra que reconhece o alvo, mas também captura arquivos sem relação, não é aceitável. ## Regenerar os arquivos com os comandos de manutenção, sem editá-los à mão Não edite manualmente cadastros gerados, declarações de módulos, conteúdo de gramáticas incorporadas ou arquivos de licença de gramáticas armazenados em cache. Use o comando de manutenção responsável para adicionar ou substituir uma gramática e revise todas as alterações que ele gerar. Antes de aceitar uma gramática: - confirme a compatibilidade com o formato de realce de sintaxe usado pelo projeto; - verifique se a licença está na lista aprovada; - preserve a URL oficial da fonte e o registro da licença; - execute a validação específica da gramática no ambiente de contêiner com suporte. Se o resultado gerado estiver incorreto, corrija a entrada de origem ou o fluxo de geração em vez de remendar o resultado. ## Rodar a validação cruzada do classificador e todos os testes Execute primeiro as verificações relevantes mais restritas e depois toda a validação obrigatória do repositório: 1. Valide os metadados alterados e sua ordenação. 2. Execute os testes das novas amostras e heurísticas. 3. Execute a validação cruzada do classificador quando os limites de detecção puderem mudar. 4. Execute o conjunto completo de testes por meio do executor oficial de dependências. 5. Confirme que a integração contínua passa pelas mesmas etapas obrigatórias. Analise as falhas em busca de falsos positivos, desvios em arquivos gerados, dependências nativas ausentes, dados de gramática inválidos e alterações não intencionais em linguagens sem relação. ## Mostrar evidências de uso e licenças das amostras antes do envio Antes de abrir uma solicitação de contribuição: - use o modelo fornecido e remova somente as seções irrelevantes; - vincule evidências de pesquisa pública para cada extensão adicionada, excluindo bifurcações; - apresente pelo menos 2000 arquivos indexados para extensões comuns ou 200 arquivos para nomes que normalmente aparecem uma vez por repositório; - confira se há distribuição razoável entre diferentes combinações de usuários e repositórios, considerando usuários com participação anormalmente alta; - vincule cada amostra à fonte original, não à bifurcação usada para a contribuição; - informe individualmente a licença de cada amostra de código; - passe em todos os testes obrigatórios e verificações de integração contínua; - mantenha a alteração focada e não a combine com refatorações sem relação. Se algum requisito não for atendido, não abra a solicitação. Explique qual evidência, licença, teste ou condição de escopo está faltando e o que precisa ser concluído primeiro.