erl_tidy
erl_tidy
模块
erl_tidy
模块摘要
整理和漂亮打印Erlang源代码,删除未使用的函数,更新过时的构造和函数调用等。
描述
整理和漂亮打印Erlang源代码,删除未使用的函数,更新过时的构造和函数调用等。
注意事项:在宏的一些复杂用途中,使用或参数周围的括号自动添加或删除可能会导致编译器拒绝产生的程序; 但是,我们在现有的代码中没有发现这种情况。定义奇怪宏的程序通常不能被这个程序读取,在这种情况下,不会做任何改变。
如果你真的想要,你可以称它为“Inga”。
免责声明:作者对由程序处理的代码引入的错误不承担任何责任。它经过了相当充分的测试,但错误的可能性依然存在。保持原始代码的备份安全存储,直到您确信可以信任新的修改后的代码。
数据类型
filename()=
file:filename()**
syntaxTree()= [
erl_syntax:syntaxTree()
**](erl_syntax#type-syntaxTree)
抽象语法树。详情请参阅erl_syntax
模块。
出口
dir() -> ok
相当于dir("")
。
dir(Dir) -> ok
相当于dir(Dir, [])
。
dir(Directory::filename(), Options::[term()]) -> ok
整理目录及其子目录中的Erlang源文件。
可供选择的办法:
{follow_links, boolean()}
如果值是true
,将遵循符号目录链接。默认值是false
。
{recursive, boolean()}
如果值是true
,子目录将被递归访问。默认值是true
。
{regexp, string()}
该值表示正则表达式(请参阅模块re
)。整理将只应用于名称符合此模式的常规文件。默认值是".*\\.erl$"
,它与正常的Erlang源文件名匹配。
{test, boolean()}
如果该值是true
,则不会修改任何文件。默认值是false
。
{verbose, boolean()}
如果值为true
,程序运行时会输出进度消息,除非quiet
选项为true
。调用时的默认值dir/2
是true
。
有关file/2
更多选项,请参阅该功能。
另见:
re(3)
,file/2
。
file(Name) -> ok
相当于file(Name, [])
。
file(Name::filename(), Options::[term()]) -> ok
整理Erlang源代码文件。
可供选择的办法有:
{backup_suffix, string()}
指定创建备份文件时要使用的文件名后缀; 默认值是".bak"
(参考backups
选项)。
{backups, boolean()}
如果值为true
,则在新文件打开写入之前,现有文件将被重命名。新名称是通过将由backup_suffix
选项给出的字符串附加到原始名称而形成的。默认值是true
。
{dir, filename()}
指定要在其中写入输出文件的目录的名称。默认情况下,使用当前目录。如果该值是空字符串,则使用当前目录。
{outfile, filename()}
指定将生成的源代码写入的文件的名称(无后缀)。如果未指定此选项,Name
则使用参数。
{printer, Function}
- Function = (syntaxTree(), [term()]) -> string()
为漂亮的Erlang语法树指定一个函数。这用于输出生成的模块定义。假定函数返回给定语法树的格式化文本,并且如果发生错误应该引发异常。默认的格式化函数调用erl_prettypr:format/2
。
{test, boolean()}
如果值是true
,则不会修改文件; 如果verbose
启用标志,这通常非常有用,可以生成有关程序文件的报告而不会影响它们。默认值是false
。
{stdout, boolean()}
如果值是true
,而不是文件被写入磁盘,它将被打印到标准输出。默认值是false
。
有关module/2
更多选项,请参阅该功能。
另见:
module/2
,erl_prettypr:format/2
。
module(Forms) ->syntaxTree()
相当于module(Forms, [])
。
module(Forms, Options::[term()]) ->syntaxTree()
类型
整理模块定义的语法树表示。给定的Forms
可能是单个语法树的类型form_list
,或者是表示“程序形式”的语法树列表。无论哪种情况,都Forms
必须表示一个完整的模块定义。返回的语法树具有类型form_list
并表示相同源代码的整理版本。
可供选择的办法有:
{auto_export_vars, boolean()}
如果该值是true
,所有比赛“ {V1, ..., Vn} = E
”这里E
是一个个案,如─或接收表达他的枝条都返回n元组(或显式地抛出例外)将被改写结合和出口变量V1
,...,Vn
直接。默认值是false
。
例如:
{X, Y} = case ... of
... -> {17, foo()};
... -> {42, bar()}
end
将改写为:
case ... of
... -> X = 17, Y = foo(), {X, Y};
... -> X = 42, Y = bar(), {X, Y}
end
{auto_list_comp, boolean()}
如果值是true
,则调用lists:map/2
并将lists:filter/2
使用列表推导重写。默认值是true
。
{file, string()}
指定从其中获取源代码的文件的名称。这仅用于生成错误报告。默认值是空字符串。
{idem, boolean()}
如果值是true
,则影响代码修改方式的所有选项均设置为“不更改”。例如,要仅更新警卫测试,而没有其他任何内容,请使用这些选项[new_guard_tests, idem]
。(回想一下,靠近列表开头的选项具有更高的优先级。)
{keep_unused, boolean()}
如果值是true
,则不会从代码中删除未使用的函数。默认值是false
。
{new_guard_tests, boolean()}
如果值是true
,护卫测试将更新为使用新名称,例如“ is_integer(X)
”而不是“ integer(X)
”。默认值是true
。另见old_guard_tests
。
{no_imports, boolean()}
如果值为true
,则所有导入语句将被删除,并且对导入函数的调用将被扩展为显式远程调用。默认值是false
。
{old_guard_tests, boolean()}
如果值是true
,护卫测试将被改为使用旧名称而不是新名称,例如“ integer(X)
”而不是“ is_integer(X)
”。默认值是false
。该选项将覆盖该new_guard_tests
选项。
{quiet, boolean()}
如果该值是true
,所有信息消息和警告消息将被抑制。默认值是false
。
{rename, {{atom(), atom(), integer()}, {atom(), atom()}}}
该值是成对的列表,将元组{Module, Name, Arity}
与元组相关联{NewModule, NewName}
,指定对远程函数调用的重新调用。默认情况下,该值是空列表。
重命名只影响远程调用(也可以通过导入声明伪装); 模块内的本地调用不受影响,并且没有函数定义被重命名。由于元数不能改变,所以新名称{NewModule, NewName}
仅由代表。只有匹配指定参数的调用才会匹配; 需要多个条目来重新调用具有相同模块和函数名称但不同arities的函数。
此选项还可用于覆盖使用过时函数名称的调用的默认重命名。
{verbose, boolean()}
如果值为true
,程序运行时会输出进度消息,除非quiet
选项为true
。默认值是false
。
richard@gmail.com