문제

I'm using lager to do my logging; it has a parser transform which converts lager:warn/1, etc. functions into lager:trace... functions.

dialyzer doesn't process the parser transform, so it warns with Call to missing or unexported function lager:warn/1.

How do I tell it that this function does exist, and not to warn about it?

도움이 되었습니까?

해결책

The best way to do it is to have dialyzer look at your compile beam files, as long as the parse transform is applied when the code is compiled and you include lager in your .plt file it will be fine

다른 팁

Stumbled upon a way by checking out what's done in the meck project's Makefile regarding dialyzer. Have a look: Makefile
Key part is this:

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

So within that file: dialyzer.ignore-warnings you'll see what to do. In my version I added:

Call to missing or unexported function lager:warning/1
Call to missing or unexported function lager:warning/2
Call to missing or unexported function lager:info/1
Call to missing or unexported function lager:info/2
Call to missing or unexported function lager:error/1
Call to missing or unexported function lager:error/2

And the warnings I was getting went away. I do of course have this entry in my rebar.config:

{erl_opts, [{parse_transform, lager_transform}]}. 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top