issue report 实验报告
1.发现issue
本次实验在first good issue找了很多代码仓库和相关问题,有的是因为项目过大,下载下来还需要其他的环境,安装相关的依赖,安装完后又跑不通,有的跑通了代码,但是项目体量又很大,让我无从下手,在寻找Java或C或Python代码,找到了这个项目,前面试验的快有十几个仓库因为当时没多想,就没有留相关的记录,以下是对于项目find-sec-bugs插件的对于正则文法的匹配的Pattern的特定情况的假阳性报错。
2.安装并运行
首先是在idea上下载find-bugs插件,并对已经有的写的编译的程序进行分析,因为项目比较简短,没有什么跨线程的或是其他比较有数据泄露风险的问题,这里find-bugs主要是把idea已有会报的warning和代码一些简单优化的统计,并且可以通过下方两个窗口定位和修改相关的错误,提高了修改相关可能bug的效率,使得定位bug更加的方便。
3.找对应的issue
4.提出自己的讨论
这个项目已经对正则文法的Pattern不做这个*+的warning了,即使“*+”依旧会造成匹配的全盘接受造成的匹配需要进行大量计算,以及可能产生的问题,现在find-bugs不会对相应的问题再报出bug
对于代码:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestOnFindBugs { public static void main(String[] args) { String text = "a s s d f g"; String pattern = "^g\\s++[a-z]++(\\s++[a-z]++=[^\\s]*+)*+$"; // 匹配一个或多个数字 String pattern1 = "a*+s*+"; Pattern compiledPattern = Pattern.compile(pattern); Matcher matcher = compiledPattern.matcher(text); while (matcher.find()) { System.out.println("匹配到的字符: " + matcher.group()); } Pattern compiledPattern1 = Pattern.compile(pattern1); matcher = compiledPattern1.matcher(text); while (matcher.find()) { System.out.println("匹配到的字符: " + matcher.group()); } } }
输出结果为
匹配到的字符: a 匹配到的字符: 匹配到的字符: s 匹配到的字符: 匹配到的字符: s 匹配到的字符: 匹配到的字符: 匹配到的字符: 匹配到的字符: 匹配到的字符: 匹配到的字符: 匹配到的字符:
find-bugs无警告
因此该项目已经没有相应的问题。
5.另一个项目
6.提出issue
Tip Tap 协作插件在线同步功能是,当两个人同时打开一个在线文档时,一个人编辑另一个人可以看到对方编辑的效果, 但这个时候,如果一个 人刷新网页,会发现之前编辑的内容会重复,我猜想这可能是因为,这个插件没有做对在线文档不同访问次数的不同结果。
因为是线上合作系统,当时没有保存相应的错误截图因此下面是示意图
共享编辑文档: init(已经保存部分) user1(正在编辑): aaaaaaaaa user2(正在编辑): bbbbbbbbb end 此时user1刷新该界面,按下F5或者浏览器的fresh按钮 共享编辑文档: init(已经保存部分,此处没有被多余复制) aaaaaaaaa(重复) user1(正在编辑): aaaaaaaaa bbbbbbbbb(重复) user2(正在编辑): bbbbbbbbb end 此时正在编辑的内容会被重复复制一遍,导致文档出现错误
另外,Tip Tap 的collaboration最近更新已经是一个月前,最近没什么动静,这个issue目前也没有回复。