erlang的dialyzer使用中遇到的问题,以及解决方法
来源:互联网 发布:基金从业资格考试知乎 编辑:程序博客网 时间:2024/05/20 18:54
dialyzer错误分析:
错误1: Callback info about the tcp_server_handler behaviour is not available
解决办法:
在R15之后,自定义类型需要采用新的模式:
例子:
%% User-defined behaviour module
-module(simple_server).
-export([start_link/2,...]).
-callback init(State :: term()) -> 'ok'.
-callback handle_req(Req :: term(), State :: term()) -> {'ok', Reply :: term()}.
-callback terminate() -> 'ok'.
%% Alternatively you may define:
%%
%% -export([behaviour_info/1]).
%% behaviour_info(callbacks) ->
%% [{init,1},
%% {handle_req,2},
%% {terminate,0}].
start_link(Name, Module) ->
proc_lib:start_link(?MODULE, init, [self(), Name, Module]).
init(Parent, Name, Module) ->
register(Name, self()),
...,
Dbg = sys:debug_options([]),
proc_lib:init_ack(Parent, {ok, self()}),
loop(Parent, Module, Deb, ...).
...
In a callback module:
-module(db).
-behaviour(simple_server).
-export([init/0, handle_req/2, terminate/0]).
错误2:Unknown types
需要将自定义类型导出:
解决办法:
例子:
-type my_struct_type() :: Type.
-type orddict(Key, Val) :: [{Key, Val}].
-export_type([my_struct_type/0, orddict/2]).
错误3:Unknown functions
如果是不是开源或者自己开发的库,可以通过 apps参数指定, apps参数还可以指定目录和文件
例子:--apps $(APPS) ../base_lib ../open_lib/protobuffs ./ebin
错误1: Callback info about the tcp_server_handler behaviour is not available
解决办法:
在R15之后,自定义类型需要采用新的模式:
例子:
%% User-defined behaviour module
-module(simple_server).
-export([start_link/2,...]).
-callback init(State :: term()) -> 'ok'.
-callback handle_req(Req :: term(), State :: term()) -> {'ok', Reply :: term()}.
-callback terminate() -> 'ok'.
%% Alternatively you may define:
%%
%% -export([behaviour_info/1]).
%% behaviour_info(callbacks) ->
%% [{init,1},
%% {handle_req,2},
%% {terminate,0}].
start_link(Name, Module) ->
proc_lib:start_link(?MODULE, init, [self(), Name, Module]).
init(Parent, Name, Module) ->
register(Name, self()),
...,
Dbg = sys:debug_options([]),
proc_lib:init_ack(Parent, {ok, self()}),
loop(Parent, Module, Deb, ...).
...
In a callback module:
-module(db).
-behaviour(simple_server).
-export([init/0, handle_req/2, terminate/0]).
错误2:Unknown types
需要将自定义类型导出:
解决办法:
例子:
-type my_struct_type() :: Type.
-type orddict(Key, Val) :: [{Key, Val}].
-export_type([my_struct_type/0, orddict/2]).
错误3:Unknown functions
如果是不是开源或者自己开发的库,可以通过 apps参数指定, apps参数还可以指定目录和文件
例子:--apps $(APPS) ../base_lib ../open_lib/protobuffs ./ebin
0 0
- erlang的dialyzer使用中遇到的问题,以及解决方法
- Erlang类型及函数声明规格 以及dialyzer的使用
- erlang dialyzer使用
- 使用MFC过程中遇到的问题以及解决方法(一)
- 使用MFC过程中遇到的问题以及解决方法(二)
- 使用MFC过程中遇到的问题以及解决方法(三)
- Android Studio 使用中遇到的一些问题以及解决方法
- Ubuntu(17.04)使用过程中遇到的问题以及解决方法
- 学习中遇到的问题以及解决方法
- Java程序中遇到的乱码问题以及解决方法
- Java程序中遇到的乱码问题以及解决方法
- 记录IOS开发中遇到的问题以及解决方法
- ios 开发中遇到的问题总结以及解决方法
- ios 开发中遇到的问题总结以及解决方法
- 上周工作中遇到的问题以及解决方法总结
- Xamarin跨平台开发中遇到的问题以及解决方法
- 最近工作中遇到的问题以及解决方法总结
- 关于ArrayList使用时常遇到的问题以及解决方法
- Hadoop源码阅读2
- Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
- xslt语法之---position()函数
- js特效子导航不随滚动条滚动而改变
- android进阶(三)数据存储之Internal Storage
- erlang的dialyzer使用中遇到的问题,以及解决方法
- block使用小结、在arc中使用block、如何防止循环引用
- php跨域cookie共享使用方法
- mysql字符串函数
- Android 系统信息获取(CPU,RAM,ROM,Battery,SD-card,版本等)
- 对Windows和类Unix争论的观点:谁是谁的躯壳,谁又是谁的灵魂
- java设计模式——享元模式
- Mac Intellij 13 自定义live template自动补全简写
- andriod 布局3