跳至主要内容

使用内容检查工具

您可以使用内容检查工具来检查您的贡献是否存在错误。

关于 GitHub 文档内容检查工具

我们的内容检查工具在 Markdown 内容中强制执行风格指南规则。

检查工具使用 markdownlint 作为框架来执行检查、报告缺陷,并在可能的情况下自动修复内容。该框架灵活地运行特定规则,提供描述性的错误信息,并修复错误。GitHub 文档内容检查工具使用了多个现有的 markdownlint 规则以及额外的自定义规则来检查我们 contentdata 目录中的 Markdown 内容。我们的自定义规则实现了在 markdownlint 框架中尚未提供或专属于 GitHub 文档内容的检查。规则同时检查 Markdown 和 Liquid 的语法。

运行 GitHub 文档内容检查工具

GitHub 文档内容检查工具会在 pre-commit 时自动运行,但您也可以手动运行它。

在 pre-commit 时自动运行检查工具

当您在本地编写内容并使用命令行提交文件时,这些已暂存的文件会自动由内容检查工具进行检查。警告和错误都会被报告,但只有错误会阻止提交完成。

如果报告了任何错误,您的提交将不会完成。您需要修复报告的错误、重新添加已更改的文件,然后再次提交。如果报告了错误,必须修复这些错误,以防止内容出现违反 GitHub 文档风格指南的错误。若报告了警告,您可以选择修复或不修复。

在本地编写内容时,您可以使用命令行自动修复若干规则。如果想自动修复可修复的错误,请参阅 自动修复可修复的错误

如果您在 GitHub UI 中编辑文件,无法自动修复错误或在提交时运行检查工具,但如果内容违反了严重程度为 error 的任何规则,您将收到 CI 失败。

手动运行检查工具

在已暂存和已更改的文件上运行检查工具

使用以下命令在本地对已暂存和已更改的文件运行检查工具。它将输出 warningerror 严重程度的缺陷。

npm run lint-content

在已暂存和已更改的文件上运行检查工具,仅报告错误

使用以下命令在本地对已暂存和已更改的文件运行检查工具,并仅报告 error 严重程度的缺陷。

npm run lint-content -- --errors

在特定文件或目录上运行检查工具

使用以下命令在本地对特定文件或目录运行检查工具。使用空格分隔多个路径。您可以在同一命令中同时包含文件和目录。

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

自动修复可修复的错误

如果错误的描述中包含 fixable: true,您可以使用以下命令自动修复它们。

仅运行此命令以修复已暂存和已更改的文件

npm run lint-content -- --fix

运行此命令以修复特定文件或目录

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

运行特定的一组检查规则

使用以下命令运行一个或多个特定的检查规则。以下示例运行 heading-incrementcode-fence-line-length 规则。将 heading-increment code-fence-line-length 替换为您想运行的一个或多个检查别名。要查看可传递给此选项的检查规则列表,请运行 npm run lint-content -- --help。您可以使用检查规则的短名称(例如 MD001)或长名称(例如 heading-increment)。

在所有已暂存和已更改的文件上运行指定的检查规则

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

在特定文件或目录上运行指定的检查规则

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

绕过提交钩子

如果检查工具捕获到您未引入的错误,您可以在提交更改时使用 --no-verify 选项来绕过 git 提交钩子。

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

显示内容检查工具脚本的帮助菜单

npm run lint-content -- --help

检查规则

每条规则都在 src/content-linter/style 目录下的文件中配置,规则的严重程度也在此定义。

在将更改合并到 main 分支之前,必须解决错误。警告应当处理,但不会阻止更改合并到 main 分支。大多数规则最终会升级为错误,一旦内容不再存在警告违规。

规则 ID规则名称描述严重程度标签
MD001heading-increment标题级别一次只能递增一级errorheadings
MD011no-reversed-links反向链接语法errorlinks
MD014commands-show-output在命令前使用美元符号但未显示输出errorcode
MD018no-missing-space-atxATX 样式标题后缺少空格errorheadings, atx, spaces
MD019no-multiple-space-atxATX 样式标题后有多个空格errorheadings, atx, spaces
MD023heading-start-left标题必须在行首开始errorheadings, spaces
MD027no-multiple-space-blockquote引用符号后有多个空格errorblockquote, whitespace, indentation
MD029ol-prefix有序列表项前缀errorol
MD030list-marker-space列表标记后面的空格errorol, ul, whitespace
MD031blanks-around-fences代码块前后应有空行errorcode, blank_lines
MD037no-space-in-emphasis强调标记内部的空格errorwhitespace, emphasis
MD039no-space-in-links链接文本内部的空格errorwhitespace, links
MD040fenced-code-language代码块应指定语言errorcode, language
MD042no-empty-links禁止空链接errorlinks
MD050strong-style粗体样式erroremphasis
GH001no-default-alt-text图像应具有有意义的替代文本(alt 文本)erroraccessibility, images
GH002no-generic-link-text避免使用通用链接文本,如 了解更多点击此处erroraccessibility, links
GHD001link-punctuation内部链接标题不得包含标点符号errorlinks, url
GHD002internal-links-no-lang内部链接不得硬编码语言代码errorlinks, url
GHD003internal-links-slash内部链接必须以 / 开头errorlinks, url
GHD004image-file-kebab-case图像文件名必须使用 kebab-case(短横线小写)errorimages
GHD005hardcoded-data-variable包含 "personal access token" 的字符串应改用产品变量errorsingle-source
GHD006internal-links-old-version内部链接不得使用旧的版本语法硬编码版本号errorlinks, url, versioning
GHD007code-annotationsMarkdown 中定义的代码注释必须包含特定的 layout frontmatter 属性errorcode, feature, annotate, frontmatter
GHD008early-access-references非 Early Access 的文件不应引用 early-access 或 early-access 文件errorfeature, early-access
GHD009frontmatter-early-access-references非 Early Access 的文件不应在 frontmatter 中引用 early-accesserrorfrontmatter, feature, early-access
GHD010frontmatter-hidden-docs具有 frontmatter 属性 hidden 的文章只能位于特定产品中errorfrontmatter, feature, early-access
GHD012frontmatter-schemaFrontmatter 必须符合 schemaerrorfrontmatter, schema
GHD013github-owned-action-referencesGitHub 所有的 Action 引用不应硬编码errorfeature, actions
GHD014liquid-data-references-defined在内容中发现 Liquid 数据或缩进数据引用,但它们没有值或不存在于 data 目录中errorliquid
GHD015liquid-data-tag-formatLiquid 数据或缩进数据引用标签必须格式正确,并且参数数量和空格符合要求errorliquid, format
GHD016liquid-quoted-conditional-argLiquid 条件标签不应对条件参数加引号errorliquid, format
GHD017frontmatter-liquid-syntaxFrontmatter 属性必须使用有效的 Liquid 语法errorliquid, frontmatter
GHD018liquid-syntaxMarkdown 内容必须使用有效的 Liquid 语法errorliquid
GHD019liquid-if-tags当参数是有效版本时,应使用 Liquid ifversion 标签而不是 if 标签errorliquid, versioning
GHD020liquid-ifversion-tagsLiquid ifversion 标签的参数应为有效的版本名称errorliquid, versioning
GHD021yaml-scheduled-jobs包含计划工作流的 YAML 代码段不得在整点运行,并且必须唯一errorfeature, actions
GHD022liquid-ifversion-versionsLiquid 的 ifversionelsifelse 标签应有效且不包含不受支持的版本。errorliquid, versioning
GHD031image-alt-text-exclude-words图像的替代文本不应以 "image" 或 "graphic" 等词开头erroraccessibility, images
GHD032image-alt-text-end-punctuation图像的替代文本应以标点符号结束erroraccessibility, images
GHD033incorrect-alt-text-length图像的替代文本应为 40-150 个字符之间erroraccessibility, images
GHD034frontmatter-curly-quotesFrontmatter 中的标题和简介不应包含花体引号errorfrontmatter, format
GHD036image-no-gif图像不得为 GIF,参见样式指南:contributing/style-guide-and-content-model/style-guide.md#imageserrorimages
GHD038expired-content已过期的内容必须进行整改。warningexpired
GHD039expiring-soon即将过期的内容应主动处理。warningexpired
GHD040table-liquid-versioning表格必须使用正确的 Liquid 版本化格式errortables
GHD041third-party-action-pinning使用第三方 Action 的代码示例必须始终固定到完整的提交 SHAerrorfeature, actions
GHD042liquid-tag-whitespaceLiquid 标签应在开始和结束时各有一个空格。Liquid 标签参数之间只能有一个空格分隔。errorliquid, format
GHD043link-quotation内部链接标题不得被引号包裹errorlinks, url
GHD045code-annotation-comment-spacing注释块中的代码注释后必须恰好有一个空格errorcode, comments, annotate, spacing
GHD046outdated-release-phase-terminology过时的发布阶段术语应替换为当前 GitHub 术语errorterminology, consistency, release-phases
GHD047table-column-integrity表格所有行的列数必须保持一致errortables, accessibility, formatting
GHD051frontmatter-versions-whitespace版本的 frontmatter 不应包含多余的空格errorfrontmatter, versions
GHD054third-party-actions-reusable使用第三方 Action 的代码示例必须包含可复用的免责声明erroractions, reusable, third-party
GHD056frontmatter-landing-carousels仅登录页可以使用轮播图,且不得有重复文章,所有文章必须存在errorfrontmatter, landing, carousels
GHD057ctas-schemaCTA URL 必须符合 schemaerrorctas, schema, urls
GHD058journey-tracks-liquid旅程跟踪属性必须使用有效的 Liquid 语法errorfrontmatter, journey-tracks, liquid
GHD059journey-tracks-guide-path-exists旅程跟踪指南路径必须引用已存在的内容文件errorfrontmatter, journey-tracks
GHD060journey-tracks-unique-ids旅程跟踪 ID 在同一页面内必须唯一errorfrontmatter, journey-tracks, unique-ids
GHD061frontmatter-hero-imageHero 图像路径必须是绝对路径、无扩展名,并指向 /assets/images/banner-images/ 中有效的图像errorfrontmatter, images
GHD062frontmatter-intro-linksintroLinks 键必须是 data/ui.yml 中 product_landing 下定义的有效键errorfrontmatter, single-source
GHD063frontmatter-children子页面的 frontmatter 路径必须存在。支持相对路径和跨产品包含的绝对 /content/ 路径。errorfrontmatter, children
GHD065frontmatter-content-typecontent-type 目录中的内容文件必须具有与父目录匹配的 contentType frontmatter 属性。errorfrontmatter, content-type
GHD066frontmatter-docs-team-metrics路径中包含 docsTeamMetrics 值的文章必须在其 docsTeamMetrics frontmatter 属性中包含该值。errorfrontmatter, docs-team-metrics
search-replace已弃用的 liquid 语法:octicon-使用的 octicon liquid 语法已弃用。请改用以下格式 octicon "<octicon-name>" aria-label="<Octicon aria label>"error
search-replace已弃用的 liquid 语法:site.data捕获已弃用的 liquid 数据语法的出现。error
search-replacedeveloper-domain捕获 developer.github.com 域名的出现。error
search-replacedocs-domain捕获 docs.github.com 域名的出现。error
search-replacehelp-domain捕获 help.github.com 域名的出现。error
search-replacetodocs-placeholder捕获 TODOCS 占位符的出现。error

检查规则的语法

某些检查规则会根据您在文章中添加的 HTML 注释返回警告或错误。

过期和已过期内容的语法

规则 GHD038GHD039 检查已手动设定过期日期的内容。在指定日期前 14 天,内容检查工具会返回警告,提示内容即将过期。从指定日期起,内容检查工具会返回警告并标记内容需整改。

您可以通过在内容外包裹包含过期日期的 HTML 标签来添加过期日期,格式如下:<!-- expires yyyy-mm-dd --> <!-- end expires yyyy-mm-dd -->

使用

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.

注意,如果您将过期标签放在 HTML table 元素中,请确保标签包裹整个行而不是仅单元格。例如

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

抑制检查规则

在极少数情况下,您可能需要记录违反一个或多个检查规则的内容。此时,您可以通过在 Markdown 文件中添加注释来抑制规则。您可以禁用所有规则或特定规则。尽量只禁用尽可能少的规则。您可以对整个文件、Markdown 文件的某个区段、特定行或下一行禁用规则。

例如,如果您在撰写包含正则表达式 (^|/)[Cc]+odespace/(检查反向链接语法)的文章,它会触发检查反向链接的 MD011 规则。您可以通过添加以下注释在该行禁用 MD011 规则。

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

如果您要忽略的行位于代码块中,您可以通过在代码块前后添加以下注释来忽略它。

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

您可以使用这些注释来启用或禁用规则。

注释效果
<!-- markdownlint-disable -->禁用所有规则
<!-- markdownlint-enable -->启用所有规则
<!-- markdownlint-disable-line -->为当前行禁用所有规则
<!-- markdownlint-disable-next-line -->为下一行禁用所有规则
<!-- markdownlint-disable RULE-ONE RULE-TWO -->
<!-- markdownlint-enable RULE-ONE RULE-TWO -->通过名称启用一个或多个规则
<!-- markdownlint-disable-line RULE-NAME -->为当前行禁用一个或多个规则
<!-- markdownlint-disable-next-line RULE-NAME -->为下一行禁用一个或多个规则
© . This site is unofficial and not affiliated with GitHub, Inc.