10个Bug环环相扣,你能解开几个?

本文介绍了阿里云主办的83行代码挑战赛中的一道赛题,涉及修复10个Bug,涵盖Regex、Spring Security、NPE等多个方面。修复过程包括调整Regex、处理尾串缺失、解决权限问题、修复EOFException等。参赛者使用了DevStudio和AppObserver等工具进行调试。最后,提取线索,完成挑战。
摘要由CSDN通过智能技术生成

简介: 由阿里云云效主办的2021年第3届83行代码挑战赛已经收官。超2万人围观,近4000人参赛,85个团队组团来战。大赛采用游戏闯关玩儿法,融合元宇宙科幻和剧本杀元素,让一众开发者玩得不亦乐乎。
今天请来决赛赛题设计者杜万,给大家分享一下设计与解题思路。

搭配《用代码玩剧本杀?第3届83行代码大赛剧情官方解析》使用效果更佳。

第四题整体是一个C/S架构,客户客户端是一个编译好的命令行程序,不可被修改,服务端是一个 Spring Boot 的 Web 应用;赛题要求,找出服务端程序的 BUG 并修复;客户端有两个职责,一个是说去向服务端发送正常 HTTP 请求,让参赛者发现BUG。

另一个是验证 bug 修复情况,然后发送给远端的评分程序,获得评分。整个赛题是跑在我们阿里云 DevStudio 上面,在 DevStudio 里我们启动一个Intellij IDEA 的社区版,内置了应用观测器(AppObserver) 插件。
在这里插入图片描述

Bug 1 :修复 Regex

我们来看第一个bug 如何修复吧。运行 ‘mvn test’,10 个测试有 9 个错误。
在这里插入图片描述
这里有好几个BUG,我们先看正则表达式相关的,我们先修复ExtractHtmlTest,翻阅源码,很快能定位到 Utils.stripHtmlTag 方法,方法名字面意思是去除 HTML Tag 标签,然后仔细查看日志会发现。
在这里插入图片描述
删除的Tag内容包括了 > 和 ,那说明正则有问题,下图是对正则的剖析。
在这里插入图片描述
所以该 BUG上述两种修复方法都是 OK 的。

解法:将 Utils.java 里的正则表达式<(?.*)>改为<(?[^>]*)>

Bug 2:修复尾串缺失

再次执行 mvn test,发现还有单测没有通过,我们会发现字符串少了一截。
在这里插入图片描述
再次查看 Utils.stripHtmlTag 方法,发现 matcher.appendReplacement 方法,如果不熟悉该方法,查看JDK的注释后,会发现 matcher.appendReplacement 和 matcher.appendTail 是成对出现的。所以在循环外补上 mat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值