Este documento explica como adicionar um novo Exercício de Prática.
A forma mais simples de ver que Exercícios de Prática ainda não foram implementados é ir à página de construção do percurso (por exemplo, https://exercism.org/tracks/csharp/build) e ver a secção «Exercícios de Prática».
Os dados da página de construção são atualizados uma vez por dia.
Podes criar rapidamente a estrutura de um novo Exercício de Prática executando o script bin/add-practice-exercise (código-fonte) a partir do diretório raiz do percurso:
bin/add-practice-exercise <exercise-slug>
Opcionalmente, também podes especificar a dificuldade do exercício (com -d) e/ou o nome de utilizador do autor no GitHub (com -a):
bin/add-practice-exercise -d 3 -a foobar <exercise-slug>
Se estiveres a trabalhar num repositório de um percurso que não tenha este ficheiro, podes copiá-los para o teu repositório usando a ligação para o código-fonte acima.
Depois de criados os ficheiros da estrutura base, terás de:
.meta/config.json do exercício:
authors o nome de utilizador no GitHub dos autores do exercícioconfig.json do percurso:
practices (só é necessário quando o percurso tem exercícios de conceito)prerequisites (só é necessário quando o percurso tem exercícios de conceito)Uma parte essencial de adicionar um exercício é adicionar testes. De um modo geral, há duas opções quando adicionas testes a um Exercício de Prática:
canonical-data.json do exercício, disponíveis no repositório problem-specifications.https://exercism.org/exercises/<slug> para veres que percursos já implementaram um determinado exercício).A segunda opção pode ser especialmente apelativa, porque dá resultados rapidamente. Tem em atenção, no entanto, que deves ajustar a implementação para se adequar o melhor possível ao teu percurso. Por exemplo, alguns percursos não usam classes e trabalham apenas com funções. Se, no entanto, o teu percurso costuma trabalhar com objetos, deves adaptar a implementação ao que melhor se adequa.
Alguns percursos usam um gerador de testes para (re)gerar automaticamente o(s) ficheiro(s) de testes de um exercício. Consulta a documentação do percurso para ver se existe um gerador de testes e, em caso afirmativo, como o usar.
Para garantir que é possível escrever código que passa nos testes, é preciso adicionar uma implementação de exemplo.
O código não tem de ser idiomático; só tem de passar nos testes.
Podes verificar que a implementação de exemplo passa em todos os testes executando o script bin/verify-exercises (código-fonte) a partir do diretório raiz do percurso:
bin/verify-exercises <exercise-slug>
Usa a saída para verificar que a implementação de exemplo passa em todos os testes.
Se estiveres a trabalhar num repositório de um percurso que não tenha este ficheiro, podes copiá-los para o teu repositório usando a ligação para o código-fonte acima.
Nos bastidores, o script bin/verify-exercises faz várias coisas:
O(s) ficheiro(s) de implementação stub fornecem um ponto de partida para os estudantes.
Recomendamos que os ficheiros stub tenham a quantidade mínima de código para que:
Na prática, isto significa definir as funções/métodos que são testados pelo conjunto de testes. Os percursos são livres de organizar este código como quiserem, desde que garantam que o código stub falha inicialmente todos os testes.
Python:
def two_fer(name):
pass
Kotlin:
fun twofer(name: String): String {
TODO("Implement the function to complete the task")
}
O passo final é executar o linter para verificar se os ficheiros (de configuração) do percurso estão devidamente estruturados, tanto a nível sintático como semântico.
Primeiro, certifica-te de que tens a versão mais recente do configlet executando:
bin/fetch-configlet
Depois, executa o linter com:
bin/configlet lint
Usa a saída para verificar que está tudo bem.
Quando estiver tudo bem, podes submeter um Pull Request ao repositório do percurso.
Antes de submeteres, lê o Guia de Pull Requests para Contribuidores e o Guia de Pull Requests.
Garante que a descrição do PR indica o exercício que está a ser adicionado.