如何让透析器忽略某些未导出的功能?

时间:2013-12-05 16:18:38

标签: erlang dialyzer

我正在使用啤酒来做我的伐木;它有一个解析器转换,可将lager:warn/1等函数转换为lager:trace...函数。

透析器不处理解析器转换,因此它会以Call to missing or unexported function lager:warn/1发出警告。

我如何告诉它 这个函数是否存在,而不是警告它?

2 个答案:

答案 0 :(得分:3)

最好的方法是让透析器查看编译光束文件,只要在编译代码时应用解析转换并在.plt文件中包含lager就可以了

答案 1 :(得分:1)

通过查看meck项目关于透析器的Makefile中的操作,偶然发现了一条路。看看:Makefile
关键部分是:

| \
    fgrep -v -f ./dialyzer.ignore-warnings

因此,在该文件中:dialyzer.ignore-warnings您将看到该怎么做。在我的版本中,我添加了:

调用丢失或未导出的功能标签:警告/ 1
调用丢失或未导出的功能贮存器:警告/ 2
调用缺失或未导出的函数lager:info / 1
调用缺失或未导出的函数lager:info / 2
调用缺失或未导出的函数lager:error / 1
调用缺少或未导出的函数lager:error / 2

我的警告消失了。我当然在我的rebar.config中输入了这个条目:

{erl_opts, [{parse_transform, lager_transform}]}.