问题标签 [dialyzer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
erlang - 如何将透析器与解析转换模块一起使用
我正在尝试在我的 erlang 应用程序上使用透析器,但输出如下:
我试图放在playerdupli.erl
与 相同的目录中party2.erl
,但输出是相同的。exprecs.erl
在部门:deps/parse_trans/src
.
代码编译并运行没有错误,包括 parse_transform 的东西。我在 MinGW(Windows 8 64)上。任何想法 ?
谢谢
erlang - 让 Dialyzer 支持自定义行为
我正在使用带有一些自定义行为的 Dialyzer,问题是当我这样做时,Dialyzer 会给我这个错误:
我不知道的一件事是如何创建该回调信息。我想将此信息添加到我的行为中,以便我可以从 Dialyzer 进行更多测试。
erlang - 在应用程序上运行透析器:我应该将依赖项添加到 PLT 吗?
我有一个 erlang 应用程序,在 apps/ 中有子应用程序,在 deps/ 中有依赖项。在其中一个子应用程序上运行透析器,例如:
有效,但将 deps 中应用程序的各种功能列为“未知功能”。
那么,我应该将 deps 应用程序添加到 plt,还是应该相信他们的作者已经完成了自己的测试?
我可以想到以下任何一个合理的论点:
- 可能会发现下游错误;
- 会阻塞清理我自己的代码。
erlang - Dialyzer 可以看穿 Mnesia 交易功能吗?
这是一些我认为 Dialyzer 应该能够发现的错误代码:
myapp_thing:exists/1
被指定为返回yes | no
,但返回类型实际上是true | false
(即,boolean()
),这是从返回的myapp_mnesia:thing_exists/1
。
但是,在 myapp 上运行 Dialyzer 会通过它而不会发出警告。
如果我更改myapp_mnesia:thing_exists/1
为仅返回true
,我会收到适当的警告;同样,如果我添加正确的规格:
但是看起来 Dialyzer 无法查看 mnesia 事务函数 Exists 内部,或者由于某些其他原因无法推断出 thing_exists 的返回类型。
那么,mnesia 事务函数是 Dialyzer 的障碍,还是 Dialyzer 的返回类型推断存在更普遍的障碍?
erlang - 如何对 Erlang 类型规范进行预处理
我正在尝试扩展 Erlang Mixer Library ( https://github.com/opscode/mixer ) 以传递“-spec()”。添加到模块中的功能的行。但是,我不清楚 erlc 如何将规范放入核心 erlang 代码中。
我从一个非常简单的(测试)模块开始:
并用“erlc +debug_info -S mix1.erl”编译它并得到这个(module_info函数被删除):
我试图弄清楚“-spec()”是如何翻译的,我在那里看不到它们,有什么想法吗?我错过了什么。这里的最终目标是将其用于解析转换。
erlang - 创造的乐趣没有本地回报
在 Erlang R15B 下测试。
Dialyzer 在 (1) 和 (2) 处抱怨“创造的乐趣没有本地回报”。
我认为以下更新应该足以通过(1):
但我认为应该有其他方式告诉 Dialyzer 更多类型信息。
谁能给点建议?先感谢您。
erlang - 如何让透析器忽略某些未导出的功能?
我正在使用啤酒进行日志记录;它有一个解析器转换,将lager:warn/1
等函数转换为lager:trace...
函数。
dialyzer不处理解析器转换,因此它会以Call to missing or unexported function lager:warn/1
.
我如何告诉它这个功能确实存在,而不是警告它?
erlang - 我可以告诉 Dialyzer 忽略某些模块吗?
我正在使用构建 PLT
它会吐出一些关于我不关心的模块中未知功能的错误。例如:
我可以告诉透析器忽略这些吗?我真的应该关心他们吗?
java - Emulating Interfaces using Behaviours with Dialyzer in Erlang
I want a Java interface equivalent in Erlang. How can I provide a -spec
contract for the dialyzer that will allow me to get the as close as possible to functionality provided in Java?
Lets say I want something equivalent to this:
erlang - 在 Erlang 梁上使用 Dialyzer 和源代码之间有效率差异吗?
我在 ~/erl_beam 之类的路径下收集项目的所有光束文件
它运作良好。
如果我在 Erlang 源代码上这样做:
它也有效。
那么为什么我们有两种方法对 Erlang 代码进行静态分析呢?彼此之间有什么优势或劣势吗?