# 问题报告 {#issue-reporting}

作为 Tuist 用户，你可能会遇到 bug 或意外行为。如果遇到，我们鼓励你报告这些问题，以便我们进行修复。

## GitHub Issues 是我们的工单平台 {#github-issues-is-our-ticketing-platform}

问题应在 GitHub 上以 [GitHub issues](https://github.com/tuist/tuist/issues) 的形式报告，而不是在 Slack 或其他平台上。GitHub 更适合追踪和管理问题，更贴近代码库，并允许我们跟踪问题的进展。此外，它鼓励对问题进行长篇描述，促使报告者深入思考问题并提供更多上下文。

## 上下文至关重要 {#context-is-crucial}

如果问题缺少足够的上下文，将被视为不完整，作者会被要求补充更多信息。如果未提供，该问题将被关闭。你可以这样理解：你提供的上下文越多，我们就越容易理解并修复问题。因此，如果你希望问题得到解决，请尽可能提供详细的上下文。尝试回答以下问题：

- 你当时试图做什么？
- 你的依赖图结构是怎样的？
- 你使用的是哪个版本的 Tuist？
- 这是否阻碍了你的工作？

我们还要求你提供一个最小的 **可复现项目**。

## 可复现项目 {#reproducible-project}

### 什么是可复现项目？ {#what-is-a-reproducible-project}

可复现项目是一个小型的 Tuist 项目，用于演示问题——通常这个问题是由 Tuist 中的 bug 引起的。你的可复现项目应仅包含清晰展示该 bug 所需的最少功能。

### 为什么要创建可复现的测试用例？ {#why-should-you-create-a-reproducible-test-case}

可复现项目能帮助我们隔离问题的原因，这是修复问题的第一步！任何 bug 报告中最重要的部分是描述复现该 bug 所需的确切步骤。

可复现项目是分享导致 bug 的特定环境的绝佳方式。你的可复现项目是帮助那些愿意协助你的人的最佳途径。

### 创建可复现项目的步骤 {#steps-to-create-a-reproducible-project}

- 创建一个新的 git 仓库。
- 在仓库目录中使用 `tuist init` 初始化项目。
- 添加重现你所见错误所需的代码。
- 发布代码（你的 GitHub 账号是存放代码的好地方），然后在创建问题时链接到它。

### 可复现项目的好处 {#benefits-of-reproducible-projects}

- **范围更小：** 通过移除除错误本身以外的所有内容，你无需费力挖掘即可找到 bug。
- **无需发布机密代码：** 你可能因各种原因无法发布主站点代码。将其一小部分重制为可复现测试用例，可以让你公开演示问题，而不会泄露任何机密代码。
- **证明 bug 存在：** 有时 bug 是由你机器上的某些设置组合引起的。可复现测试用例允许贡献者拉取你的构建并在他们的机器上进行测试。这有助于验证并缩小问题原因的范围。
- **获得修复 bug 的帮助：** 如果其他人能够复现你的问题，他们往往有很大机会修复它。在无法复现 bug 的情况下，几乎不可能修复它。
