Clojure

创建工单

如果您没有 JIRA 账户,请按照 首选流程ask.clojure.org 上提交问题。如果您有兴趣提供补丁或为 Clojure 做出贡献,请参阅 开发概述

创建工单

要创建工单,您必须已经拥有一个 Clojure JIRA 账户。Clojure 本身的问题可以在 CLJ 项目中创建。Contrib 项目在其 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 - print 和 pprint

  • protocols - defprotocol

  • reader - 阅读器(Clojure 或 edn)

  • reducers

  • repl - REPL 上的可用性(doc、source、apropos 等)

  • string - clojure.string、subs 等

  • typehints - 其定义或应用

  • walk - clojure.walk

  • zip - clojure.zip

请勿使用以下标签

  • bug - 此类别已由问题类型涵盖

  • enhancement - 此类别已由问题类型涵盖

  • patch - 已由补丁字段涵盖

  • test - 已由补丁字段涵盖