Open flupke opened 1 year ago
The following module is reported as missing a docstring in one of its functions:
defmodule MultiplayerBackend.Ack do @moduledoc """ Functions responsible for creating actions acknowledgements. """ @type action :: :add_node | :remove_node | :update_properties @type invalid_payload(action) :: %{ action: action, status: :error, error: :invalid_payload } @type forbidden(action) :: %{ action: action, status: :error, error: :forbidden, action_id: String.t() } @type add_node :: %{ action: :add_node, status: :ok, action_id: String.t(), node: map(), edits_count: integer() } @type add_node_action_already_applied :: %{ action: :add_node, status: :error, error: :action_already_applied, action_id: String.t(), node_id: String.t(), node: map() | nil, edits_count: integer() } @type add_node_node_already_exists :: %{ action: :add_node, status: :error, error: :node_already_exists, action_id: String.t(), node_id: String.t(), node: map() | nil, edits_count: integer() } @type add_node_unknown_parent :: %{ action: :add_node, status: :error, error: :unknown_parent, action_id: String.t(), node_id: String.t(), edits_count: integer() } @type add_node_acknowledgement :: add_node() | add_node_action_already_applied() | add_node_node_already_exists() | add_node_unknown_parent() | invalid_payload(:add_node) | forbidden(:add_node) @type remove_node :: %{ action: :remove_node, status: :ok, action_id: String.t(), node_id: String.t(), removed_nodes_ids: [String.t()], edits_count: integer() } @type remove_node_action_already_applied :: %{ action: :remove_node, status: :error, error: :action_already_applied, action_id: String.t(), node_id: String.t(), removed_nodes_ids: [String.t()], edits_count: integer() } @type remove_node_node_not_found :: %{ action: :remove_node, status: :error, error: :node_not_found, action_id: String.t(), node_id: String.t(), edits_count: integer() } @type remove_node_acknowledgement :: remove_node() | remove_node_action_already_applied() | remove_node_node_not_found() | invalid_payload(:remove_node) | forbidden(:remove_node) @type update_properties :: %{ action: :update_properties, status: :ok, action_id: String.t(), node_id: String.t(), properties: map(), edits_count: integer() } @type update_properties_action_already_applied :: %{ action: :update_properties, status: :error, error: :action_already_applied, action_id: String.t(), node_id: String.t(), properties: map(), edits_count: integer() } @type update_properties_node_not_found :: %{ action: :update_properties, status: :error, error: :node_not_found, action_id: String.t(), node_id: String.t(), edits_count: integer() } @type update_properties_cannot_move_under_itself :: %{ action: :update_properties, status: :error, error: :cannot_move_under_itself, action_id: String.t(), node_id: String.t(), properties: map(), edits_count: integer() } @type update_properties_acknowledgement :: update_properties() | update_properties_action_already_applied() | update_properties_node_not_found() | update_properties_cannot_move_under_itself() | invalid_payload(:update_properties) | forbidden(:update_properties) @type action_acknowledgement :: add_node_acknowledgement() | remove_node_acknowledgement() | update_properties_acknowledgement() @doc false @spec invalid_payload(action :: action()) :: invalid_payload(action) def invalid_payload(action) do %{ action: action, status: :error, error: :invalid_payload } end @doc false @spec forbidden(action :: action(), action_id :: String.t()) :: forbidden(action) def forbidden(action, action_id) do %{ action: action, status: :error, error: :forbidden, action_id: action_id } end @doc false @spec add_node(action_id :: String.t(), node :: map(), edits_count :: integer()) :: add_node() def add_node(action_id, node, edits_count) do %{ status: :ok, action: :add_node, action_id: action_id, node: node, edits_count: edits_count } end @doc false @spec add_node_error( error :: :action_already_applied, action_id :: String.t(), node_id :: String.t(), node :: map() | nil, edits_count :: integer() ) :: add_node_action_already_applied() def add_node_error(:action_already_applied, action_id, node_id, node, edits_count) do add_node_error_base(:action_already_applied, action_id, node_id, node, edits_count) end @doc false @spec add_node_error( error :: :node_already_exists, action_id :: String.t(), node_id :: String.t(), node :: map() | nil, edits_count :: integer() ) :: add_node_node_already_exists() def add_node_error(:node_already_exists, action_id, node_id, node, edits_count) do add_node_error_base(:node_already_exists, action_id, node_id, node, edits_count) end @doc false @spec add_node_error( error :: :unknown_parent, action_id :: String.t(), node_id :: String.t(), edits_count :: integer() ) :: add_node_unknown_parent() def add_node_error(:unknown_parent, action_id, node_id, edits_count) do %{ action: :add_node, status: :error, error: :unknown_parent, action_id: action_id, node_id: node_id, edits_count: edits_count } end defp add_node_error_base(error, action_id, node_id, node, edits_count) do %{ action: :add_node, status: :error, error: error, action_id: action_id, node: node, node_id: node_id, edits_count: edits_count } end @doc false @spec remove_node( action_id :: String.t(), node_id :: String.t(), removed_nodes_ids :: [String.t()], edits_count :: integer() ) :: remove_node() def remove_node(action_id, node_id, removed_nodes_ids, edits_count) do %{ status: :ok, action: :remove_node, action_id: action_id, node_id: node_id, removed_nodes_ids: removed_nodes_ids, edits_count: edits_count } end @doc false @spec remove_node_error( error :: :action_already_applied, action_id :: String.t(), node_id :: String.t(), removed_nodes_ids :: [String.t()], edits_count :: integer() ) :: remove_node_action_already_applied() def remove_node_error( :action_already_applied, action_id, node_id, removed_nodes_ids, edits_count ) do %{ action: :remove_node, status: :error, error: :action_already_applied, action_id: action_id, node_id: node_id, removed_nodes_ids: removed_nodes_ids, edits_count: edits_count } end @doc false @spec remove_node_error( error :: :node_not_found, action_id :: String.t(), node_id :: String.t(), edits_count :: integer() ) :: remove_node_node_not_found() def remove_node_error(:node_not_found, action_id, node_id, edits_count) do %{ action: :remove_node, status: :error, error: :node_not_found, action_id: action_id, node_id: node_id, edits_count: edits_count } end @doc false @spec update_properties( action_id :: String.t(), node_id :: String.t(), properties :: map(), edits_count :: integer() ) :: update_properties() def update_properties(action_id, node_id, properties, edits_count) do %{ status: :ok, action: :update_properties, action_id: action_id, node_id: node_id, properties: properties, edits_count: edits_count } end @doc false @spec update_properties_error( error :: :action_already_applied, action_id :: String.t(), node_id :: String.t(), properties :: map(), edits_count :: integer() ) :: update_properties_action_already_applied() def update_properties_error( :action_already_applied, action_id, node_id, properties, edits_count ) do %{ action: :update_properties, status: :error, error: :action_already_applied, action_id: action_id, node_id: node_id, properties: properties, edits_count: edits_count } end @doc false @spec update_properties_error( error :: :cannot_move_under_itself, action_id :: String.t(), node_id :: String.t(), properties :: map(), edits_count :: integer() ) :: update_properties_cannot_move_under_itself() def update_properties_error( :cannot_move_under_itself, action_id, node_id, properties, edits_count ) do %{ action: :update_properties, status: :error, error: :cannot_move_under_itself, action_id: action_id, node_id: node_id, properties: properties, edits_count: edits_count } end @doc false @spec update_properties_error( error :: :node_not_found, action_id :: String.t(), node_id :: String.t(), edits_count :: integer() ) :: update_properties_node_not_found() def update_properties_error(:node_not_found, action_id, node_id, edits_count) do %{ status: :error, action: :update_properties, action_id: action_id, error: :node_not_found, node_id: node_id, edits_count: edits_count } end end
Here is doctor.explain output:
$ mix doctor.explain MultiplayerBackend.Ack (06-22 17:47) Doctor file found. Loading configuration. Function @doc @spec --------------------------------------- update_properties_error/4 ✓ ✓ update_properties_error/5 ✓ ✓ update_properties/4 ✓ ✓ remove_node_error/4 ✓ ✓ remove_node_error/5 ✓ ✓ remove_node/4 ✓ ✓ add_node_error/4 ✓ ✓ add_node_error/5 ✓ ✓ add_node/3 ✓ ✓ forbidden/2 ✓ ✓ invalid_payload/1 ✓ ✓ Module Results: Doc Coverage: 90.9% --> Your config has a 'min_module_doc_coverage' value of 100 Spec Coverage: 100.0% Has Module Doc: ✓ Has Struct Spec: N/A
The following module is reported as missing a docstring in one of its functions:
Here is doctor.explain output: