diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3608e4f..cf99f66 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -50,5 +50,8 @@ jobs: - run: mix compile --warnings-as-errors if: ${{ matrix.lint }} + - run: mix credo --strict + if: ${{ matrix.lint }} + - name: Run mix test run: mix test diff --git a/lib/dsmr/telegram.ex b/lib/dsmr/telegram.ex index f3fbf57..023a807 100644 --- a/lib/dsmr/telegram.ex +++ b/lib/dsmr/telegram.ex @@ -1,4 +1,6 @@ defmodule DSMR.Telegram do + @moduledoc false + @type t() :: %__MODULE__{ header: DSMR.Telegram.Header.t(), checksum: DSMR.Telegram.Checksum.t(), @@ -8,6 +10,8 @@ defmodule DSMR.Telegram do defstruct header: nil, checksum: nil, data: [] defmodule OBIS do + @moduledoc false + @type t() :: %__MODULE__{ code: String.t(), medium: atom(), @@ -73,6 +77,8 @@ defmodule DSMR.Telegram do end defmodule Value do + @moduledoc false + @type t() :: %__MODULE__{ value: integer() | float() | String.t(), raw: String.t(), @@ -91,6 +97,8 @@ defmodule DSMR.Telegram do end defmodule COSEM do + @moduledoc false + @type t() :: %__MODULE__{obis: OBIS.t(), values: [Value.t()]} defstruct obis: nil, values: [] @@ -104,6 +112,8 @@ defmodule DSMR.Telegram do end defmodule MBus do + @moduledoc false + @type t() :: %__MODULE__{channel: integer(), data: [DSMR.Telegram.COSEM.t()]} defstruct channel: nil, data: [] @@ -114,6 +124,8 @@ defmodule DSMR.Telegram do end defmodule Header do + @moduledoc false + @type t() :: %__MODULE__{manufacturer: String.t(), model: String.t()} defstruct manufacturer: nil, model: nil @@ -124,6 +136,8 @@ defmodule DSMR.Telegram do end defmodule Checksum do + @moduledoc false + @type t() :: %__MODULE__{value: String.t()} defstruct value: nil diff --git a/mix.exs b/mix.exs index 121db42..77d2dfe 100644 --- a/mix.exs +++ b/mix.exs @@ -27,6 +27,7 @@ defmodule DSMR.MixProject do defp deps do [ + {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:ex_doc, "~> 0.15", only: [:dev, :test], runtime: false}, {:nimble_parsec, "~> 1.1"}, {:timex, "~> 3.6.4"} diff --git a/mix.lock b/mix.lock index 8d08ef7..bd77b12 100644 --- a/mix.lock +++ b/mix.lock @@ -1,11 +1,15 @@ %{ + "bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"}, "certifi": {:hex, :certifi, "2.9.0", "6f2a475689dd47f19fb74334859d460a2dc4e3252a3324bd2111b8f0429e7e21", [:rebar3], [], "hexpm", "266da46bdb06d6c6d35fde799bcb28d36d985d424ad7c08b5bb48f5b5cdd4641"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, + "credo": {:hex, :credo, "1.7.0", "6119bee47272e85995598ee04f2ebbed3e947678dee048d10b5feca139435f75", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "6839fcf63d1f0d1c0f450abc8564a57c43d644077ab96f2934563e68b8a769d7"}, "earmark_parser": {:hex, :earmark_parser, "1.4.26", "f4291134583f373c7d8755566122908eb9662df4c4b63caa66a0eabe06569b0a", [:mix], [], "hexpm", "48d460899f8a0c52c5470676611c01f64f3337bad0b26ddab43648428d94aabc"}, "ex_doc": {:hex, :ex_doc, "0.28.5", "3e52a6d2130ce74d096859e477b97080c156d0926701c13870a4e1f752363279", [:mix], [{:earmark_parser, "~> 1.4.19", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "d2c4b07133113e9aa3e9ba27efb9088ba900e9e51caa383919676afdf09ab181"}, + "file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"}, "gettext": {:hex, :gettext, "0.20.0", "75ad71de05f2ef56991dbae224d35c68b098dd0e26918def5bb45591d5c8d429", [:mix], [], "hexpm", "1c03b177435e93a47441d7f681a7040bd2a816ece9e2666d1c9001035121eb3d"}, "hackney": {:hex, :hackney, "1.18.1", "f48bf88f521f2a229fc7bae88cf4f85adc9cd9bcf23b5dc8eb6a1788c662c4f6", [:rebar3], [{:certifi, "~>2.9.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a4ecdaff44297e9b5894ae499e9a070ea1888c84afdd1fd9b7b2bc384950128e"}, "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"}, + "jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"}, "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"}, "makeup_elixir": {:hex, :makeup_elixir, "0.16.0", "f8c570a0d33f8039513fbccaf7108c5d750f47d8defd44088371191b76492b0b", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "28b2cbdc13960a46ae9a8858c4bebdec3c9a6d7b4b9e7f4ed1502f8159f338e7"}, "makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"}, diff --git a/test/dsmr_test.exs b/test/dsmr_test.exs index a82b984..23a3698 100644 --- a/test/dsmr_test.exs +++ b/test/dsmr_test.exs @@ -41,7 +41,7 @@ defmodule DSMRTest do end end - defp telegram_v2_2() do + defp telegram_v2_2 do Enum.join([ "/ISk5\\2MT382-1004\r\n", "\r\n", @@ -66,7 +66,7 @@ defmodule DSMRTest do ]) end - defp telegram_v3_0() do + defp telegram_v3_0 do Enum.join([ "/ISk5\\2MT382-1000\r\n", "\r\n", @@ -93,7 +93,7 @@ defmodule DSMRTest do ]) end - defp telegram_v4_2() do + defp telegram_v4_2 do Enum.join([ "/KFM5KAIFA-METER\r\n", "\r\n", @@ -135,7 +135,7 @@ defmodule DSMRTest do ]) end - defp telegram_v5_0() do + defp telegram_v5_0 do Enum.join( [ "/ISk5\\2MT382-1000\r\n",