我本来打算写一篇名为“如何编写一个伟大的错误报告”的帖子,但我意识到我要说的实际上是更普遍的事情,那就是“如何理解出现的问题”。我意识到同样的建议也适用于 JBS 成员和开发扩展的人。

首先,你真的需要一个单独的测试站点,因为你不应该在生产站点上进行这项操作。你可以创建一个本地站点,或者仅仅创建一个测试文件夹,并在你的主机上放置你的测试安装。如果你想的话,可以用 htaccess 保护它。 使用 Joomla 示例数据创建站点。 这很重要,因为它为与其他人讨论你正在做的事情提供了一个共同的基础。所以我们经常在跟踪器上要求人们解释如何使用示例数据重现问题。这意味着你不会修改或添加,但你需要从一个共享的起点开始。

准备

 接下来,打开你的全局配置并

  • 在系统标签页上,将调试设置都设置为是。
  • 在服务器标签页上,将错误报告设置为最大。

这些将帮助你理解是什么导致问题以及如何追踪它们。

现在是关键补充。

获取并安装两个语言包,一个需要 UTF-8,一个用于从右到左的语言。

重现

从现在开始,你需要仔细记录你的操作。

当你试图理解一个问题时,首先需要做的是逐步理解是什么引发了问题。这不一定是什么导致问题,但它是使问题可见的。

所以,现在逐步重现问题并写下这些步骤。

有时候你需要更改示例数据来完成这个任务。最好的方法是选择一个合适的示例数据,并做出尽可能少的更改以引发问题。仔细记录每一次更改和每一个步骤,以便其他人能够理解你所看到的问题。有时候你可能需要添加新的示例数据,甚至添加一个扩展。再次强调,做尽可能少的事情来复现问题。

在某些情况下,你应该尝试在每个核心模板和不同的语言中复现问题。如果问题涉及到任何类型的布局,无论是html还是css,这尤为重要。

如果涉及到任何类型的链接,请测试使用和未使用SEF的情况——使用SEF时,尝试不同的组合(带或不带后缀,带或不带mod_rewrite)。

有时候扩展开发者会向问题追踪器报告一个问题,但是在核心代码中无法复现。如果你也遇到这种情况,尝试制作一个“Hello World”扩展,只做你遇到问题的那部分功能。这可以隔离问题,让其他人更容易理解。

 编写测试

 好吧,我们实际上并没有真正编写测试,但是要确定你认为应该发生的事情。解释这一点以及你为什么这么认为。

 如果你能到达这一步,你就准备好写一份伟大的问题追踪报告了。

 现在假设你想修复这个问题。我们会跳过这一部分,直接到...提出解决方案

如果你完成了所有这些步骤,当你有一个提议的解决方案时,你就会知道该怎么做。

描述提议的解决方案。

解释你在哪里进行更改以及为什么你认为它们会起作用。最好提供一个补丁文件,但指出文件yyy的第xxx行也很好。

测试

使用你之前写下的复现步骤,在示例数据上测试它。在不同的模板和语言中,以及使用和未使用SEF的情况下进行测试。

你得到预期的结果了吗?

 如果是,提出它。

然后呢?

 嗯,你得等待,除非你还在IIS和Apache以及PHP的不同版本上进行了测试。所以如果你能自己完成这些测试,那也很好。

对于JBS来说,更难的问题始终是,这会破坏任何人的网站吗?这会破坏其他东西吗?对现有用户来说会混淆吗?这就是为什么有时候问题的修复需要一段时间的原因之一。但这又是另一个话题。