问题标签 [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 - 静态分析与静态类型
我正在学习 Elixir,工具“透析器”可让您进行静态分析 - 使用它期望的参数的类型规范和它返回的输出来注释函数定义。它是完全可选的,但如果要尽可能地使用它,它如何匹配好的 'ol 静态类型?
erlang - Dialyzer 在用于分析时将正确的 .plt 文件视为无效
我使用以下命令为 ejabberd 和标准库构建了 .plt 文件:
生成文件的手动检查表明该文件有效:
但是当我尝试使用这个 .plt 文件检查我的源代码时,会发生以下错误:
如果 plt 文件中不包含标准应用程序,也会发生同样的情况。
这种行为的原因是什么?
UPD。我正在使用 ejabberd 14.05 和 erlang OTP 17.0。
erlang - Erlang:NIF 和透析器警告
在实施 NIF 时,Dialyzer 给了我
函数 crc16/1 没有本地返回
可能是因为我确实退出了 .erl 模块(就像官方文档推荐的那样):
通常,似乎使用exit/1
总是使 Dialyzer 抱怨此消息(-spec .. -> no_return()
无济于事)。
如何解决这个问题?
erlang - 从记录中删除字段时透析器错误
我正在尝试执行 mnesia 表转换以进行架构升级。在我的新模式中,我从之前的记录定义中删除了一个字段。架构的其余部分保持不变。这是一些代码-
我的原始记录有 34 个字段。删除第 5 个字段后,dialyzer 抱怨尝试访问元素 #34 的记录范围之外的索引。但是,我觉得这很奇怪,因为“mnesia:transform_table”可以在任何记录上执行,其大小可以是 34、33 或其他任何值。为什么透析器会抱怨?感谢一些解决此问题的指导...
透析器错误-
jenkins - 使用 make 和 grep 忽略现有的透析器错误
我试图让詹金斯在 erlang 代码上运行透析器,但我遇到了问题。当我们将其引入现有项目时,有许多我们不想标记的现有错误,我们在文件dialyzer-ignore-warnings中有这些错误
我的makefile中有这个,但我真正想要它做的是如果grep返回一个空文档则返回0,如果有新错误则返回一个值。但我的剧本就是不合格
erlang - 指定类型的功能中的透析器类型错误
分析以下功能时,我在透析器中收到错误消息。
错误是:
restc:request
具有以下类型规范:
调用使用的类型有:
any()
当我指定了要传递的变量的类型时,为什么透析器会说我的调用正在传递具有类型的变量?我查看了调用链以验证类型规范是否一致(并且与其他模块一致)。
erlang - Erlang Dialyzer:只接受某些整数?
假设我有一个函数,foo/1
其规范是-spec foo(atom()) -> #r{}.
,其中#r{}
定义为的记录在哪里-record(r, {a :: 1..789}).
,但是,我foo(a) -> 800.
在我的代码中有,当我对它运行透析器时,它没有警告我,(800
不是“有效”返回功能的价值foo/1
),我可以让透析器警告我吗?
编辑
Dialyzer 保留将此范围扩大到更大范围的权利。
但我找不到如何禁用它。
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.
elixir - “透析器:分析失败并出现错误..”(透析器错误?或错误使用地图类型?)
在我学习长生不老药的过程中,我开发了一个非常简单的应用程序,在使用透析器检查类型时遇到了一个小障碍。在我的代码上运行透析器会导致Analysis failed
错误...到目前为止,当我违反类型规范时,透析器只给我警告而不是错误,所以我不知道错误是什么。
为了缩小问题的范围,我做了一个非常简单的函数来执行有问题的返回值。
在此运行透析器时,出现以下错误
我是否以错误的方式定义地图类型?或者这是透析器中的一些错误?
windows - Windows上的Erlang透析器
我在 Windows 10 机器上。我通过 Chocolatey 安装了 Elixir;这将安装 Erlang 18。如何安装透析器?控制台应用程序是唯一的 unix 吗?