erl_lint
erl_lint
模块
erl_lint
模块摘要
Erlang代码链接器。
描述
该模块用于检查Erlang代码是否存在非法语法和其他错误。它还警告不要使用不推荐的编码方法。
检测到的错误包括:
- 重新定义和未定义的函数
- 未绑定和不安全变量
- 非法记录使用
发现的警告包括:
- 未使用的函数和导入
- 未用变量
- 导入到匹配中的变量
- 输出的变量
if
/case
/receive
- 变量隐藏在fun和列表理解
有些警告是可选的,可以通过指定适当的选项打开,如下所述。
该模块中的函数由Erlang编译器自动调用。除非您已经编写了自己的Erlang编译器,否则没有理由单独调用这些函数。
数据类型
error_info() = {
erl_anno:line()
, module(),
error_description()
}
error_description() = term()
输出
format_error(ErrorDescriptor) -> io_lib:chars()
类型
接收ErrorDescriptor
并返回描述错误或警告的字符串。这个函数通常在处理ErrorInfo
结构时被隐式调用(参见章节Error Information
)。
is_guard_test(Expr) -> boolean()
类型
测试如果Expr
是个法律保护考试。Expr
表示表达式的抽象形式的Erlang术语。erl_parse:parse_exprs(Tokens)
可用于生成Expr
...
module(AbsForms) -> {ok, Warnings} | {error, Errors, Warnings}
module(AbsForms, FileName) ->
{确定,警告}{错误,错误,警告}
module(AbsForms, FileName, CompileOptions) ->
{ok, Warnings} | {error, Errors, Warnings}
类型
检查模块中的所有表单是否有错误。它返回:
{ok,Warnings}
模块中没有错误。
{error,Errors,Warnings}
模块中有错误。
由于本模块只对编译器的维护人员感兴趣,并且为了避免在两处使用相同的描述,Options
控件的警告只在compile(3)
模块。
AbsForms
来自一个通过epp
Erlang预处理器读取的文件的模块可以来自许多文件。这意味着任何对错误的引用都必须包含文件名,请参阅epp(3)
模块或解析器(请参阅erl_parse(3)
模块)。返回的错误和警告具有以下格式:
[{FileName2,[ErrorInfo]}]
错误和警告按表单中遇到的顺序列出。因此,一个文件中的错误可以在错误列表中分成不同的条目。
错误信息
ErrorInfo
是标准ErrorInfo
结构,从所有I/O模块返回。格式如下:
{ErrorLine, Module, ErrorDescriptor}
通过以下调用获得一个描述错误的字符串:
Module:format_error(ErrorDescriptor)
另见
epp(3)
,erl_parse(3)