问题标签 [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 投票
3 回答
1826 浏览

erlang - 静态分析与静态类型

我正在学习 Elixir,工具“透析器”可让您进行静态分析 - 使用它期望的参数的类型规范和它返回的输出来注释函数定义。它是完全可选的,但如果要尽可能地使用它,它如何匹配好的 'ol 静态类型?

0 投票
1 回答
243 浏览

erlang - Dialyzer 在用于分析时将正确的 .plt 文件视为无效

我使用以下命令为 ejabberd 和标准库构建了 .plt 文件:

生成文件的手动检查表明该文件有效:

但是当我尝试使用这个 .plt 文件检查我的源代码时,会发生以下错误:

如果 plt 文件中不包含标准应用程序,也会发生同样的情况。

这种行为的原因是什么?

UPD。我正在使用 ejabberd 14.05 和 erlang OTP 17.0。

0 投票
1 回答
317 浏览

erlang - Erlang:NIF 和透析器警告

在实施 NIF 时,Dialyzer 给了我

函数 crc16/1 没有本地返回

可能是因为我确实退出了 .erl 模块(就像官方文档推荐的那样):

通常,似乎使用exit/1总是使 Dialyzer 抱怨此消息(-spec .. -> no_return()无济于事)。

如何解决这个问题?

0 投票
1 回答
60 浏览

erlang - 从记录中删除字段时透析器错误

我正在尝试执行 mnesia 表转换以进行架构升级。在我的新模式中,我从之前的记录定义中删除了一个字段。架构的其余部分保持不变。这是一些代码-

我的原始记录有 34 个字段。删除第 5 个字段后,dialyzer 抱怨尝试访问元素 #34 的记录范围之外的索引。但是,我觉得这很奇怪,因为“mnesia:transform_table”可以在任何记录上执行,其大小可以是 34、33 或其他任何值。为什么透析器会抱怨?感谢一些解决此问题的指导...

透析器错误-

0 投票
2 回答
184 浏览

jenkins - 使用 make 和 grep 忽略现有的透析器错误

我试图让詹金斯在 erlang 代码上运行透析器,但我遇到了问题。当我们将其引入现有项目时,有许多我们不想标记的现有错误,我们在文件dialyzer-ignore-warnings中有这些错误

我的makefile中有这个,但我真正想要它做的是如果grep返回一个空文档则返回0,如果有新错误则返回一个值。但我的剧本就是不合格

0 投票
1 回答
374 浏览

erlang - 指定类型的功能中的透析器类型错误

分析以下功能时,我在透析器中收到错误消息。

错误是:

restc:request具有以下类型规范:

调用使用的类型有:

any()当我指定了要传递的变量的类型时,为什么透析器会说我的调用正在传递具有类型的变量?我查看了调用链以验证类型规范是否一致(并且与其他模块一致)。

0 投票
1 回答
116 浏览

erlang - Erlang Dialyzer:只接受某些整数?

假设我有一个函数,foo/1其规范是-spec foo(atom()) -> #r{}.,其中#r{}定义为的记录在哪里-record(r, {a :: 1..789}).,但是,我foo(a) -> 800.在我的代码中有,当我对它运行透析器时,它没有警告我,(800不是“有效”返回功能的价值foo/1),我可以让透析器警告我吗?

编辑

向你学习一些 Erlang说:

Dialyzer 保留将此范围扩大到更大范围的权利。

但我找不到如何禁用它。

0 投票
1 回答
356 浏览

elixir - Does Dialyzer analyze anonymous functions?

In my progress of learning Elixir, I am playing around with Dialyzer to put types on my functions. In this regard, I've noticed that Dialyzer doesn't seem to check the types for anonymous functions.

In the example below, I am passing an anonymous function which adds two numbers and returns a number (t::number -> number), into the all? function. Thus I am not returning boolean as promised in the all? spec (t::any -> boolean).

Dialyzer doesn't seem to report any errors or warnings for this code, and I am curios if Dialyzer is unable to check this kind of mistakes or if I am doing something wrong.

0 投票
1 回答
314 浏览

elixir - “透析器:分析失败并出现错误..”(透析器错误?或错误使用地图类型?)

在我学习长生不老药的过程中,我开发了一个非常简单的应用程序,在使用透析器检查类型时遇到了一个小障碍。在我的代码上运行透析器会导致Analysis failed错误...到目前为止,当我违反类型规范时,透析器只给我警告而不是错误,所以我不知道错误是什么。

为了缩小问题的范围,我做了一个非常简单的函数来执行有问题的返回值。

在此运行透析器时,出现以下错误

我是否以错误的方式定义地图类型?或者这是透析器中的一些错误?

0 投票
1 回答
241 浏览

windows - Windows上的Erlang透析器

我在 Windows 10 机器上。我通过 Chocolatey 安装了 Elixir;这将安装 Erlang 18。如何安装透析器?控制台应用程序是唯一的 unix 吗?