某天使用erlang的重构工具wrangler进行重构的时候,发现有一个文件里的代码总是没有被重构。感到很蛋疼的我以为莫非是我的重构脚本出问题了?于是仔细检查,没有问题。那就是wrangler出问题了?然后查看了wrangler返回的结果,发现是在解析该文件的时候出错了,即parse的时候出现错误,返回了解析出错。好吧,那我们来调试wrangler。
wrangler代码简单分析
wrangler是用erlang写的erlang重构服务,他启动之后会在epmd注册一个wrangler服务,我们重构的时候只需要告诉他,在哪个文件的哪一行,我想要重构成什么即可。举个例子,比如我们想重明明某个变量,只需要通过erlang原生rpc调用
wrangler_refacs:rename_var(FileName, Line, Col, NewName, SearchPaths, Context, TabWidth)
(由于版本不同,该函数名称可能会有差异)
即可完成预重构,此时会创造一个重构好的副本,而不是直接修改源文件。然后发送一个confirm指令,将重构Legacy in the grammar
Try to use "query" as an atom in Erlang, e.g. {query, "SELECT * FROM foobar"}. What happens?
syntax error before: