我正在使用啤酒进行日志记录;它有一个解析器转换,将lager:warn/1
等函数转换为lager:trace...
函数。
dialyzer不处理解析器转换,因此它会以Call to missing or unexported function lager:warn/1
.
我如何告诉它这个功能确实存在,而不是警告它?
最好的方法是让透析器查看您的编译光束文件,只要在编译代码时应用解析转换并且您在 .plt 文件中包含 lager 就可以了
通过查看 meck 项目的 Makefile 中有关透析器的内容,偶然发现了一种方法。看看:Makefile
关键部分是这样的:
| \
fgrep -v -f ./dialyzer.ignore-warnings
所以在那个文件中:dialyzer.ignore-warnings你会看到做什么。在我的版本中,我添加了:
调用丢失或未导出的函数 lager:warning/1
调用丢失或未导出的函数 lager:warning/2
调用丢失或未导出的函数 lager:info/1
调用丢失或未导出的函数 lager:info/2
调用丢失或未导出的函数lager:error/1
调用丢失或未导出的函数 lager:error/2
我收到的警告消失了。我的 rebar.config 中当然有这个条目:
{erl_opts, [{parse_transform, lager_transform}]}.