查看源代码 erl_lint (stdlib v6.2)

Erlang 代码检查器。

此模块用于检查 Erlang 代码中的非法语法和其他错误。它还会警告不建议使用的编码实践。

检测到的错误包括

  • 重定义和未定义的函数
  • 未绑定和不安全的变量
  • 非法记录使用

检测到的警告包括

  • 未使用的函数和导入
  • 未使用的变量
  • 导入到匹配中的变量
  • if/case/receive 导出的变量
  • 在 fun 和列表推导式中被覆盖的变量

某些警告是可选的,可以通过指定下面描述的相应选项来启用。

此模块中的函数由 Erlang 编译器自动调用。除非您编写了自己的 Erlang 编译器,否则没有理由单独调用这些函数。

错误信息

ErrorInfo 是从所有 I/O 模块返回的标准 ErrorInfo 结构。格式如下

{ErrorLine, Module, ErrorDescriptor}

通过以下调用获取描述错误的字符串

Module:format_error(ErrorDescriptor)

另请参阅

epp, erl_parse

摘要

函数

接收一个 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 fa() :: {atom(), arity()}.
-type fun_used_vars() :: #{erl_parse:abstract_expr() => {[atom()], fun_used_vars()}}.

函数

链接到此函数

format_error(ErrorDescriptor)

查看源代码
-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

链接到此函数

module(AbsForms, FileName)

查看源代码
-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

链接到此函数

module(AbsForms, FileName, CompileOptions)

查看源代码
-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]}]

错误和警告按照它们在形式中出现的顺序列出。因此,来自一个文件的错误可以拆分为错误列表中的不同条目。