创建一个Bug复制器

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.1,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

创建一个Bug复制器

主要的Symfonob娱乐下载y代码存储库每年收到数以千计的问题报告。其中一些问题非常明显或容易理解,Symfony Core开发人员可以在没有任何其他信息的情况下修复它们。ob娱乐下载然而,其他问题就更难理解了,因为开发人员无法在自己的计算机上轻松重现这些问题。这时我们会要求您创建一个“错误复制器”,这是在执行时使错误出现所需的最小数量的代码。

重现简单的bug

如果您正在报告与Symfony框架之外使用的某些Symfony组件相关的错误,那么共享ob娱乐下载一个小的PHP脚本就足够了,当执行时显示该错误:

12 3 4 5 6 7 8 9 10 11 12 13
//首先运行"composer require symfony/ob娱乐下载validator"//然后执行这个文件:<?phprequire_once__DIR__“/供应商/ autoload.php”使用ob娱乐下载组件验证器约束wrongUrl“http://example.com/exploit.html? <脚本>警报(1);> < /脚本的urlValidator约束\ UrlValidator ();urlConstraint约束\ Url ();// URL是错误的,因此var_dump()应该显示错误,但它显示// "null"代替,因为没有上下文来构建验证器冲突var_dump (urlValidator->validate (wrongUrlurlConstraint));

复制复杂的bug

如果该错误与Symfony Framework有关,或者它ob娱乐下载太复杂而无法创建PHP脚本,那么最好通过创建一个新项目来重现该错误。这样做:

  1. 创建一个新项目:
1
创建项目symfony/skeleton bugob娱乐下载_app
  1. 添加并提交由Symfony生成的更改。ob娱乐下载
  2. 现在您必须添加最少数量的代码来重现错误。这是最棘手的部分,后面会有更多的解释。
  3. 添加并提交更改。
  4. 创建一个新的存储库在GitHub(给它起任何名字)。
  5. 按照GitHub上的说明添加起源远程到本地项目并推动它。
  6. 在您的原始问题报告中添加注释,以共享您的分叉项目的URL(例如。https://github.com/YOUR-GITHUB-USERNAME/ob娱乐下载symfony_issue_23567),如有必要,解释重现的步骤(例如:“浏览此URL”,“在表格中填写此数据并提交”,等等)

添加尽可能少的代码

创建错误复制器的关键是只关注您怀疑正在失败的特性。例如,假设您怀疑该错误与路由定义有关。然后,在创建项目后:

  1. 不要编辑任何默认的Symfony配置选项。ob娱乐下载
  2. 不要复制原始应用程序代码,也不要使用与原始应用程序相同的控制器、动作等结构。
  3. 创建一个小控制器,并添加显示错误的路由定义。
  4. 不要创建或修改任何其他文件。
  5. 执行Composer需要symfonyob娱乐下载/web-server-bundle并使用服务器:运行命令浏览到新路由并查看是否出现错误。
  6. 如果你能看到错误,你就完成了,你已经可以和我们分享代码了。
  7. 如果看不到bug,就必须继续进行小的修改。例如,如果您的原始路由是使用XML定义的,那么请忘记前面的路由,而是使用XML定义路由。或者你的应用程序注册了一些事件监听器,这才是真正的错误所在。在这种情况下,添加一个类似于实际应用程序的事件侦听器,看看是否能找到错误。

简而言之,这个想法就是不断在新项目中添加小的增量更改,直到您可以重现错误。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。