# 問題回報 {#issue-reporting}

作為 Tuist 的使用者，你可能會遇到錯誤或非預期行為。若發生這種情況，我們鼓勵你回報這些問題，以便我們進行修復。

## 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 中的錯誤引起。你的可重現專案應只包含清楚展示該錯誤所需的最少功能。

### 為什麼應該建立可重現的測試案例？ {#why-should-you-create-a-reproducible-test-case}

可重現專案能幫助我們隔離問題的根本原因，這是修復問題的第一步！任何錯誤回報中最重要的部分，就是描述重現該錯誤所需的確切步驟。

可重現專案是分享導致錯誤之特定環境的絕佳方式。你的可重現專案是協助那些願意幫助你的人的最佳途徑。

### 建立可重現專案的步驟 {#steps-to-create-a-reproducible-project}

- 建立新的 Git 儲存庫。
- 在儲存庫目錄中使用 `tuist init` 初始化專案。
- 加入重現你所見錯誤所需的程式碼。
- 公開程式碼（你的 GitHub 帳號是很好的選擇），並在建立問題時附上連結。

### 可重現專案的好處 {#benefits-of-reproducible-projects}

- **縮小影響範圍：** 移除與錯誤無關的內容後，你無需費力挖掘即可找到錯誤。
- **無需公開機密程式碼：** 你可能因各種原因無法公開主要專案。將其一小部分重建為可重現的測試案例，讓你能在不暴露任何機密程式碼的情況下，公開示範問題。
- **證明錯誤存在：** 有時錯誤是由你機器上的某些設定組合所導致。可重現的測試案例讓貢獻者能夠下載你的建置成果，並在他們的機器上進行測試。這有助於驗證並縮小問題的根本原因。
- **獲得修復錯誤的協助：** 如果其他人能重現你的問題，他們往往有較高的機會修復它。若無法先重現錯誤，幾乎不可能修復它。
