7

我正在使用啤酒进行日志记录;它有一个解析器转换,将lager:warn/1等函数转换为lager:trace...函数。

dialyzer不处理解析器转换,因此它会以Call to missing or unexported function lager:warn/1.

我如何告诉它这个功能确实存在,而不是警告它?

4

2 回答 2

3

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

于 2014-02-02T22:27:59.107 回答
1

通过查看 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}]}. 
于 2014-02-19T03:22:56.927 回答