# 内置链接检查工具
你可以使用 [htmltest](https://github.com/wjdp/htmltest) 来检查 [`/content/en/`](https://git.k8s.io/website/content/en/) 下面的失效链接。这在重构章节内容、移动页面或者重命名文件或页眉时非常有用。
## 工作原理
`htmltest` 会扫描 kubernetes website 仓库构建生成的 HTML 文件。通过执行 `make` 命令进行了下列操作:
- 构建站点并输出 HTML 到本地 `kubernetes/website` 仓库下的 `/public` 目录中
- 拉取 Docker 镜像 `wdjp/htmltest`
- 挂载本地 `kubernetes/website` 仓库到 Docker 容器中
- 扫描 `/public` 目录下生成的文件并将遇到的失效链接通过命令行打印出来
## 哪些链接不会检查
该链接检查器扫描生成的 HTML 文件,而非原始的 Markdown. 该 htmltest 工具依赖于一个配置文件,[`.htmltest.yml`](https://git.k8s.io/website/.htmltest.yml),来决定检查哪些内容。
该链接检查器扫描以下内容:
- 所有由 [`/content/en/docs`](https://git.k8s.io/website/content/en/docs/) 目录下的 Markdown 文件生成的内容,但不包括:
- 生成的 API 参考,例如 https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/
- 所有的内部链接,但不包括:
- 空白锚点 (`` 或 `[title](#)`) 以及空白目标地址 (`` 或 `[title]()`)
- 指向图片或其他媒体文件的内部链接
该链接检查器不会扫描以下内容:
- 包含在顶部和侧边导航栏的链接,以及页脚链接或者页面的 `` 部分中的链接,例如 CSS 样式表、脚本以及元信息的链接。
- 顶级页面及其子页面,例如: `/training`, `/community`, `/case-studies/adidas`
- 博客文章
- API 参考文档,例如:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/
- 本地化内容
## 先决条件以及安装说明
必须安装:
* [Docker](https://docs.docker.com/get-docker/)
* [make](https://www.gnu.org/software/make/)
## 运行链接检查器
运行链接检查器需要:
1. 进入本地 `kubernetes/website` 仓库的根目录下。
2. 执行如下命令:
```
make docker-internal-linkcheck
```
## 理解输出的内容
如果链接检查器发现了失效链接,则输出内容类似如下:
```
tasks/access-kubernetes-api/custom-resources/index.html
hash does not exist --- tasks/access-kubernetes-api/custom-resources/index.html --> #preserving-unknown-fields
hash does not exist --- tasks/access-kubernetes-api/custom-resources/index.html --> #preserving-unknown-fields
```
这是一系列失效链接。该日志附带了每个页面下的失效链接。
在这部分输出中,包含失效链接的文件是 `tasks/access-kubernetes-api/custom-resources.md`.
该工具给出了一个理由:`hash does not exist`. 在大部分情况下,你可以忽略这个。
目标链接是 `#preserving-unknown-fields`.
修复这个问题的一种方式是:
1. 转到含有失效链接的 Markdown 文件。
2. 使用文本编辑器全文搜索失效链接的 URL(通常使用 Ctrl+F 或 Command+F)`#preserving-unknown-fields`.
3. 修复该链接。对于一个失效的锚点(或者 _anchor_ )链接,检查该主题是否已更名或者移除。
运行 htmltest 来验证失效链接是否已修复。