创建一个Bug复制器
编辑本页创建一个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 ($wrongUrl,$urlConstraint));
复制复杂的bug
如果该错误与Symfony Framework有关,或者它ob娱乐下载太复杂而无法创建PHP脚本,那么最好通过创建一个新项目来重现该错误。这样做:
- 创建一个新项目:
1
$创建项目symfony/skeleton bugob娱乐下载_app
- 添加并提交由Symfony生成的更改。ob娱乐下载
- 现在您必须添加最少数量的代码来重现错误。这是最棘手的部分,后面会有更多的解释。
- 添加并提交更改。
- 创建一个新的存储库在GitHub(给它起任何名字)。
- 按照GitHub上的说明添加
起源
远程到本地项目并推动它。 - 在您的原始问题报告中添加注释,以共享您的分叉项目的URL(例如。
https://github.com/YOUR-GITHUB-USERNAME/ob娱乐下载symfony_issue_23567
),如有必要,解释重现的步骤(例如:“浏览此URL”,“在表格中填写此数据并提交”,等等)
添加尽可能少的代码
创建错误复制器的关键是只关注您怀疑正在失败的特性。例如,假设您怀疑该错误与路由定义有关。然后,在创建项目后:
- 不要编辑任何默认的Symfony配置选项。ob娱乐下载
- 不要复制原始应用程序代码,也不要使用与原始应用程序相同的控制器、动作等结构。
- 创建一个小控制器,并添加显示错误的路由定义。
- 不要创建或修改任何其他文件。
- 安装本地web服务器提供的ob娱乐下载
ob娱乐下载symfony服务器:启动
命令浏览到新路由并查看是否出现错误。 - 如果你能看到错误,你就完成了,你已经可以和我们分享代码了。
- 如果看不到bug,就必须继续进行小的修改。例如,如果您的原始路由是使用XML定义的,那么请忘记前面的路由,而是使用XML定义路由。或者你的应用程序注册了一些事件监听器,这才是真正的错误所在。在这种情况下,添加一个类似于实际应用程序的事件侦听器,看看是否能找到错误。
简而言之,这个想法就是不断在新项目中添加小的增量更改,直到您可以重现错误。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。