cost 291 ms
如何以人性化的方式對守衛進行類型規范?

[英]How to typespec guards in a human friendly way?

背景我在玩守衛,我希望我的守衛定義也有一個類型規范: 問題所以,現在我有了這個簡單的守衛,我想要它的規格。 然而,dyalizer 的建議並不完全是人類可讀的。 我相信這可能被定義為一個 function ,它接受any作為參數,但返回類型對我來說很難理解。 我認為這意味着它會創建 erlang ...

Dialyzer 簡化了長聯合類型

[英]Dialyzer simplifies long union types

我注意到 Dialyzer 可能會簡化長聯合類型,至少在原子方面是這樣。 例如,如果我有: 然后我打電話給 function Foo.bar(:hello) Dialyzer 會捕捉到錯誤,說:hello是這個 function 的錯誤類型。 但是,如果我更改類型聲明以使聯合包含超過 13 個(我 ...

透析器只檢查function的第一個案例

[英]Dialyzer check only the first case of the function

我可以在這里問一個新手問題: 為什么 Dialyzer 只檢查 function 的第一個案例?-spec f(integer()) -> integer(). f(0) -> 0; f(_) -> test. 進行分析...在 0m0.25s 內完成完成(成功通過) 帶有“ca ...

Erlang模塊中自定義屬性position有什么要求?

[英]What are the requirements for position of custom attributes in an Erlang module?

它似乎: 當-module之前的源文件中存在用戶定義的屬性時,Dialyzer 和 erlc 都會出錯 Shell session 演示: 用戶定義屬性的順序合同是否在任何地方記錄? 或者這是一個錯誤? 我在文檔中只能找到預定義屬性必須位於 function 聲明之前: https://www. ...

Dialyzer 無法使用多態類型識別 function 中的錯誤

[英]Dialyzer cannot recognize error in function using polymorphic types

背景我正在嘗試使用透析器進行多態打字。 例如,我使用的是著名的Option類型(又名,Maybe Monad),現在在許多其他語言中都很流行。 如您所見,function validate_name應該返回(根據規范定義) [{:some, String.t}] | [] [{:some, Str ...

Dialyzer 不會捕獲返回函數的錯誤

[英]Dialyzer does not catch errors on returned functions

背景在使用 dialyzer、typespecs 和 currying 時,我能夠在 dialyzer 中創建一個誤報示例。 出於本MWE的目的,我使用diallyxir (包括版本),因為它讓我的生活更輕松。 dialyxir 的作者確認這不是他們方面的問題,因此暫時排除了這種可能性。 環境 您 ...

Elixir 返回實現者結構類型的行為

[英]Elixir Behaviour that returns the implementer's struct type

我有一種行為來抽象解析各種 Phoenix 端點的 URL 查詢參數。 它看起來像這樣: 一個簡單的實現如下所示: 我在這里真正想說的是: 實現模塊應該提供一個結構(稱之為t() ) from_query_params/1上的成功類型應該使用該結構t() ,而不僅僅是任何結構我懷疑 Elixir ...

Elixir 透析器的多晶型

[英]Polymorphic types for dialyzer in Elixir

背景 我有一個名為MyApp.Result的struct ,它基本上是一個 Result Monad 的表示。 此結構旨在成為操作成功和錯誤的正式結構表示: 問題 在向我的一位同事展示這一點時,他提出了一個很好的觀點: 我看到您在這里嘗試做什么,但是當我看到MyApp.Result結構時, ...

`changeset()` 規范要求邏輯上不可為空的可空類型

[英]`changeset()` spec requires nullable type which is not logically nullable

我有以下代碼: 根據@type定義, foo和baz_id不應為nil 。 但是, dialyzer抱怨(使用給定的@spec ),因為默認值%__MODULE__{}會將它們設置為nil 。 如果我將@type定義替換為: 那么dialyzer不會抱怨,但我不再認為某些字段不可為空。 什么是讓ch ...

如何讓 Dialyzer 接受故意拋出的 function 的呼叫?

[英]How can I get Dialyzer to accept a call to a function that intentionally throws?

我有一個 function 當它的第一個參數是原子throw時故意拋出。 此代碼的簡化版本是:-module(sample). -export([main/1, throw_or_ok/1]). main(_Args) -> throw_or_ok(throw). throw ...

Dialyzer 在壞記錄構建時警告 no_exit - 這是一個錯誤嗎?

[英]Dialyzer warns about no_exit on bad record construction - is this a bug?

當 Dialyzer 遇到未初始化必填字段的記錄文字時,它認為控制流停止在記錄文字所在的行。 例子:-module(sample). -export([foo/0]). -record(boo, {a :: number()}). foo() -> erlang:display(#b ...

為什么 Dialyzer 相信具有過於具體的返回類型的規范?

[英]Why does Dialyzer believe specs with too-specific return types?

我希望添加規范永遠不會降低安全性,但這正是在以下情況下發生的情況。 在下面的代碼中,Dialyzer(錯誤地)相信我 bar 的返回類型是1 。 這導致它說 foo() 中的模式永遠無法匹配——不正確的建議,如果注意,會引入運行時錯誤!-module(sample). -export([foo/0 ...

什么是 succ_typings 為 false 的 Dialyzer?

[英]What is Dialyzer with succ_typings false?

我認為 Dialyzer 是一個檢查成功輸入的工具。 但是,它的公共 API 有一個 succ_typings false 選項。 Rebar3 的 Dialyzer 提供程序通過--succ-typings false命令行選項公開了這一點。 使用和不使用此選項運行 Dialyzer 有什么區 ...

為什么 OTP 中的類型規范會重復參數名稱?

[英]Why do type specs in OTP repeat parameter names?

在 Erlang 標准庫的類型規范中,在when子句之前,規范中幾乎沒有任何類型。 例如, lists:member/2的規范是這樣的:-spec member(Elem, List) -> boolean() when Elem :: T, List :: [T], ...

PLT 代表什么?

[英]What does PLT stand for?

我一直在大型 Elixir 代碼庫上使用 Dialyzer(和 Dialyxir),當我運行它時,它會吐出一堆診斷信息。 它引用了很多.plt文件。 在 Erlang 和 Dialyzer 的上下文中,“PLT”代表什么? ...

如何覆蓋 function 或 Elixir 和透析器中的變量類型?

[英]How to override a function or variable type in Elixir and Dialyzer?

我正在使用 Elixir 並且我收到一個 Dialyzer (via Dialyxir) 錯誤,上面寫着 這是代碼 我相信這是因為Timex.DateTime.from_seconds的類型規范不正確。 他們將其定義為 但我認為它應該是 有沒有辦法通過以某種方式覆蓋類型規范或date類型來解決這個 ...

撥號器(通過 Dialyxir)警告來自苦艾酒 (GraphQL) 路由的 `forward` 命令中的“但此值不匹配”。 如何解決?

[英]Dializer (via Dialyxir) warning about "but this value is unmatched" from `forward` command for Absinthe (GraphQL) route. How to address?

我收到有關不匹配退貨的透析器錯誤,我不確定如何正確解決。 我的mix.exs看起來像這樣: 我的router.ex看起來像這樣: 我試過_ =技巧,但它似乎不起作用。 我認為使用無與倫比的回報可能會有所幫助,但在這種情況下可能不會。 我已閱讀此頁面( https://github.com ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM