查看源代码 erl_lint (stdlib v6.2)
Erlang 代码检查器。
此模块用于检查 Erlang 代码中的非法语法和其他错误。它还会警告不建议使用的编码实践。
检测到的错误包括
- 重定义和未定义的函数
- 未绑定和不安全的变量
- 非法记录使用
检测到的警告包括
- 未使用的函数和导入
- 未使用的变量
- 导入到匹配中的变量
- 从
if
/case
/receive
导出的变量 - 在 fun 和列表推导式中被覆盖的变量
某些警告是可选的,可以通过指定下面描述的相应选项来启用。
此模块中的函数由 Erlang 编译器自动调用。除非您编写了自己的 Erlang 编译器,否则没有理由单独调用这些函数。
错误信息
ErrorInfo
是从所有 I/O 模块返回的标准 ErrorInfo
结构。格式如下
{ErrorLine, Module, ErrorDescriptor}
通过以下调用获取描述错误的字符串
Module:format_error(ErrorDescriptor)
另请参阅
摘要
函数
接收一个 ErrorDescriptor
并返回一个描述错误或警告的字符串。此函数通常在处理 ErrorInfo
结构时隐式调用(请参阅 错误信息 部分)。
测试 Expr
是否为合法的保护测试。Expr
是一个 Erlang 项,表示表达式的抽象形式。可以使用 erl_parse:parse_exprs(Tokens)
生成 Expr
列表。
等同于 module/3
。
检查模块中所有形式的错误。它返回
类型
-type error_description() :: term().
-type error_info() :: {erl_anno:location() | none, module(), error_description()}.
-type fun_used_vars() :: #{erl_parse:abstract_expr() => {[atom()], fun_used_vars()}}.
函数
-spec format_error(ErrorDescriptor) -> io_lib:chars() when ErrorDescriptor :: error_description().
接收一个 ErrorDescriptor
并返回一个描述错误或警告的字符串。此函数通常在处理 ErrorInfo
结构时隐式调用(请参阅 错误信息 部分)。
-spec is_guard_test(Expr) -> boolean() when Expr :: erl_parse:abstract_expr().
测试 Expr
是否为合法的保护测试。Expr
是一个 Erlang 项,表示表达式的抽象形式。可以使用 erl_parse:parse_exprs(Tokens)
生成 Expr
列表。
-spec module(AbsForms) -> {ok, Warnings} | {error, Errors, Warnings} when AbsForms :: [erl_parse:abstract_form() | erl_parse:form_info()], Warnings :: [{SourceFile, [ErrorInfo]}], Errors :: [{SourceFile, [ErrorInfo]}], SourceFile :: file:filename(), ErrorInfo :: error_info().
等同于 module/3
。
-spec module(AbsForms, FileName) -> {ok, Warnings} | {error, Errors, Warnings} when AbsForms :: [erl_parse:abstract_form() | erl_parse:form_info()], FileName :: atom() | string(), Warnings :: [{SourceFile, [ErrorInfo]}], Errors :: [{SourceFile, [ErrorInfo]}], SourceFile :: file:filename(), ErrorInfo :: error_info().
等同于 module/3
。
-spec module(AbsForms, FileName, CompileOptions) -> {ok, Warnings} | {error, Errors, Warnings} when AbsForms :: [erl_parse:abstract_form() | erl_parse:form_info()], FileName :: atom() | string(), CompileOptions :: [compile:option()], Warnings :: [{SourceFile, [ErrorInfo]}], Errors :: [{SourceFile, [ErrorInfo]}], SourceFile :: file:filename(), ErrorInfo :: error_info().
检查模块中所有形式的错误。它返回
{ok,Warnings}
- 模块中没有错误。{error,Errors,Warnings}
- 模块中有错误。
由于此模块仅对编译器维护人员感兴趣,并且为了避免在两个地方出现相同的描述,控制警告的 Options
的元素仅在 compile
模块中描述。
模块的 AbsForms
来自通过 Erlang 预处理器 epp
读取的文件,可能来自多个文件。这意味着任何对错误的引用都必须包含文件名,请参阅 epp
模块或解析器(请参阅 erl_parse
模块)。返回的错误和警告具有以下格式
[{SourceFile,[ErrorInfo]}]
错误和警告按照它们在形式中出现的顺序列出。因此,来自一个文件的错误可以拆分为错误列表中的不同条目。