Skip to main content

Utilisation de l'analyseur de contenu

Vous pouvez utiliser linter de contenu pour vérifier vos contributions en cas d’erreurs.

Présentation de l'analyseur de contenu de GitHub Docs

Notre linter de contenu applique des règles du guide stylistique dans nos contenus Markdown.

Le linter utilise markdownlint comme infrastructure pour effectuer des vérifications, signaler des défauts et corriger automatiquement le contenu, dans la mesure du possible. Cette infrastructure exécute de manière flexible des règles spécifiques, fournit des messages d’erreur descriptifs et corrige les erreurs. Le linter de contenu GitHub Docs utilise plusieurs règles existantes markdownlint et des règles personnalisées supplémentaires pour vérifier le contenu Markdown dans nos répertoires content etdata. Nos règles personnalisées implémentent des vérifications qui ne sont pas encore disponibles dans l’infrastructure markdownlint ou qui sont spécifiques au contenu GitHub Docs. Les règles vérifient la syntaxe pour Markdown et Liquid.

Exécution du linter de contenu GitHub Docs

Le linter de contenu GitHub Docs s’exécute automatiquement lors de la pré-validation, mais vous pouvez également l’exécuter manuellement.

Exécuter automatiquement le linter avant la validation

Lorsque vous rédigez du contenu localement et validez des fichiers via la ligne de commande, ces fichiers mis en scène seront automatiquement analysés par le linter de contenu. Les avertissements et les erreurs sont signalés, mais seules les erreurs empêchent la fin de votre validation.

Si des erreurs sont signalées, votre validation ne se terminera pas. Vous devrez corriger les erreurs signalées, rajouter les fichiers modifiés et valider de nouveau vos modifications. Toutes les erreurs signalées doivent être corrigées pour empêcher l’introduction d’erreurs qui ne respectent pas le guide de style GitHub Docs dans le contenu. Si des avertissements sont signalés, vous pouvez éventuellement choisir de les corriger ou non.

Quand vous écrivez du contenu localement, il existe plusieurs règles que vous pouvez corriger automatiquement à l’aide de la ligne de commande. Si vous souhaitez corriger automatiquement les erreurs qui peuvent être corrigées, consultez Corriger automatiquement les erreurs qui peuvent être corrigées.

Si vous modifiez un fichier dans l’interface utilisateur de GitHub, vous ne pourrez pas corriger automatiquement les erreurs ou exécuter le linter sur un commit, mais vous recevrez un échec de CI si le contenu enfreint des règles d'un niveau de gravité de error.

Exécuter manuellement le linter

Exécutez le linter sur les fichiers mis en scène et modifiés.

Utilisez la commande suivante pour exécuter le linter localement sur vos fichiers mis en scène et modifiés. Il affichera à la fois les warning et error défauts de gravité.

npm run lint-content

Exécutez le linter sur les fichiers mis en scène et modifiés et ne signalez que les erreurs

Utilisez la commande suivante pour exécuter le linter localement sur vos fichiers mis en scène et modifiés, et ne signaler que les error défauts de gravité.

npm run lint-content -- --errors

Exécuter le linter sur des fichiers ou des répertoires spécifiques

Utilisez la commande suivante pour exécuter le linter localement sur des fichiers ou des répertoires spécifiques. Séparez plusieurs chemins par un espace. Vous pouvez inclure des fichiers et des répertoires dans la même commande.

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

Corriger automatiquement les erreurs qui peuvent être corrigées

Si une erreur a fixable: true dans sa description, vous pouvez utiliser les commandes suivantes pour les corriger automatiquement.

Exécutez cette commande pour corriger uniquement les fichiers intermédiaires et modifiés :

npm run lint-content -- --fix

Exécutez cette commande pour corriger des fichiers ou des répertoires spécifiques :

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

Exécutez un ensemble spécifique de règles du linter

Utilisez la commande suivante pour exécuter une ou plusieurs règles linter spécifiques. Ces exemples exécutent les règles heading-increment et code-fence-line-length. Remplacezheading-increment code-fence-line-lengthpar un ou plusieurs alias du linter que vous souhaitez exécuter. Pour voir la liste des règles du linter que vous pouvez passer à cette option, exécuteznpm run lint-content -- --help. Vous pouvez utiliser le nom court (par exemple, MD001) ou le nom long (par exemple, heading-increment) d’une règle linter.

Exécutez les règles du linter spécifiées sur tous les fichiers mis en scène et modifiés :

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

Exécutez les règles linter spécifiées sur des fichiers ou des répertoires spécifiques :

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

Contournez le hook de commit.

Si le linter détecte des erreurs que vous n'avez pas introduites, vous pouvez contourner le hook de validation de git en utilisant l'--no-verifyoption lors de la validation de vos modifications.

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

Afficher le menu d’aide pour le script linter de contenu

npm run lint-content -- --help

Règles de linting

Chaque règle est configurée dans un fichier dans src/content-linter/style, où les niveaux de gravité des règles sont définis.

Les erreurs doivent être traitées avant de fusionner vos modifications dans la branche main. Les avertissements doivent être traités, mais n’empêchent pas la fusion d’une modification dans la branche main. La plupart des règles seront finalement promues en erreurs, une fois que le contenu ne comportera plus de violations signalées comme avertissements.

Identificateur de la règleNom(s) de règleDescriptionSeverityBalises
MD001heading-incrementLes niveaux de titre ne doivent augmenter que d'un niveau à la foiserreurtitres
MD011no-reversed-linksSyntaxe de lien inverséeerreurliens
MD014commands-show-outputSignes dollar utilisés avant des commandes sans afficher la sortieerreurcode
MD018no-missing-space-atxAucun espace après le dièse dans un titre de style atxerreurtitres, atx, espaces
MD019no-multiple-space-atxEspaces multiples après le dièse dans un titre de style atxerreurtitres, atx, espaces
MD023heading-start-leftLes titres doivent commencer au début de la ligneerreurtitres, espaces
MD027no-multiple-space-blockquoteEspaces multiples après le symbole de bloc de citationerreurbloc de citation, espace blanc, indentation
MD029ol-prefixPréfixe d'élément de liste ordonnéeerreurol
MD030list-marker-spaceEspaces après les marqueurs de listeerreurol, ul, espaces blancs
MD031blanks-around-fencesLes blocs de code délimités doivent être entourés de lignes videserreurcode, lignes_vides
MD037no-space-in-emphasisEspaces à l'intérieur des marqueurs d'emphaseerreurespaces blancs, emphase
MD039no-space-in-linksEspaces à l'intérieur du texte du lienerreurespaces blancs, liens
MD040fenced-code-languageLes blocs de code délimités doivent spécifier un langageerreurcode, langage
MD042no-empty-linksAucun lien videerreurliens
MD050strong-styleStyle de mise en évidence forteerreuremphase
GH001no-default-alt-textLes images doivent avoir un texte de remplacement pertinent (texte alt)erreuraccessibilité, images
GH002no-generic-link-textÉvitez d'utiliser un texte de lien générique comme Learn more ou Click hereerreuraccessibilité, liens
GHD001link-punctuationLes titres de lien internes ne doivent pas contenir de ponctuationerreurliens, url
GHD002internal-links-no-langLes liens internes ne doivent pas avoir de code de langue codé en durerreurliens, url
GHD003internal-links-slashLes liens internes doivent commencer par un /erreurliens, url
GHD004image-file-kebab-caseLes noms de fichiers d'image doivent utiliser le kebab-caseerreurimages
GHD005hardcoded-data-variableLes chaînes qui contiennent « personal access token » doivent utiliser la variable de produit à la placeerreursingle-source
GHD006internal-links-old-versionLes liens internes ne doivent pas avoir de version codée en dur avec une ancienne syntaxe de gestion des versionserreurliens, url, gestion des versions
GHD007code-annotationsLes annotations de code définies en Markdown doivent contenir une propriété frontmatter de disposition spécifiqueerreurcode, fonctionnalité, annotation, frontmatter
GHD008early-access-referencesLes fichiers qui ne sont pas en accès anticipé ne doivent pas référencer early-access ou des fichiers early-accesserreurfonctionnalité, accès anticipé
GHD009frontmatter-early-access-referencesLes fichiers qui ne sont pas en accès anticipé ne doivent pas avoir de frontmatter qui référence early-accesserreurfrontmatter, fonctionnalité, accès anticipé
GHD010frontmatter-hidden-docsLes articles avec la propriété frontmatter hidden ne peuvent se trouver que dans des produits spécifiqueserreurfrontmatter, fonctionnalité, accès anticipé
GHD012frontmatter-schemaLe frontmatter doit être conforme au schémaerreurfrontmatter, schéma
GHD013github-owned-action-referencesLes références d’action appartenant à GitHub ne doivent pas être codées en durerreurfonctionnalité, actions
GHD014liquid-data-references-definedDes références Liquid data ou indented data ont été trouvées dans du contenu qui n'a pas de valeur ou n'existe pas dans le répertoire dataerreurliquid
GHD015liquid-data-tag-formatLes balises de références Liquid data ou indented data doivent être correctement formatées et avoir le nombre correct d'arguments et d'espacementserreurliquide, format
GHD016liquid-quoted-conditional-argLes balises conditionnelles Liquid ne doivent pas mettre l'argument conditionnel entre guillemetserreurliquide, format
GHD017frontmatter-liquid-syntaxLes propriétés frontmatter doivent utiliser un Liquid valideerreurliquid, frontmatter
GHD018liquid-syntaxLe contenu Markdown doit utiliser un Liquid valideerreurliquid
GHD019liquid-if-tagsLes balises Liquid ifversion doivent être utilisées au lieu des balises if lorsque l'argument est une version valideerreurliquid, gestion des versions
GHD020liquid-ifversion-tagsLes balises Liquid ifversion doivent contenir des noms de version valides en tant qu'argumentserreurliquid, gestion des versions
GHD021yaml-scheduled-jobsLes extraits YAML qui incluent des workflows planifiés ne doivent pas s'exécuter à l'heure pile et doivent être uniqueserreurfonctionnalité, actions
GHD022liquid-ifversion-versionsLes balises Liquid ifversion, elsif et else doivent être valides et ne pas contenir de versions non prises en charge.erreurliquid, gestion des versions
GHD031image-alt-text-exclude-wordsLe texte de remplacement des images ne doit pas commencer par des mots comme « image » ou « graphic »erreuraccessibilité, images
GHD032image-alt-text-end-punctuationLe texte de remplacement des images doit se terminer par une ponctuationerreuraccessibilité, images
GHD033incorrect-alt-text-lengthLe texte de remplacement des images doit comporter entre 40 et 150 caractèreserreuraccessibilité, images
GHD034frontmatter-curly-quotesLe titre et l’introduction du frontmatter ne doivent pas contenir de guillemets typographiqueserreurfrontmatter, format
GHD035rai-reusable-usageLes articles et ressources réutilisables RAI ne peuvent référencer que du contenu réutilisable dans le répertoire data/reusables/raierreurfonctionnalité, rai
GHD036image-no-gifL'image ne doit pas être un gif, référence du guide de style : contributing/style-guide-and-content-model/style-guide.md#imageserreurimages
GHD038expired-contentLe contenu expiré doit être corrigé.avertissementexpiré
GHD039expiring-soonLe contenu qui expire bientôt doit être traité de manière proactive.avertissementexpiré
GHD040table-liquid-versioningLes tableaux doivent utiliser le bon format de versioning Liquiderreurtables
GHD041third-party-action-pinningLes exemples de code qui utilisent des actions tierces doivent toujours épingler un SHA de commit completerreurfonctionnalité, actions
GHD042liquid-tag-whitespaceLes balises Liquid doivent commencer et se terminer par un seul espace blanc. Les arguments des balises Liquid doivent être séparés par un seul espace blanc.erreurliquide, format
GHD043link-quotationLes titres de lien internes ne doivent pas être entourés de guillemetserreurliens, url
GHD045code-annotation-comment-spacingLes commentaires de code dans les blocs d'annotation doivent avoir exactement un espace après le ou les caractères de commentaireerreurcode, commentaires, annotation, espacement
GHD046outdated-release-phase-terminologyLa terminologie de la phase de publication obsolète doit être remplacée par la terminologie actuelle GitHuberreurterminologie, cohérence, release-phases
GHD047table-column-integrityLes tableaux doivent avoir un nombre de colonnes cohérent sur toutes les ligneserreurtableaux, accessibilité, mise en forme
GHD051frontmatter-versions-whitespaceLe frontmatter Versions ne doit pas contenir d'espaces blancs inutileserreurfrontmatter, versions
GHD054third-party-actions-reusableLes exemples de code avec des actions tierces doivent inclure un avertissement réutilisableerreuractions, réutilisable, tiers
GHD056frontmatter-landing-carrouselsSeules les pages d’accueil peuvent avoir des carrousels, il ne doit y avoir aucun article en double, et tous les articles doivent existererreurfrontmatter, page de destination, carrousels
GHD057ctas-schemaLes URL CTA doivent être conformes au schémaerreurctas, schéma, URL
GHD058journey-tracks-liquidLes propriétés de suivi de parcours doivent utiliser la syntaxe Liquid valideerreurfrontmatter, journey-tracks, liquid
GHD059journey-tracks-guide-path-existsLes chemins d’accès au suivi du parcours doivent référencer des fichiers de contenu existantserreurfrontmatter, journey-tracks
GHD060journey-tracks-unique-idsLes ID de suivi de parcours doivent être uniques dans une pageerreurfrontmatter, journey-tracks, unique-ids
GHD061frontmatter-hero-imageLes chemins d'image hero doivent être absolus, sans extension, et pointer vers des images valides dans /assets/images/banner-images/erreurpréface, images
GHD062frontmatter-intro-linksles clés introLinks doivent être des clés valides définies dans les données/ui.yml sous product_landingerreurPréface, source unique
GHD063frontmatter-childrenDes frontmatter enfants doivent exister. Prend en charge les chemins relatifs et les chemins /content/ absolus pour l’inclusion entre produits.erreurfrontmatter, enfants
GHD064rai-app-card-structureLes articles sur les cartes d’application/plateforme RAI doivent suivre la structure de modèle requiseavertissementfonctionnalité, rai
GHD065frontmatter-content-typeLes fichiers de contenu dans les répertoires de type contenu doivent avoir une propriété frontmatter contentType qui correspond au répertoire parent.erreurfrontmatter, content-type
GHD066frontmatter-docs-team-metricsLes articles dont le chemin contient une valeur docsTeamMetrics doivent inclure cette valeur dans leur propriété frontmatter docsTeamMetrics.erreurfrontmatter, docs-team-metrics
search-replaceSyntaxe liquid obsolète : octicon-La syntaxe Liquid octicon utilisée est obsolète. Utilisez ce format à la place octicon "<octicon-name>" aria-label="<Octicon aria label>"erreur
search-replaceSyntaxe liquid obsolète : syntax: site.dataDétecter les occurrences de la syntaxe Liquid data obsolète.erreur
search-replacedeveloper-domainDétecter les occurrences du domaine developer.github.com.erreur
search-replacedocs-domainDétecter les occurrences du domaine docs.github.com.erreur
search-replacehelp-domainDétecter les occurrences du domaine help.github.com.erreur
search-replacetodocs-placeholderDétecter les occurrences de l'espace réservé TODOCS.erreur

Syntaxe des règles de linting

Certaines règles de linting renvoient des avertissements ou des erreurs en fonction des commentaires HTML que vous pouvez ajouter aux articles.

Syntaxe pour le contenu expirant et expiré

Les règles GHD038 et GHD039 vérifient le contenu auquel une date d'expiration a été attribuée manuellement. Quatorze jours avant la date spécifiée, le linter de contenu renverra un avertissement indiquant que le contenu arrive bientôt à expiration. À compter de la date spécifiée, le linter de contenu renverra un avertissement et signalera le contenu à corriger.

Vous pouvez ajouter une date d'expiration au contenu en l’encapsulant dans des balises HTML qui contiennent une date d'expiration au format : <!-- expires yyyy-mm-dd --> <!-- end expires yyyy-mm-dd -->

          **Utiliser :**
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.

Remarque : si vous placez les balises périmées dans un élément HTML table, assurez-vous que la balise entoure toute la ligne et pas seulement la cellule. Par exemple :

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

Suppression des règles de Linter

Rarement, vous pourriez avoir besoin de documenter quelque chose qui enfreint une ou plusieurs règles du linter. Dans ces cas, vous pouvez supprimer des règles en ajoutant un commentaire au fichier Markdown. Vous pouvez désactiver toutes les règles ou règles spécifiques. Essayez toujours de limiter autant de règles que possible. Vous pouvez désactiver une règle pour un fichier entier, pour une section d’un fichier Markdown, une ligne spécifique ou la ligne suivante.

Par exemple, si vous écrivez un article qui inclut l’expression régulière (^|/)[Cc]+odespace/ qui examine la syntaxe des liens inversés, il déclenche la règle MD011 qui examine les liens inversés. Vous pouvez désactiver la règle MD011 sur cette ligne spécifique en ajoutant le commentaire suivant.

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

Si la ligne que vous essayez d’ignorer se trouve dans un bloc de code, vous pouvez ignorer ce bloc de code en l’entourant des commentaires suivants.

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

Vous pouvez utiliser ces commentaires pour activer ou désactiver des règles.

CommentaireEffet
<!-- markdownlint-disable -->Désactiver toutes les règles
<!-- markdownlint-enable -->Activer toutes les règles
<!-- markdownlint-disable-line -->Désactiver toutes les règles de la ligne actuelle
<!-- markdownlint-disable-next-line -->Désactiver toutes les règles de la ligne suivante
<!-- markdownlint-disable RULE-ONE RULE-TWO -->
<!-- markdownlint-enable RULE-ONE RULE-TWO -->Activer une ou plusieurs règles par nom
<!-- markdownlint-disable-line RULE-NAME -->Désactiver une ou plusieurs règles par leur nom pour la ligne en cours
<!-- markdownlint-disable-next-line RULE-NAME -->Désactiver une ou plusieurs règles par nom pour la ligne suivante