好和坏都是风景DFA是一种静态代码分析的方式,英文名唤做dataflowanalysis。她可以在项目未启动的情况下就给我们计算代码里面的一些变量的值,由此可以帮我们发现一些潜伏的问题bug。
好比空问题nil,无穷轮回endlessloop,不变的前提判定等程序员一般在写代码的时候很难提前发现的问题。
DFA如何实现猜测bugDFA会扫描代码,然后画出一幅图,这幅图表达了代码的执行流程。基于这个图,Goland开始分析变量的值,包括不同时候的变量的实时值,这个过程非常类似我们手动debug的程序的内心流动。
DFA告诉我们通过手动debug来发现bug也许太慢了,也不会增加我们对猜测bug的能力,同一个人,1年经验和5年经验的时候,对同一个bug的debug的认知水平需求可能是一样。
但是,通过静态分析就可以提前猜测bug,会大大减少大家重复debug的时间本钱。
下面来看看Goland如何帮我们发现这些bug。
第一个,不变的前提
如上,Goland在DFA以后,提醒我们err!=nil,因此我们可以以为这个判定是不会执行到的。
因此可以删除这部分多余的代码。
再看一个例子
如上是一个判定前提始终是true,处理方法同上,删掉多余的判定。
判定是程序的基本主题,几乎无处不在,我们在歌颂她的伟大的时候,也不要忘了ifelse太多,也会带来代码维护理解上的灾难性的后果。
多余的判定也许不影响业务的能力体现,但是不道德,可能会为后面埋下许多悲剧伏笔。
第二个,nil提前猜测一个对象的一生至少会面对一次为nil的时候,正如人的生命一样,nil是一次生命的结束,也是一次新的开始。
nil以及null,可以说许多bug都来源于他们,也许在我们刚入门一门编程语言时,第一个碰到的问题就是它了吧,以至于成为了一个bug恶梦。
假如借助DFA的分析猜测来发现他们,那真是程序员的福音啊。再也不用自己的脑瓜子去花许多时间找bug的。
因为大部分语言表达空是用null,那么假如你是其他语言的同学,对应的提示会变成nullpointer。
留意,DFA的分析也是需要时间的,所以有时候假如你撸码很快,可能会看到Goland一些错误的或者不及时的DFA提示。
假如你也但愿少一些麻烦,喜欢Goland的DFA,那就快去尝鲜吧。
未经允许不得转载:头条资讯网_今日热点_娱乐才是你关心的时事 » Goland 2024.1终于支持DFA了,真真是bug的照妖镜