问题标签 [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.

0 投票
2 回答
667 浏览

erlang - 如何将透析器与解析转换模块一起使用

我正在尝试在我的 erlang 应用程序上使用透析器,但输出如下:

我试图放在playerdupli.erl与 相同的目录中party2.erl,但输出是相同的。exprecs.erl在部门:deps/parse_trans/src.

代码编译并运行没有错误,包括 parse_transform 的东西。我在 MinGW(Windows 8 64)上。任何想法 ?

谢谢

0 投票
1 回答
647 浏览

erlang - 让 Dialyzer 支持自定义行为

我正在使用带有一些自定义行为的 Dialyzer,问题是当我这样做时,Dialyzer 会给我这个错误:

我不知道的一件事是如何创建该回调信息。我想将此信息添加到我的行为中,以便我可以从 Dialyzer 进行更多测试。

0 投票
1 回答
565 浏览

erlang - 在应用程序上运行透析器:我应该将依赖项添加到 PLT 吗?

我有一个 erlang 应用程序,在 apps/ 中有子应用程序,在 deps/ 中有依赖项。在其中一个子应用程序上运行透析器,例如:

有效,但将 deps 中应用程序的各种功能列为“未知功能”。

那么,我应该将 deps 应用程序添加到 plt,还是应该相信他们的作者已经完成了自己的测试?

我可以想到以下任何一个合理的论点:

  • 可能会发现下游错误;
  • 会阻塞清理我自己的代码。
0 投票
1 回答
103 浏览

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 的返回类型推断存在更普遍的障碍?

0 投票
1 回答
174 浏览

erlang - 如何对 Erlang 类型规范进行预处理

我正在尝试扩展 Erlang Mixer Library ( https://github.com/opscode/mixer ) 以传递“-spec()”。添加到模块中的功能的行。但是,我不清楚 erlc 如何将规范放入核心 erlang 代码中。

我从一个非常简单的(测试)模块开始:

并用“erlc +debug_info -S mix1.erl”编译它并得到这个(module_info函数被删除):

我试图弄清楚“-spec()”是如何翻译的,我在那里看不到它们,有什么想法吗?我错过了什么。这里的最终目标是将其用于解析转换。

0 投票
0 回答
770 浏览

erlang - 创造的乐趣没有本地回报

在 Erlang R15B 下测试。

Dialyzer 在 (1) 和 (2) 处抱怨“创造的乐趣没有本地回报”。

我认为以下更新应该足以通过(1):

但我认为应该有其他方式告诉 Dialyzer 更多类型信息。

谁能给点建议?先感谢您。

0 投票
2 回答
2120 浏览

erlang - 如何让透析器忽略某些未导出的功能?

我正在使用啤酒进行日志记录;它有一个解析器转换,将lager:warn/1等函数转换为lager:trace...函数。

dialyzer不处理解析器转换,因此它会以Call to missing or unexported function lager:warn/1.

我如何告诉它这个功能确实存在,而不是警告它?

0 投票
3 回答
3020 浏览

erlang - 我可以告诉 Dialyzer 忽略某些模块吗?

我正在使用构建 PLT

它会吐出一些关于我不关心的模块中未知功能的错误。例如:

我可以告诉透析器忽略这些吗?我真的应该关心他们吗?

0 投票
1 回答
115 浏览

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:

0 投票
2 回答
226 浏览

erlang - 在 Erlang 梁上使用 Dialyzer 和源代码之间有效率差异吗?

我在 ~/erl_beam 之类的路径下收集项目的所有光束文件

它运作良好。

如果我在 Erlang 源代码上这样做:

它也有效。

那么为什么我们有两种方法对 Erlang 代码进行静态分析呢?彼此之间有什么优势或劣势吗?