如何使用透析器和解析变换模块

时间:2013-05-23 20:24:44

标签: erlang dialyzer parse-transform

我正在尝试在我的erlang应用程序上使用透析器,但这是输出:

dialyzer \
        --src -r src \
        -pa /home/niahoo/src/popos \
        -pa /home/niahoo/src/popos/deps/parse_trans \
        --verbose
  Checking whether the PLT c:/MinGW/msys/1.0/home/niahoo/.dialyzer_plt is up-to-date... yes
  Proceeding with analysis...
dialyzer: Analysis failed with error:
Could not scan the following file(s): [{"c:/MinGW/msys/1.0/home/niahoo/src/popos/src/tools/r.erl",
                                        ["c:/MinGW/msys/1.0/home/niahoo/src/popos/src/tools/r.erl:none: undefined parse transform 'exprecs'\n"]},
                                       {"c:/MinGW/msys/1.0/home/niahoo/src/popos/src/game/party2.erl",
                                        ["c:/MinGW/msys/1.0/home/niahoo/src/popos/src/game/party2.erl:none: undefined parse transform 'playerdupli'\n"]}]
Last messages in the log cache:
  Reading files and computing callgraph... 

我尝试将playerdupli.erl放在与party2.erl相同的目录中,但输出相同。 exprecs.erl位于代码中:deps/parse_trans/src

代码编译并运行没有错误,包括parse_transform的东西。我在MinGW(Windows 8 64)上。有什么想法吗?

由于

2 个答案:

答案 0 :(得分:2)

总是更容易的替代方法是使用+debug_info进行编译,然后让透析器分析生成的.beam文件。

答案 1 :(得分:1)

所以,我应该错过了文档中的内容。有一个有效的命令:

dialyzer \
    --src -r src \
    -pa /home/niahoo/src/popos \
    -pa ebin \
    -pa deps/parse_trans/ebin \
    --raw \
    --statistics \

-pa /home/niahoo/src/popos允许dilayzer查找与include_lib一起使用的包含的.hrl -pa ebin允许查找我的parse_transform模块(playerdupli) -pa deps/parse_trans/ebin同上。用exprecs