Clojure

建立問題單

如果您沒有 JIRA 帳戶,請遵循 建議的流程,在 ask.clojure.org 提交問題。如果您有興趣提供修補程式或貢獻 Clojure,請參閱 開發概觀

建立問題單

要建立問題單,您必須已經擁有 Clojure JIRA 帳戶。Clojure 本身的問題可以在 CLJ 專案中建立。貢獻專案會在 README 中提供連結到其 JIRA 專案。

優秀問題單的品質

所有問題單都應該有

  • 類型:正確分類為缺陷、強化(現有功能的延伸)或功能(新的)

  • 摘要:問題的簡潔摘要

  • 說明

    • 只有一個問題(如果有多個,請分開為多個問題單並建立連結)

    • (如果為缺陷)可重複示範問題(最好是可以在 REPL 中重複的指令,特別是純 Clojure REPL,而不是 Leiningen REPL),以及說明你認為應該如何運作

    • (如果為增強)說明如何遇到此問題,以及為何值得解決此問題。

    • 連結至相關的先前討論(如果相關)

  • 優先順序:根據影響程度和這是理論問題還是實際在真實程式碼中遇到的問題進行分類。這可能會在分流期間由核心團隊調整。

  • 標籤:(請參閱以下部分)

準備好篩選的問題單也應該包含

  • 說明

    • 問題的原因

    • 解決問題的替代方案清單

    • 正在採用的方法

    • 要考慮的目前修補程式的名稱

    • 修補程式中變更的說明 - 任何有助於說明變更內容以及你為何進行這些變更的說明,都能幫助問題單篩選人員重新檢視你的步驟。

    • 基準資料(如果與效能相關)

  • 修補程式附件

    • 遵循說明中指定方法的實作

    • 適當的測試

範例

這是問題單經過篩選後說明可能呈現的範例 - 以問題的簡潔說明和可以在 REPL 中嘗試的示範開始。這可能是問題單進入系統時存在的全部內容。在經過篩選後,我們應該會看到開發人員對問題原因的分析、提供的解決方案(以及可能考慮的替代方案),以及目前實作解決方案和測試的修補程式。

Adding odd numbers doesn't work.

----
user> (+ 2 2)
4
user> (+ 1 3)
ClassCastException
----

Cause:  Never implemented odd number adding in the Compiler!
See the missing branch in FooExpr.

Solution:  Fully implemented the branch for odd numbers to
be just like even numbers. Considered just getting rid of
addition altogether but I guess people use it.

Patch: add-odd-3.patch

處理你的問題單

隨著問題單的處理進度,提交者、篩選人員和修補程式開發人員之間通常會累積討論。在這種情況下,編輯問題單說明以保持最新狀態,作為基本問題、解決方案方法和修補程式的摘要,至關重要。不應有必要閱讀完整的問題單歷史記錄才能評估修補程式。

修補程式可能會隨著時間不再適用於主程式。篩選人員經常更新修補程式,以便保持相關性(保留作者的歸屬),但如果你願意,也可以自己執行這項工作。

標籤

下列標籤應標記特定類別(有時這些標籤對搜尋很有用)

  • aot - 即時編譯錯誤

  • compiler - Clojure 編譯器

  • checkargs - 函式的其他引數檢查

  • deftype - 類型

  • defrecord - 記錄

  • docstring - 函式文件字串

  • documentation - clojure.org 文件或其他文件相關問題

  • edn - EDN

  • errormsgs - 改進(或有時新增)Clojure 回傳的錯誤訊息

  • interop - Java 互操作

  • io - clojure.java/io

  • math - 算術問題 - 溢位、下溢等

  • memory - 記憶體問題(GC、頭部保持、清除區域變數等)

  • performance - 讓它更快!

  • print - 列印和 pprint

  • protocols - defprotocol

  • reader - 讀取器(clojure 或 edn)

  • reducers

  • repl - REPL 的可用性(文件、來源、apropos 等)

  • string - clojure.string、subs 等

  • typehints - 其定義或應用

  • walk - clojure.walk

  • zip - clojure.zip

請勿使用這些標籤

  • bug - 這個問題類型已涵蓋

  • enhancement - 這個問題類型已涵蓋

  • patch - 修補程式欄位已涵蓋

  • test - 修補程式欄位已涵蓋