2

適切に対処する方法がわからない不一致の戻り値に関するダイアライザー エラーが発生しています。

mix dialyzer --quiet
lib/my_app_web/router.ex:1:no_return
Function __checks__/0 has no local return.
________________________________________________________________________________
lib/my_app_web/router.ex:21:unmatched_return
The expression produces a value of type:

%{
  :adapter => _,
  :before_send => _,
  :content_type => _,
  :context => _,
  :document_providers => _,
  :json_codec => _,
  :log_level => _,
  :no_query_message => _,
  :pipeline => _,
  :pubsub => _,
  :raw_options => Keyword.t(),
  :schema_mod => atom(),
  :serializer => _
}

but this value is unmatched.

________________________________________________________________________________
lib/my_app_web/router.ex:24:unmatched_return
The expression produces a value of type:

%{
  :adapter => _,
  :additional_pipeline => _,
  :assets => _,
  :before_send => _,
  :content_type => _,
  :context => _,
  :default_headers => _,
  :default_url => _,
  :document_providers => _,
  :interface => _,
  :json_codec => _,
  :log_level => _,
  :no_query_message => _,
  :pipeline => {Absinthe.Plug.GraphiQL, :pipeline},
  :pubsub => _,
  :raw_options => [{_, _}],
  :schema_mod => atom(),
  :serializer => _,
  :socket => _,
  :socket_url => _
}

but this value is unmatched.

mix.exsはこのように見えます:

  def project do
    [
      app: :my_app,
      version: "0.1.0",
      elixir: "1.9.4",
      elixirc_paths: elixirc_paths(Mix.env()),
      compilers: [:phoenix, :gettext] ++ Mix.compilers(),
      start_permanent: Mix.env() == :prod,
      dialyzer: [
        plt_add_deps: :transitive,
        flags: [:error_handling, :race_conditions, :unmatched_returns, :underspecs]
      ],
      aliases: aliases(),
      deps: deps()
    ]
  end

router.exはこのように見えます:

defmodule MyAppWeb.Router do
  use MyAppWeb, :router

  pipeline :browser do
    plug :accepts, ["html"]
    plug :fetch_session
    plug :fetch_flash
    plug :protect_from_forgery
    plug :put_secure_browser_headers
    plug MyAppWeb.Auth
  end

  pipeline :api do
    plug :accepts, ["json"]
  end

  # Other scopes may use custom stacks.
  scope "/api" do
    pipe_through :api

    forward "/graphql", Absinthe.Plug, schema: MyAppWeb.Schema.UserTypes

    if Mix.env() == :dev do
      forward "/graphiql", Absinthe.Plug.GraphiQL,
        schema: MyAppWeb.Schema.UserTypes,
        interface: :simple
    end
  end

  scope "/", MyAppWeb do
    pipe_through :browser

    resources "/users", UserController,
      only: [:index, :show, :new, :create, :edit, :delete, :update]

    resources "/sessions", SessionController, only: [:new, :create, :delete]

    get "/", PageController, :index, as: :home

    get "/*path", PageController, :index
  end
end

トリックを試しました_ =が、うまくいかないようです。比類のないリターンを使用すると役立つと思いますが、この場合はおそらくそうではありません. このページ ( https://github.com/jeremyjh/dialyxir/wiki/Phoenix-Dialyxir-Quickstart ) を読みましたが、この問題の解決には役立たなかったと思います。

フィードバックや方向性は大歓迎です。

ありがとうございました

4

1 に答える 1