Skip to main content

Usando o linter de conteúdo

Você pode usar o linter de conteúdo para marcar sua contribuições para erros.

Sobre o linter de conteúdo do GitHub Docs

Nosso linter de conteúdo impõe regras de guia de estilo em nosso conteúdo Markdown.

O linter usa markdownlint como estrutura para executar verificações, relatar falhas e corrigir automaticamente o conteúdo, quando possível. Essa estrutura executa regras específicas de forma flexível, fornece mensagens de erro descritivas e corrige erros. O linter de conteúdo do GitHub Docs usa várias regras markdownlint existentes e regras personalizadas adicionais para marcar o conteúdo de Markdown em nossos diretórios de content e data. Nossas regras personalizadas implementam verificações que ainda não estão disponíveis na estrutura markdownlint ou são específicas do conteúdo do GitHub Docs. As regras verificam a sintaxe de Markdown e Liquid.

Executar o linter de conteúdo do GitHub Docs

O linter de conteúdo do GitHub Docs será executado automaticamente na pré-commit, mas você também poderá executá-lo manualmente.

Executar automaticamente o linter na pré-commit

Quando você estiver gravando conteúdo localmente e confirmando arquivos usando a linha de comando, esses arquivos preparados serão automaticamente lintados pelo linter de conteúdo. Tanto os avisos quanto os erros são relatados, mas somente os erros impedirão a conclusão do commit.

Se for relatado algum erro, o commit não será concluído. Você precisará corrigir os erros relatados, adicionar novamente os arquivos alterados e confirmar as alterações novamente. Todos os erros relatados devem ser corrigidos para evitar a introdução de erros no conteúdo que violem o guia de estilo do GitHub Docs. Se algum aviso for relatado, você poderá optar por corrigi-lo ou não.

Quando você está escrevendo conteúdo localmente, há várias regras que podem ser corrigidas automaticamente usando a linha de comando. Se quiser corrigir automaticamente os erros que podem ser corrigidos, consulte "Corrigir automaticamente os erros que podem ser corrigidos".

Se estiver editando um arquivo na interface do usuário do GitHub, você não poderá corrigir erros automaticamente nem executar o linter em um commit, mas receberá uma falha de CI se o conteúdo violar alguma regra com uma gravidade de error.

Executar o linter manualmente

Executar o linter em arquivos preparados e alterados

Use o comando a seguir para executar o linter localmente nos arquivos preparados e alterados. Ele produzirá falhas de gravidade warning e error.

npm run lint-content

Executar o linter em arquivos preparados e alterados e relatar apenas erros

Use o comando a seguir para executar o linter localmente nos arquivos preparados e alterados e relatar apenas falhas de gravidade error.

npm run lint-content -- --errors

Executar o linter em arquivos ou diretórios específicos

Use o comando a seguir para executar o linter localmente em arquivos ou diretórios específicos. Separe vários caminhos com um espaço. Você pode incluir arquivos e diretórios no mesmo comando.

Shell
npm run lint-content -- \
  --paths content/FILENAME.md content/DIRECTORY

Corrigir automaticamente erros que podem ser corrigidos

Se um erro tiver fixable: true em sua descrição, você poderá usar os comandos a seguir para corrigi-los automaticamente.

Execute este comando para corrigir somente arquivos preparados e alterados:

npm run lint-content -- --fix

Execute este comando para corrigir arquivos ou diretórios específicos:

npm run lint-content -- \
  --fix --paths content/FILENAME.md content/DIRECTORY

Executar um conjunto específico de regras de linter

Use o comando a seguir para executar uma ou mais regras de linter específicas. Esses exemplos executam as regras heading-increment e code-fence-line-length. Substitua heading-increment code-fence-line-length por um ou mais aliases de linter que você gostaria de executar. Para ver a lista de regras do linter que você pode passar nessa opção, execute npm run lint-content -- --help. Você pode usar o nome curto (por exemplo, MD001) ou o nome longo (por exemplo, heading-increment) de uma regra de linter.

Execute as regras de linter especificadas em todos os arquivos preparados e alterados:

npm run lint-content -- \
  --rules heading-increment code-fence-line-length

Execute as regras de linter definidas em arquivos ou diretórios específicos:

npm run lint-content -- \
  --rules heading-increment code-fence-line-length \
  --path content/FILENAME.md content/DIRECTORY

Ignorar o gancho de confirmação

Se o linter detectar erros que você não introduziu, você poderá ignorar o gancho de confirmação do git usando a opção --no-verify ao confirmar as alterações.

git commit -m 'MESSAGE' --no-verify

Exibir o menu de ajuda para o script de linter de conteúdo

npm run lint-content -- --help

Regras de lint

Cada regra é configurada em um arquivo no src/content-linter/style, que é onde as severidades das regras são definidas.

Os erros devem ser corrigidos antes de mesclar suas alterações com o branch main. Os avisos devem ser tratados, mas não impedem que uma alteração seja mesclada no branch main. A maioria das regras será eventualmente promovida a erros, quando o conteúdo não tiver mais violações de aviso.

ID da regraNomes das regrasDescriçãoSeveridadeMarcas
MD001heading-incrementOs níveis de cabeçalho só devem ser incrementados em um nível de cada vezerrotítulos
MD004ul-styleEstilo de lista não ordenadaerromarcador, ul
MD009no-trailing-spacesEspaços à direitaerroespaço em branco
MD011no-reversed-linksSintaxe de links invertidoserrolinks
MD012no-multiple-blanksVárias linhas em branco consecutivaserrowhitespace, blank_lines
MD014commands-show-outputCifrões usados antes dos comandos sem mostrar a saídaerrocódigo
MD018no-missing-space-atxNenhum espaço após o hash no título de estilo atxerrotítulos, atx, espaços
MD019no-multiple-space-atxVários espaços após o hash no título de estilo atxerrotítulos, atx, espaços
MD022blanks-around-headingsTítulos devem ser delimitados por linhas em brancoerrotítulos, blank_lines
MD023heading-start-leftTítulos devem começar no início da linhaerrotítulos, espaços
MD027no-multiple-space-blockquoteVários espaços após o símbolo de citação em blocoerrocitação em bloco, espaço em branco, recuo
MD029ol-prefixPrefixo do item de lista ordenadaerrool
MD030list-marker-spaceEspaços após marcadores de listaerrool, ul, espaço em branco
MD031blanks-around-fencesBlocos de código cercados devem ser delimitados por linhas em brancoerrocode, blank_lines
MD037no-space-in-emphasisEspaços dentro dos marcadores de ênfaseerroespaços em branco, ênfase
MD039no-space-in-linksEspaços dentro do texto do linkerroespaços em branco, links
MD040fenced-code-languageBlocos de código cercados devem ter uma linguagem especificadaerrocódigo, linguagem
MD042no-empty-linksNenhum link vazioerrolinks
MD047single-trailing-newlineOs arquivos devem terminar com um único caractere de nova linhaerroblank_lines
MD049emphasis-styleEstilo de ênfaseerroemphasis
MD050strong-styleEstilo forteerroemphasis
search-replacetodocs-placeholderCaptura ocorrências do espaço reservado TODOCS.erro
search-replacedocs-domainCaptura ocorrências do domínio docs.github.com.erro
search-replacehelp-domainCaptura ocorrências do domínio help.github.com.erro
search-replacepreview-domainCaptura ocorrências do domínio preview.ghdocs.com.erro
search-replacedeveloper-domainCaptura ocorrências do domínio developer.github.com.erro
search-replacedeprecated liquid syntax: site.dataCaptura ocorrências da sintaxe de dados líquida obsoleta.erro
search-replacedeprecated liquid syntax: octicon-A sintaxe líquida octicon usada está obsoleta. Em vez disso, use este formato octicon "<octicon-name>" aria-label="<Octicon aria label>"erro
GH001no-default-alt-textAs imagens devem ter um texto alternativo significativo (texto Alt)erroacessibilidade, imagens
GH002no-generic-link-textEvite usar texto de link genérico, como Learn more ou Click hereerroacessibilidade, links
GHD030code-fence-line-lengthAs linhas de cercas de código não devem exceder um comprimento máximogeralcódigo, acessibilidade
GHD032image-alt-text-end-punctuationO texto alternativo para imagens deve terminar com pontuaçãoerroacessibilidade, imagens
GHD004image-file-kebab-caseOs nomes dos arquivos de imagem devem usar maiúsculas e minúsculaserroimages
GHD033incorrect-alt-text-lengthO texto alternativo de imagens deve ter entre 40 e 150 caracteresgeralacessibilidade, imagens
GHD002internal-links-no-langOs links internos não devem ter um código de idioma codificadoerrolinks, url
GHD003internal-links-slashOs links internos devem começar com um /errolinks, url
GHD031image-alt-text-exclude-wordsO texto alternativo para imagens não deve começar com palavras como "imagem" ou "gráfico"erroacessibilidade, imagens
GHD034list-first-word-capitalizationA primeira palavra do item da lista deve ser em maiúsculasgeralul, ol
GHD001link-punctuationOs títulos dos links internos não devem conter pontuaçãoerrolinks, url
GHD008early-access-referencesArquivos que não são de acesso antecipado não devem fazer referência a arquivos early-access ou early-access-fileserrorecursos, acesso antecipado
GHD021yaml-scheduled-jobsSnippets YAML que incluem fluxos de trabalho agendados não devem ser executados por hora e devem ser exclusivoserrorecurso, ações
GHD006internal-links-old-versionLinks internos não devem ter uma versão codificada usando a sintaxe de controle de versão antigaerrolinks, url, controle de versão
GHD005hardcoded-data-variableCadeias de caracteres que contêm "token de acesso pessoal" devem usar a variável product em vez dissoerrosingle-source
GHD013github-owned-action-referencesReferências de ações de propriedade do GitHub não devem ser codificadaserrorecurso, ações
GHD016liquid-quoted-conditional-argTags condicionais líquidas não devem citar o argumento condicionalerrolíquido, formato
GHD014liquid-data-references-definedDados líquidos ou referências de dados recuados foram encontrados em conteúdo que não tem valor ou não existe no diretório de dadoserroliquid
GHD015liquid-data-tag-formatAs tags de dados líquidos ou de referências de dados recuados devem estar no formato adequado e ter número de argumentos e espaçamento corretos.errolíquido, formato
GHD010frontmatter-hidden-docsArtigos com a propriedade de frontmatter hidden só podem ser localizados em produtos específicoserrofrontmatter, recurso, acesso antecipado
GHD009frontmatter-early-access-referencesArquivos que não são de acesso antecipado não devem ter um frontmatter que faça referência a early-accesserrofrontmatter, recurso, acesso antecipado
GHD011frontmatter-video-transcriptsA transcrição de vídeo deve ser configurada corretamenteerrofrontmatter, recurso, transcrições de vídeo
GHD012frontmatter-schemaO frontmatter deve estar em conformidade com o esquemaerrofrontmatter, esquema
GHD007code-annotationsAs anotações de código definidas em Markdown devem conter uma propriedade frontmatter de layout específicaerrocódigo, recurso, anotação, frontmatter
GHD017frontmatter-liquid-syntaxAs propriedades do frontmatter devem usar o Liquid válidoerroliquid, frontmatter
GHD018liquid-syntaxO conteúdo do Markdown deve usar o Liquid válidoerroliquid
GHD019liquid-if-tagsTags lifversion Liquid devem ser usadas em vez de tags if quando o argumento for uma versão válidaerroliquid, controle de versão
GHD020liquid-ifversion-tagsAs tags ifversion Liquid devem conter nomes de versão válidos como argumentoserroliquid, controle de versão
GHD022liquid-ifversion-versionsLíquid ifversion (e elsif) nem sempre deve ser truegeralliquid, controle de versão
GHD035rai-reusable-usageArtigos RAI e reutilizáveis só podem fazer referência a conteúdo reutilizável no diretório data/reusables/raierrorecurso, rai
GHD036image-no-gifA imagem não deve ser um gif, referência do guia de estilo: contributing/style-guide-and-content-model/style-guide.md#imageserroimages
GHD038conteúdo expiradoO conteúdo expirado deve ser corrigido.erroExpirado
GHD039expirará em breveO conteúdo que expira em breve deve ser tratado de forma proativa.geralExpirado
GHD040table-liquid-versioningAs tabelas devem usar o formato de controle de versão líquido corretoerrotabelas
GHD041third-party-action-pinningOs exemplos de código que usam ações de terceiros precisam sempre ser fixados em um SHA de commit de comprimento completoerrorecurso, ações

Sintaxe para regras de lint

Algumas regras de lint retornam avisos ou erros com base em comentários HTML que você pode adicionar a artigos.

Sintaxe para conteúdo em expiração e expirado

Verificação GHD038 e GHD039 de regras para conteúdo que recebeu manualmente uma data de validade. Quatorze dias antes da data especificada, o linter de conteúdo retornará um aviso de que o conteúdo está expirando em breve. A partir da data especificada, o linter de conteúdo retornará um erro e sinalizará o conteúdo para correção.

Você pode adicionar uma data de término ao conteúdo encapsulando-o em marcas HTML que contêm uma data de término no formato: <!-- expires yyyy-mm-dd --> <!-- end expires yyyy-mm-dd -->

Use:

This content does not expire.
<!-- expires 2022-01-28 -->
This content expires on January 28, 2022.
<!-- end expires 2022-01-28 -->
This content also does not expire.

Observe que, se você estiver colocando as tags expiradas em um elemento HTML table, certifique-se de que a tag percorra toda a linha e não apenas a célula. Por exemplo:

<!-- expires 2024-06-28 -->
<tr>
<td>
macOS
</td>
<td>
The <code>macos-11</code> label is descontinuado and will no longer be available after 28 June 2024.
</td>
</tr>
<!-- end expires 2024-06-28 -->

Suprimir regras de linter

Ocasionalmente, talvez você precise documentar algo que viola uma ou mais regras do linter. Nesses casos, é possível suprimir regras adicionando um comentário ao arquivo Markdown. Você pode desabilitar todas as regras ou regras específicas. Sempre tente limitar o mínimo possível de regras. É possível desabilitar uma regra para um arquivo inteiro, para uma seção de um arquivo Markdown, uma linha específica ou a próxima linha.

Por exemplo, se você estiver escrevendo um artigo que inclua a expressão regular (^|/)[Cc]+odespace/, que verifica a sintaxe de links invertidos, ele acionará a regra MD011, que verifica links invertidos. Você pode desabilitar a regra MD011 nessa linha específica adicionando o seguinte comentário.

(^|/)[Cc]+odespace/ <!-- markdownlint-disable-line MD011 -->

Se a linha que você está tentando ignorar estiver em um bloco de código, será possível ignorar esse bloco cercando-o com os seguintes comentários.

<!-- markdownlint-disable MD011 -->
```
(^|/)[Cc]+odespace/
```
<!-- markdownlint-enable MD011 -->

É possível usar esses comentários para habilitar ou desabilitar regras.

ComentárioEfeito
<!-- markdownlint-disable -->Desabilitar todas as regras
<!-- markdownlint-enable -->Habilitar todas as regras
<!-- markdownlint-disable-line -->Desabilitar todas as regras para a linha atual
<!-- markdownlint-disable-next-line -->Desabilitar todas as regras para a próxima linha
<!-- markdownlint-disable RULE-ONE RULE-TWO -->
<!-- markdownlint-enable RULE-ONE RULE-TWO -->Habilitar uma ou mais regras por nome
<!-- markdownlint-disable-line RULE-NAME -->Desabilitar uma ou mais regras por nome para a linha atual
<!-- markdownlint-disable-next-line RULE-NAME -->Desabilitar uma ou mais regras por nome para a próxima linha