Todas as interações com o site do Exercism são tratadas automaticamente. Os Analyzers têm a responsabilidade única de receber uma solução e retornar um status e eventuais mensagens.
two-fer).analysis.json no diretório de saída.tags.json no diretório de saída.O analyzer recebe 100% dos recursos da máquina em uma janela de 20 segundos por solução. Depois de 20 segundos, o processo é interrompido e reporta um time-out.
Recomendamos fortemente que você siga nosso documento de Boas Práticas de Desempenho para reduzir a chance de timeouts.
O arquivo analysis.json deve seguir esta estrutura:
{
"summary": "This solution looks good but has a few points to address",
"comments": [
{
"comment": "ruby.general.some_parameterised_message",
"params": { "foo": "param1", "bar": "param2" },
"type": "essential"
},
{
"comment": "ruby.general.some_unparameterised_message",
"params": {},
"type": "actionable"
},
{
"comment": "ruby.general.some_unparameterised_message"
},
"ruby.general.some_unparameterised_message"
]
}
summary (opcional)O campo summary é um campo de texto (não markdown) que resume a saída.
Ele pode dizer algo como "Sua solução está quase pronta: faltam só duas pequenas mudanças que você pode fazer." ou "O código funciona muito bem, mas há um pouco de linting a ser feito.".
Esse resumo é exibido no site acima dos comentários.
commentsO campo comments é um array de comentários que apontam para documentos Markdown no exercism/website-copy (veja Escrevendo comentários de Analyzer para mais informações).
Cada valor no array é uma string de ponteiro ou um objeto JSON com o seguinte formato:
commentA string de ponteiro para um arquivo em website-copy.
params (opcional)Um objeto JSON contendo os parâmetros que devem ser interpolados durante a renderização.
Por exemplo, no arquivo markdown, você pode escrever Try %{variable_name} += 1 instead e então definir params como { "variable_name": "foo"} para substituir %{variable_name} pela variável real que o estudante usou.
Ao usar arquivos parametrizados, certifique-se de escapar todos os usos de % colocando outro % na frente dele.
Por exemplo, Try aim aim for 100%% of the tests passing.
type (opcional)Os seguintes valores de type são válidos:
essential: Vamos aplicar um soft-block nos estudantes até que tenham resolvido este comentárioactionable: Qualquer comentário que dá uma instrução específica ao usuário para melhorar a solução deleinformative: Comentários que dão informação, mas que não necessariamente esperam que os estudantes a usem. Por exemplo, em Ruby, se alguém usa concatenação de strings no TwoFer, nós também falamos sobre formatação de strings, mas não sugerimos que seja uma opção melhor.celebratory: Comentários que dizem aos usuários que eles fizeram algo certo, seja como um comentário geral sobre a solução ou sobre uma técnica.Comentários sem um campo type usam informative por padrão.
Atualmente, no site, aplicamos um soft-block em comentários essential, incentivamos os estudantes a resolver os comentários actionable antes de marcar como concluído nos Practice Exercises (mas não nos Concept Exercises), mas não sugerimos nenhuma ação para informative ou celebratory.
No entanto, no futuro podemos optar por adicionar emojis ou indicadores a outros tipos, ou agrupá-los separadamente.
O arquivo tags.json deve seguir esta estrutura:
{
"tags": [
"construct:list",
"paradigm:functional",
"technique:higher-order-functions",
"uses:List.unfold"
]
}
tagsO campo tags é um array de strings.
Cada tag tem o formato: "<category>:<thing>".
Alguns exemplos:
"paradigm:functional""technique:recursion""construct:bitwise-and""uses:DateTime.add_seconds"As tags podem ser usadas para identificar quais construções, técnicas ou paradigmas uma solução usa.
Para mais informações, veja Marcando soluções.
O conteúdo de stdout e stderr de cada execução será gravado em arquivos que podem ser vistos depois.
Você pode escrever um arquivo analysis.out contendo informações de depuração que você queira ver depois.
Antes de construir um analyzer, leia nossas Orientações para Analyzers.