Resolving Hex dependencies... Resolution completed in 0.248s Unchanged: arke 0.6.0 arke_auth 0.4.4 arke_postgres 0.5.0 arke_server 0.5.0 bcrypt_elixir 1.1.1 calendar 1.0.0 castore 1.0.18 certifi 2.15.0 circular_buffer 1.0.0 combine 0.10.0 comeonin 4.1.2 corsica 1.3.0 cowboy 2.14.2 cowboy_telemetry 0.4.0 cowlib 2.16.0 db_connection 2.9.0 decimal 2.3.0 ecto 3.11.2 ecto_sql 3.11.3 elixir_make 0.9.0 erlsom 1.5.2 expo 1.1.1 finch 0.21.0 gettext 0.26.2 google_api_storage 0.34.0 google_gax 0.4.1 goth 1.3.1 guardian 2.2.4 hackney 1.25.0 hpax 1.0.3 httpoison 2.3.0 idna 6.1.1 interactive_cmd 0.1.4 jason 1.4.4 jose 1.11.12 libcluster 3.5.0 metrics 1.0.1 mime 1.6.0 mimerl 1.5.0 mint 1.7.1 nerves 1.14.0 nerves_discovery 0.1.2 nerves_logging 0.2.4 nerves_runtime 0.13.12 nerves_system_bbb 2.29.3 nerves_system_br 1.33.5 nerves_system_grisp2 0.17.3 nerves_system_mangopi_mq_pro 0.15.3 nerves_system_osd32mp1 0.24.3 nerves_system_qemu_aarch64 0.3.3 nerves_system_rpi 2.0.2 nerves_system_rpi0 2.0.2 nerves_system_rpi0_2 2.0.2 nerves_system_rpi2 2.0.2 nerves_system_rpi3 2.0.2 nerves_system_rpi4 2.0.2 nerves_system_rpi5 2.0.2 nerves_system_x86_64 1.33.3 nerves_toolchain_aarch64_nerves_linux_gnu 13.2.0 nerves_toolchain_armv6_nerves_linux_gnueabihf 13.2.0 nerves_toolchain_armv7_nerves_linux_gnueabihf 13.2.0 nerves_toolchain_ctng 1.10.0 nerves_toolchain_riscv64_nerves_linux_gnu 13.2.0 nerves_toolchain_x86_64_nerves_linux_musl 13.2.0 nerves_uevent 0.1.5 nimble_options 1.1.1 nimble_pool 1.1.0 open_api_spex 3.22.2 parse_trans 3.4.1 phoenix 1.7.21 phoenix_pubsub 2.2.0 phoenix_template 1.0.4 plug 1.19.1 plug_cowboy 2.8.0 plug_crypto 2.1.1 poison 4.0.1 postgrex 0.22.0 property_table 0.3.3 ranch 2.2.0 ring_logger 0.11.5 shoehorn 0.9.3 ssl_verify_fun 1.1.7 swoosh 1.25.0 tablet 0.3.2 telemetry 1.4.1 telemetry_metrics 0.6.2 telemetry_poller 1.3.0 tesla 1.17.0 timex 3.7.13 toolshed 0.4.2 typed_struct 0.2.1 tzdata 1.1.3 uboot_env 1.0.2 unicode_util_compat 0.7.1 uuid 1.1.8 websock 0.5.3 websock_adapter 0.5.9 xlsxir 1.6.4 All dependencies have been fetched ==> tablet Compiling 2 files (.ex) Generated tablet app ==> elixir_make Compiling 8 files (.ex) Generated elixir_make app ==> nerves_discovery Compiling 5 files (.ex) Generated nerves_discovery app ==> decimal Compiling 4 files (.ex) Generated decimal app ==> jason Compiling 10 files (.ex) Generated jason app ==> interactive_cmd Compiling 1 file (.ex) Generated interactive_cmd app ==> nerves HOST_CC port.o HOST_LD port Compiling 51 files (.ex) Generated nerves app ==> nerves_compatibility_test Nerves environment MIX_TARGET: rpi4 MIX_ENV: prod Checking for prebuilt Nerves artifacts... Found nerves_toolchain_aarch64_nerves_linux_gnu in cache /home/nerves/.nerves/artifacts/nerves_toolchain_aarch64_nerves_linux_gnu-linux_aarch64-13.2.0 Found nerves_system_rpi4 in cache /home/nerves/.nerves/artifacts/nerves_system_rpi4-portable-2.0.2 ==> nerves ==> nerves_toolchain_ctng Compiling 1 file (.ex) Generated nerves_toolchain_ctng app ==> nerves_toolchain_aarch64_nerves_linux_gnu Generated nerves_toolchain_aarch64_nerves_linux_gnu app ==> nerves_system_br Generated nerves_system_br app ==> nerves_system_rpi4 Generated nerves_system_rpi4 app ==> nerves_compatibility_test Nerves environment MIX_TARGET: rpi4 MIX_ENV: prod ==> typed_struct Compiling 2 files (.ex) Generated typed_struct app ==> combine Compiling 6 files (.ex) Generated combine app ==> mime Compiling 2 files (.ex) Generated mime app ==> circular_buffer Compiling 1 file (.ex) Generated circular_buffer app ==> nimble_options Compiling 3 files (.ex) Generated nimble_options app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling erlsom ==> poison Compiling 4 files (.ex) warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 127 │ for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do │ ~ │ └─ lib/poison/encoder.ex:127:31 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 127 │ for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do │ ~ │ └─ lib/poison/encoder.ex:127:48 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 174 │ when char <= 0x1F or char in '"\\' do │ ~ │ └─ lib/poison/encoder.ex:174:37 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 94 │ when char in '-0123456789' do │ ~ │ └─ lib/poison/parser.ex:94:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 189 │ when char in '123456789' do │ ~ │ └─ lib/poison/parser.ex:189:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 205 │ defp number_exp(<> <> rest, frac, pos, acc) when e in 'eE' do │ ~ │ └─ lib/poison/parser.ex:205:60 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 238 │ when char in '0123456789' do │ ~ │ └─ lib/poison/parser.ex:238:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 246 │ defp number_digits_count(<> <> rest, acc) when char in '0123456789' do │ ~ │ └─ lib/poison/parser.ex:246:64 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 270 │ for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do │ ~ │ └─ lib/poison/parser.ex:270:31 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 270 │ for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do │ ~ │ └─ lib/poison/parser.ex:270:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 277 │ when a1 in 'dD' and a2 in 'dD' and b1 in '89abAB' and │ ~ │ └─ lib/poison/parser.ex:277:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 277 │ when a1 in 'dD' and a2 in 'dD' and b1 in '89abAB' and │ ~ │ └─ lib/poison/parser.ex:277:39 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 277 │ when a1 in 'dD' and a2 in 'dD' and b1 in '89abAB' and │ ~ │ └─ lib/poison/parser.ex:277:54 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 334 │ defp skip_whitespace(<> <> rest, pos) when char in '\s\n\t\r' do │ ~ │ └─ lib/poison/parser.ex:334:60 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead │ 42 │ if Application.get_env(:poison, :native) do │ ~ │ └─ lib/poison/parser.ex:42:18: Poison.Parser (module) warning: use Bitwise is deprecated. import Bitwise instead │ 46 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/poison/parser.ex:46: Poison.Parser (module) warning: use Bitwise is deprecated. import Bitwise instead │ 117 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/poison/encoder.ex:117: Poison.Encoder.BitString (module) Generated poison app ==> plug_crypto Compiling 5 files (.ex) Generated plug_crypto app ==> hpax Compiling 4 files (.ex) Generated hpax app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling mimerl ==> jose Compiling 113 files (.erl) Compiling 8 files (.ex) Generated jose app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling ranch ==> ssl_verify_fun Compiling 7 files (.erl) Generated ssl_verify_fun app ==> nerves_logging CC kmsg_tailer.o LD kmsg_tailer Compiling 5 files (.ex) Generated nerves_logging app ==> castore Compiling 1 file (.ex) Generated castore app ==> mint Compiling 1 file (.erl) Compiling 20 files (.ex) Generated mint app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling cowlib ==> bcrypt_elixir make: Nothing to be done for 'all'. Compiling 3 files (.ex) warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 57 │ path = :filename.join(:code.priv_dir(:bcrypt_elixir), 'bcrypt_nif') │ ~ │ └─ lib/bcrypt/base.ex:57:59 warning: use Bitwise is deprecated. import Bitwise instead │ 6 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/bcrypt/base.ex:6: Bcrypt.Base (module) Generated bcrypt_elixir app ==> comeonin Compiling 2 files (.ex) Generated comeonin app ==> xlsxir Compiling 14 files (.ex) warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 502 │ "#{column_from_index(col_index + 1, '')}#{line}" │ ~ │ └─ lib/xlsxir.ex:502:41 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 20 │ def from_charlist('0'), do: {0, 0, 0} │ ~ │ └─ lib/xlsxir/convert_datetime.ex:20:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 25 │ def sax_event_handler({:startElement,_,'si',_,_}, %__MODULE__{tid: tid, index: index}), do: %__MODULE__{tid: tid, index: index} │ ~ │ └─ lib/xlsxir/parse_string.ex:25:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 27 │ def sax_event_handler({:startElement,_,'family',_,_}, state) do │ ~ │ └─ lib/xlsxir/parse_string.ex:27:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 37 │ def sax_event_handler({:endElement,_,'si',_}, │ ~ │ └─ lib/xlsxir/parse_string.ex:37:40 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 56 │ def sax_event_handler({:startElement, _, 'cellXfs', _, _}, state) do │ ~ │ └─ lib/xlsxir/parse_style.ex:56:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 60 │ def sax_event_handler({:endElement, _, 'cellXfs', _}, state) do │ ~ │ └─ lib/xlsxir/parse_style.ex:60:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 65 │ {:startElement, _, 'xf', _, xml_attr}, │ ~ │ └─ lib/xlsxir/parse_style.ex:65:28 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 72 │ {:attribute, 'numFmtId', _, _, _} -> true │ ~ │ └─ lib/xlsxir/parse_style.ex:72:26 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 84 │ {:startElement, _, 'numFmt', _, xml_attr}, │ ~ │ └─ lib/xlsxir/parse_style.ex:84:28 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 90 │ {:attribute, 'numFmtId', _, _, id} -> Map.put(acc, :id, id) │ ~ │ └─ lib/xlsxir/parse_style.ex:90:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 91 │ {:attribute, 'formatCode', _, _, cd} -> Map.put(acc, :cd, cd) │ ~ │ └─ lib/xlsxir/parse_style.ex:91:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 109 │ i when i in @date -> :ets.insert(tid, {index + acc, 'd'}) │ ~ │ └─ lib/xlsxir/parse_style.ex:109:63 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 126 │ String.match?(to_string(v), ~r/[dhmsy]/i) -> Map.put_new(acc, k, 'd') │ ~ │ └─ lib/xlsxir/parse_style.ex:126:74 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 15 │ def sax_event_handler({:startElement, _, 'sheet', _, xml_attrs}, state) do │ ~ │ └─ lib/xlsxir/parse_workbook.ex:15:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 19 │ {:attribute, 'name', _, _, name} -> │ ~ │ └─ lib/xlsxir/parse_workbook.ex:19:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 22 │ {:attribute, 'sheetId', _, _, sheet_id} -> │ ~ │ └─ lib/xlsxir/parse_workbook.ex:22:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 26 │ {:attribute, 'id', _, _, rid} -> │ ~ │ └─ lib/xlsxir/parse_workbook.ex:26:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 58 │ {:startElement, _, 'row', _, _}, │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:58:28 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 66 │ def sax_event_handler({:startElement, _, 'c', _, xml_attr}, state, %{styles: styles_tid}, _) do │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:66:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 70 │ {:attribute, 'r', _, _, ref} -> {:r, ref} │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:70:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 71 │ {:attribute, 's', _, _, style} -> {:s, find_styles(styles_tid, List.to_integer(style))} │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:71:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 72 │ {:attribute, 't', _, _, type} -> {:t, type} │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:72:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 89 │ def sax_event_handler({:startElement, _, 'f', _, _}, state, _, _) do │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:89:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 93 │ def sax_event_handler({:startElement, _, 'v', _, _}, state, _, _) do │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:93:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 105 │ def sax_event_handler({:endElement, _, 'c', _}, %__MODULE__{row: row} = state, excel, _) do │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:105:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 120 │ {:endElement, _, 'row', _}, │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:120:26 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 146 │ ['e', _, e] -> List.to_string(e) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:146:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 148 │ ['s', _, i] -> find_string(strings_tid, List.to_integer(i)) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:148:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 151 │ ['n', nil, n] -> convert_char_number(n) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:151:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 153 │ [nil, 'd', d] -> convert_date_or_time(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:153:13 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 154 │ ['n', 'd', d] -> convert_date_or_time(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:154:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 154 │ ['n', 'd', d] -> convert_date_or_time(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:154:13 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 155 │ ['d', 'd', d] -> convert_iso_date(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:155:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 155 │ ['d', 'd', d] -> convert_iso_date(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:155:13 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 157 │ ['str', _, s] -> List.to_string(s) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:157:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 159 │ ['b', _, s] -> s == '1' │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:159:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 159 │ ['b', _, s] -> s == '1' │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:159:27 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 161 │ ['inlineStr', _, s] -> List.to_string(s) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:161:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 37 │ def sax_event_handler({:endElement, _, 'row', _}, state, _excel) do │ ~ │ └─ lib/xlsxir/stream_worksheet.ex:37:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 104 │ sheet = 'xl/worksheets/sheet#{index + 1}.xml' │ ~ │ └─ lib/xlsxir/unzip.ex:104:15 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 218 │ |> Enum.map(fn worksheet_index -> 'xl/worksheets/sheet#{worksheet_index + 1}.xml' end) │ ~ │ └─ lib/xlsxir/xlsx_file.ex:218:39 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 219 │ |> Enum.concat(['xl/styles.xml', 'xl/sharedStrings.xml', 'xl/workbook.xml']) │ ~ │ └─ lib/xlsxir/xlsx_file.ex:219:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 219 │ |> Enum.concat(['xl/styles.xml', 'xl/sharedStrings.xml', 'xl/workbook.xml']) │ ~ │ └─ lib/xlsxir/xlsx_file.ex:219:38 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 219 │ |> Enum.concat(['xl/styles.xml', 'xl/sharedStrings.xml', 'xl/workbook.xml']) │ ~ │ └─ lib/xlsxir/xlsx_file.ex:219:62 warning: a struct for Xlsxir.ParseWorkbook is expected on struct update: %Xlsxir.ParseWorkbook{state | sheets: [sheet | state.sheets]} but got type: dynamic() where "state" was given the type: # type: dynamic() # from: lib/xlsxir/parse_workbook.ex:15:68 state when defining the variable "state", you must also pattern match on "%Xlsxir.ParseWorkbook{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 36 │ %__MODULE__{state | sheets: [sheet | state.sheets]} │ ~ │ └─ lib/xlsxir/parse_workbook.ex:36:5: Xlsxir.ParseWorkbook.sax_event_handler/2 warning: Supervisor.Spec.worker/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead │ 10 │ worker(Xlsxir.StateManager, []) │ ~ │ └─ lib/xlsxir.ex:10:7: Xlsxir.start/2 Generated xlsxir app ==> ring_logger Compiling 7 files (.ex) Generated ring_logger app ==> shoehorn Compiling 8 files (.ex) Generated shoehorn app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling unicode_util_compat ===> Analyzing applications... ===> Compiling idna ==> phoenix_template Compiling 4 files (.ex) Generated phoenix_template app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling telemetry ==> telemetry_metrics Compiling 7 files (.ex) Generated telemetry_metrics app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling telemetry_poller ==> db_connection Compiling 18 files (.ex) Generated db_connection app ==> ecto Compiling 56 files (.ex) warning: fun/1 is not valid in typespecs. Either specify fun() or use (... -> return) instead │ 297 │ @spec insert( │ ~~~~~~~~~~~~~ │ └─ lib/ecto/multi.ex:297: Ecto.Multi (module) warning: fun/1 is not valid in typespecs. Either specify fun() or use (... -> return) instead │ 338 │ @spec update(t, name, Changeset.t() | fun(Changeset.t()), Keyword.t()) :: t │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/ecto/multi.ex:338: Ecto.Multi (module) warning: fun/1 is not valid in typespecs. Either specify fun() or use (... -> return) instead │ 371 │ @spec insert_or_update(t, name, Changeset.t() | fun(Changeset.t()), Keyword.t()) :: t │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/ecto/multi.ex:371: Ecto.Multi (module) warning: fun/1 is not valid in typespecs. Either specify fun() or use (... -> return) instead │ 417 │ @spec delete( │ ~~~~~~~~~~~~~ │ └─ lib/ecto/multi.ex:417: Ecto.Multi (module) warning: fun/1 is not valid in typespecs. Either specify fun() or use (... -> return) instead │ 451 │ @spec one( │ ~~~~~~~~~~ │ └─ lib/ecto/multi.ex:451: Ecto.Multi (module) warning: fun/1 is not valid in typespecs. Either specify fun() or use (... -> return) instead │ 482 │ @spec all( │ ~~~~~~~~~~ │ └─ lib/ecto/multi.ex:482: Ecto.Multi (module) warning: fun/1 is not valid in typespecs. Either specify fun() or use (... -> return) instead │ 513 │ @spec exists?( │ ~~~~~~~~~~~~~~ │ └─ lib/ecto/multi.ex:513: Ecto.Multi (module) warning: fun/1 is not valid in typespecs. Either specify fun() or use (... -> return) instead │ 623 │ @spec insert_all( │ ~~~~~~~~~~~~~~~~~ │ └─ lib/ecto/multi.ex:623: Ecto.Multi (module) warning: fun/1 is not valid in typespecs. Either specify fun() or use (... -> return) instead │ 667 │ @spec update_all( │ ~~~~~~~~~~~~~~~~~ │ └─ lib/ecto/multi.ex:667: Ecto.Multi (module) warning: fun/1 is not valid in typespecs. Either specify fun() or use (... -> return) instead │ 712 │ @spec delete_all(t, name, Ecto.Queryable.t() | fun(Ecto.Queryable.t()), Keyword.t()) :: t │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/ecto/multi.ex:712: Ecto.Multi (module) Generated ecto app ==> libcluster Compiling 13 files (.ex) Generated libcluster app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling cowboy ==> expo Compiling 2 files (.erl) Compiling 22 files (.ex) Generated expo app ==> gettext Compiling 18 files (.ex) Generated gettext app ==> phoenix_pubsub Compiling 12 files (.ex) Generated phoenix_pubsub app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling certifi ==> plug Compiling 1 file (.erl) Compiling 42 files (.ex) Generated plug app ==> guardian Compiling 25 files (.ex) warning: use Bitwise is deprecated. import Bitwise instead │ 7 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/guardian/permissions/atom_encoding.ex:7: Guardian.Permissions.AtomEncoding (module) warning: use Bitwise is deprecated. import Bitwise instead │ 7 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/guardian/permissions/bitwise_encoding.ex:7: Guardian.Permissions.BitwiseEncoding (module) warning: use Bitwise is deprecated. import Bitwise instead │ 7 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/guardian/permissions/text_encoding.ex:7: Guardian.Permissions.TextEncoding (module) Generated guardian app ==> open_api_spex Compiling 80 files (.ex) Generated open_api_spex app ==> postgrex Compiling 69 files (.ex) Generated postgrex app ==> ecto_sql Compiling 25 files (.ex) warning: List.zip/1 is deprecated. Use Enum.zip/1 instead │ 681 │ |> List.zip() │ ~ │ └─ lib/ecto/adapters/sql.ex:681:15: Ecto.Adapters.SQL.format_table/1 └─ lib/ecto/adapters/sql.ex:712:15: Ecto.Adapters.SQL.cells/2 Generated ecto_sql app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling parse_trans ==> uboot_env Compiling 5 files (.ex) Generated uboot_env app ==> nimble_pool Compiling 2 files (.ex) Generated nimble_pool app ==> finch Compiling 14 files (.ex) Generated finch app ==> goth Compiling 7 files (.ex) warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 234 │ Logger.warn("Setting http_client: mod | {mod, opts} is deprecated in favour of http_client: fun | {fun, opts}") │ ~ │ └─ lib/goth.ex:234:12: Goth.start_http_client/1 Generated goth app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling metrics ===> Analyzing applications... ===> Compiling hackney ==> tzdata Compiling 17 files (.ex) Generated tzdata app ==> calendar Compiling 18 files (.ex) warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 149 │ defp string_for_conv_spec(dt, :l, _) do dt=to_time(dt);"#{dt.hour|>x24h_to_12_h|>elem(0)}"|>pad(2, hd ' ') end │ ~ │ └─ lib/calendar/strftime.ex:149:105 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 158 │ defp string_for_conv_spec(dt, :e, _) do dt=to_date(dt);"#{dt.day}"|>pad(2, hd ' ') end │ ~ │ └─ lib/calendar/strftime.ex:158:81 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 161 │ defp string_for_conv_spec(dt, :k, _) do dt=to_time(dt);"#{dt.hour}"|>pad(2, hd ' ') end │ ~ │ └─ lib/calendar/strftime.ex:161:82 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords. This error happens when you have function calls without parentheses inside keywords. For example: function(arg, one: nested_call a, b, c) function(arg, one: if expr, do: :this, else: :that) In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses: function(arg, one: if(expr, do: :this, else: :that)) function(arg, one: nested_call(a, b, c)) Ambiguity found at: │ 167 │ defp string_for_conv_spec(dt, :x, lang), do: strftime! dt, date_format_for_lang(lang), lang │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/calendar/strftime.ex:167 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords. This error happens when you have function calls without parentheses inside keywords. For example: function(arg, one: nested_call a, b, c) function(arg, one: if expr, do: :this, else: :that) In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses: function(arg, one: if(expr, do: :this, else: :that)) function(arg, one: nested_call(a, b, c)) Ambiguity found at: │ 168 │ defp string_for_conv_spec(dt, :X, lang), do: strftime! dt, time_format_for_lang(lang), lang │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/calendar/strftime.ex:168 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords. This error happens when you have function calls without parentheses inside keywords. For example: function(arg, one: nested_call a, b, c) function(arg, one: if expr, do: :this, else: :that) In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses: function(arg, one: if(expr, do: :this, else: :that)) function(arg, one: nested_call(a, b, c)) Ambiguity found at: │ 169 │ defp string_for_conv_spec(dt, :c, lang), do: strftime! dt, date_time_format_for_lang(lang), lang │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/calendar/strftime.ex:169 warning: a struct for DateTime is expected on struct update: %DateTime{second_before | second: 60} but got type: dynamic() where "second_before" was given the type: # type: dynamic() # from: lib/calendar/date_time.ex:92:19 second_before = shift_zone!( %DateTime{...}, timezone ) when defining the variable "second_before", you must also pattern match on "%DateTime{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 94 │ %DateTime{second_before | second: 60} │ ~ │ └─ lib/calendar/date_time.ex:94:5: Calendar.DateTime.shift_zone!/2 warning: a struct for DateTime is expected on struct update: %DateTime{result | microsecond: {elem(result.microsecond, 0), 3}} but got type: dynamic() where "result" was given the type: # type: dynamic() # from: lib/calendar/date_time/parse.ex:177:12 result = unix!(millisec / 1000.0) when defining the variable "result", you must also pattern match on "%DateTime{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 178 │ %DateTime{result| microsecond: {elem(result.microsecond, 0), 3}} # change usec precision to 3 │ ~ │ └─ lib/calendar/date_time/parse.ex:178:5: Calendar.DateTime.Parse.js_ms!/1 Generated calendar app ==> timex Compiling 62 files (.ex) warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | std_abbr: abbr} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:119:33 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 121 │ parse_tz(:std_offset, rest, %TZ{rule | std_abbr: abbr}) │ ~ │ └─ lib/parse/posix/parser.ex:121:35: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | std_offset: offset} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:125:35 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 127 │ parse_tz(:dst_abbr, rest, %TZ{rule | std_offset: offset}) │ ~ │ └─ lib/parse/posix/parser.ex:127:33: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | dst_abbr: abbr} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:141:33 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 143 │ rule = %TZ{rule | dst_abbr: abbr} do │ ~ │ └─ lib/parse/posix/parser.ex:143:17: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | dst_offset: offset} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:160:35 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 162 │ rule = %TZ{rule | dst_offset: offset} do │ ~ │ └─ lib/parse/posix/parser.ex:162:17: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | dst_start: dst_start, dst_end: dst_end} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:185:36 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 190 │ {:ok, %TZ{rule | dst_start: dst_start, dst_end: dst_end}, rest} │ ~ │ └─ lib/parse/posix/parser.ex:190:17: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | transitions: transitions, leaps: leaps} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:156:28 {:ok, zone, rest} <- parse_content(1, data, %Timex.Parse.ZoneInfo.Parser.Zone{..., version: 1}) when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 159 │ {:ok, %Zone{zone | transitions: transitions, leaps: leaps}, rest} │ ~ │ └─ lib/parse/zoneinfo/parser.ex:159:13: Timex.Parse.ZoneInfo.Parser.parse_versioned_content/2 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | transitions: times} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:270:92 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 272 │ parse_transition_info(version, rest, header, %Zone{zone | transitions: times}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:272:50: Timex.Parse.ZoneInfo.Parser.parse_transition_times/4 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | leaps: leaps} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:330:79 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 344 │ parse_flags(version, rest, header, %Zone{zone | leaps: leaps}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:344:40: Timex.Parse.ZoneInfo.Parser.parse_leap_seconds/4 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | transitions: transitions} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:348:90 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 362 │ parse_posixtz_string(version, rest, %Zone{zone | transitions: transitions}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:362:43: Timex.Parse.ZoneInfo.Parser.parse_flags/4 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | transitions: transitions} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:348:90 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 364 │ {:ok, %Zone{zone | transitions: transitions}, rest} │ ~ │ └─ lib/parse/zoneinfo/parser.ex:364:13: Timex.Parse.ZoneInfo.Parser.parse_flags/4 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | rule: rule} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:369:62 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 372 │ {:ok, %Zone{zone | rule: rule}, format_rest <> rest} │ ~ │ └─ lib/parse/zoneinfo/parser.ex:372:13: Timex.Parse.ZoneInfo.Parser.parse_posixtz_string/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | std_abbr: abbr, dst_abbr: abbr} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:383:33 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 385 │ parse_tz(:std_offset, rest, %Rule{rule | std_abbr: abbr, dst_abbr: abbr}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:385:35: Timex.Parse.ZoneInfo.Parser.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | std_offset: offset, dst_offset: offset} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:389:35 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 391 │ parse_tz(:dst_abbr, rest, %Rule{rule | std_offset: offset, dst_offset: offset}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:391:33: Timex.Parse.ZoneInfo.Parser.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | dst_abbr: abbr} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:405:33 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 407 │ rule = %Rule{rule | dst_abbr: abbr} do │ ~ │ └─ lib/parse/zoneinfo/parser.ex:407:17: Timex.Parse.ZoneInfo.Parser.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | dst_offset: offset} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:424:35 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 426 │ rule = %Rule{rule | dst_offset: offset} do │ ~ │ └─ lib/parse/zoneinfo/parser.ex:426:17: Timex.Parse.ZoneInfo.Parser.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | start_time: start_time, end_time: end_time} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:449:36 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 454 │ {:ok, %Rule{rule | start_time: start_time, end_time: end_time}, rest} │ ~ │ └─ lib/parse/zoneinfo/parser.ex:454:17: Timex.Parse.ZoneInfo.Parser.parse_tz/3 Generated timex app ==> tesla Compiling 41 files (.ex) Generated tesla app ==> google_gax Compiling 5 files (.ex) Generated google_gax app ==> google_api_storage Compiling 54 files (.ex) warning: `use Tesla.Builder` and `use Tesla` in GoogleApi.Storage.V1.Connection are soft-deprecated. It will be removed in future major version in favor of Runtime Configuration instead. Please share your feedback at https://github.com/elixir-tesla/tesla/discussions/732 If you can turn off this warning, add the following to your config.exs: ```elixir config :tesla, disable_deprecated_builder_warning: true ``` (tesla 1.17.0) lib/tesla/builder.ex:12: Tesla.Builder."MACRO-__using__"/2 (elixir 1.19.4) src/elixir_dispatch.erl:257: :elixir_dispatch.expand_macro_fun/7 (elixir 1.19.4) src/elixir_dispatch.erl:149: :elixir_dispatch.dispatch_require/7 (elixir 1.19.4) src/elixir_expand.erl:636: :elixir_expand.expand_block/5 (elixir 1.19.4) src/elixir_expand.erl:52: :elixir_expand.expand/3 (elixir 1.19.4) src/elixir_dispatch.erl:271: :elixir_dispatch.expand_quoted/7 Generated google_api_storage app ==> property_table Compiling 8 files (.ex) Generated property_table app ==> nerves_uevent CC uevent.o LD uevent Compiling 5 files (.ex) Generated nerves_uevent app ==> nerves_runtime Compiling 14 files (.ex) Generated nerves_runtime app ==> toolshed Compiling 5 files (.ex) Generated toolshed app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling cowboy_telemetry ==> plug_cowboy Compiling 5 files (.ex) Generated plug_cowboy app ==> swoosh Compiling 59 files (.ex) Generated swoosh app ==> websock Compiling 1 file (.ex) Generated websock app ==> websock_adapter Compiling 4 files (.ex) Generated websock_adapter app ==> phoenix Compiling 71 files (.ex) warning: comparison between distinct types found: merge_all != [] given types: dynamic(non_empty_list(term(), term())) != empty_list() where "merge_all" was given the type: # type: dynamic(non_empty_list(term(), term())) # from: lib/phoenix/router/route.ex:121:15 merge_all = merge_params ++ merge_private ++ merge_assigns While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 123 │ if merge_all != [] do │ ~ │ └─ lib/phoenix/router/route.ex:123:18: Phoenix.Router.Route.build_prepare/1 warning: a struct for Plug.Conn is expected on struct update: %Plug.Conn{conn | state: :sent} but got type: dynamic() where "conn" was given the type: # type: dynamic() # from: lib/phoenix/endpoint/render_errors.ex:55:17 conn when defining the variable "conn", you must also pattern match on "%Plug.Conn{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 60 │ %Plug.Conn{conn | state: :sent} │ ~ │ └─ lib/phoenix/endpoint/render_errors.ex:60:11: Phoenix.Endpoint.RenderErrors.__catch__/5 warning: a struct for Plug.Conn is expected on struct update: %Plug.Conn{conn | query_params: %{}, params: %{}} but got type: dynamic() where "conn" was given the type: # type: dynamic() # from: lib/phoenix/endpoint/render_errors.ex:129:33 conn when defining the variable "conn", you must also pattern match on "%Plug.Conn{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 134 │ %Plug.Conn.Unfetched{} -> %Plug.Conn{conn | query_params: %{}, params: %{}} │ ~ │ └─ lib/phoenix/endpoint/render_errors.ex:134:35: Phoenix.Endpoint.RenderErrors.maybe_fetch_query_params/1 warning: a struct for Plug.Conn is expected on struct update: %Plug.Conn{conn | query_params: %{}, params: params} but got type: dynamic() where "conn" was given the type: # type: dynamic() # from: lib/phoenix/endpoint/render_errors.ex:129:33 conn when defining the variable "conn", you must also pattern match on "%Plug.Conn{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 135 │ params -> %Plug.Conn{conn | query_params: %{}, params: params} │ ~ │ └─ lib/phoenix/endpoint/render_errors.ex:135:19: Phoenix.Endpoint.RenderErrors.maybe_fetch_query_params/1 warning: a struct for Plug.Conn is expected on struct update: %Plug.Conn{conn | params: params} but got type: dynamic() where "conn" was given the type: # type: dynamic() # from: lib/phoenix/controller.ex:1326:20 conn when defining the variable "conn", you must also pattern match on "%Plug.Conn{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 1334 │ %Plug.Conn{conn | params: params} │ ~ │ └─ lib/phoenix/controller.ex:1334:5: Phoenix.Controller.scrub_params/2 Generated phoenix app ==> httpoison Compiling 3 files (.ex) Generated httpoison app ==> corsica Compiling 2 files (.ex) Generated corsica app ==> uuid Compiling 1 file (.ex) warning: use Bitwise is deprecated. import Bitwise instead │ 2 │ use Bitwise, only_operators: true │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/uuid.ex:2: UUID (module) Generated uuid app ==> arke Compiling 33 files (.ex) warning: function random_string/0 is unused │ 48 │ defp random_string() do │ ~ │ └─ lib/arke/application.ex:48:8: Arke.Application (module) warning: function postfix/0 is unused │ 44 │ defp postfix() do │ ~ │ └─ lib/arke/application.ex:44:8: Arke.Application (module) warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule Arke.Boundary.FileManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/file_manager.ex:15: Arke.Boundary.FileManager (module) warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager.handle_info/2 warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule Arke.Boundary.ParameterManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:15: Arke.Boundary.ParameterManager (module) warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager.handle_info/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:27:37: Arke.Boundary.GroupManager.before_create/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~ │ └─ lib/arke/boundary/group_manager.ex:27:27: Arke.Boundary.GroupManager.before_create/2 warning: variable "unit_metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:27:53: Arke.Boundary.GroupManager.before_create/2 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 36 │ {:error, msg} -> new_arke_list │ ~ │ └─ lib/arke/boundary/group_manager.ex:36:18: Arke.Boundary.GroupManager.get_arke_list/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 32 │ def get_arke_list(%{data: data, metadata: %{project: project}} = unit) do │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:32:68: Arke.Boundary.GroupManager.get_arke_list/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 46 │ def get_arke(%{id: id} = unit, project, arke_id), │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:46:28: Arke.Boundary.GroupManager.get_arke/3 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 49 │ def get_arke(%{id: id, metadata: %{project: project}} = unit, arke_id), │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:49:59: Arke.Boundary.GroupManager.get_arke/2 warning: clauses with the same name should be grouped together, "def get_arke/3" was previously defined (lib/arke/boundary/group_manager.ex:46) │ 52 │ def get_arke(unit_id, project, arke_id) when is_binary(arke_id), │ ~ │ └─ lib/arke/boundary/group_manager.ex:52:7 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager.handle_info/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 26 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~~~ │ └─ lib/arke/boundary/arke_manager.ex:26:37: Arke.Boundary.ArkeManager.before_create/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 26 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~ │ └─ lib/arke/boundary/arke_manager.ex:26:27: Arke.Boundary.ArkeManager.before_create/2 warning: variable "unit_metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 26 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:26:53: Arke.Boundary.ArkeManager.before_create/2 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 40 │ {:error, msg} -> new_parameters │ ~ │ └─ lib/arke/boundary/arke_manager.ex:40:18: Arke.Boundary.ArkeManager.get_parameters/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 32 │ def get_parameters(%{data: data, metadata: %{project: project}} = unit) do │ ~~~~ │ └─ lib/arke/boundary/arke_manager.ex:32:69: Arke.Boundary.ArkeManager.get_parameters/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 46 │ def get_parameter(%{id: id} = unit, project, parameter_id), │ ~~~~ │ └─ lib/arke/boundary/arke_manager.ex:46:33: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 49 │ def get_parameter(%{id: id, metadata: %{project: project}} = unit, parameter_id), │ ~~~~ │ └─ lib/arke/boundary/arke_manager.ex:49:64: Arke.Boundary.ArkeManager.get_parameter/2 warning: clauses with the same name should be grouped together, "def get_parameter/3" was previously defined (lib/arke/boundary/arke_manager.ex:46) │ 52 │ def get_parameter(unit_id, project, parameter_id) when is_binary(parameter_id), │ ~ │ └─ lib/arke/boundary/arke_manager.ex:52:7 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 57 │ {:error, msg} -> │ ~ │ └─ lib/arke/boundary/arke_manager.ex:57:16: Arke.Boundary.ArkeManager.get_parameter/3 warning: the underscored variable "__module__" is used after being set. A leading underscore indicates that the value of the variable should be ignored. If this is intended please rename the variable to remove the underscore │ 50 │ __module__: __module__, │ ~ │ └─ lib/arke/core/unit.ex:50:23: Arke.Core.Unit.new/9 warning: the underscored variable "__module__" is used after being set. A leading underscore indicates that the value of the variable should be ignored. If this is intended please rename the variable to remove the underscore │ 103 │ __module__, │ ~ │ └─ lib/arke/core/unit.ex:103:15: Arke.Core.Unit.load/3 warning: variable "parameter_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 115 │ ... id: parameter_id, │ ~ │ └─ lib/arke/core/unit.ex:115:71: Arke.Core.Unit.load_data/3 warning: variable "parameter_type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 116 │ ... arke_id: parameter_type │ ~ │ └─ lib/arke/core/unit.ex:116:76: Arke.Core.Unit.load_data/3 warning: variable "parameters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 113 │ def load_data(%{data: %{parameters: parameters}} = arke, unit_data, opts) do │ ~~~~~~~~~~ │ └─ lib/arke/core/unit.ex:113:39: Arke.Core.Unit.load_data/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 123 │ def load_parameter_value(%{id: :id} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:123:50: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 124 │ def load_parameter_value(%{id: :metadata} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:124:56: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 125 │ def load_parameter_value(%{id: :metadata} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:125:56: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 126 │ def load_parameter_value(%{id: :arke_id} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:126:55: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 127 │ def load_parameter_value(%{id: :inserted_at} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:127:59: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 128 │ def load_parameter_value(%{id: :updated_at} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:128:58: Arke.Core.Unit.load_parameter_value/3 warning: variable "parameter_type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 130 │ def load_parameter_value(%{id: parameter_id, arke_id: parameter_type} = parameter, data, opts) do │ ~~~~~~~~~~~~~~ │ └─ lib/arke/core/unit.ex:130:57: Arke.Core.Unit.load_parameter_value/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 140 │ def get_default_value(value, parameter), do: value │ ~~~~~~~~~ │ └─ lib/arke/core/unit.ex:140:32: Arke.Core.Unit.get_default_value/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 203 │ def update(%{data: data, arke_id: arke_id} = unit, args) do │ ~~~~ │ └─ lib/arke/core/unit.ex:203:22: Arke.Core.Unit.update/2 warning: variable "udata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 233 │ Map.merge(unit.data, parsed_data, fn _k, udata, pdata -> pdata end) │ ~ │ └─ lib/arke/core/unit.ex:233:46: Arke.Core.Unit.update_data/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp handle_id/1" was previously defined (lib/arke/core/unit.ex:247) │ 272 │ defp handle_id(id) when is_nil(id), do: UUID.uuid1() │ ~ │ └─ lib/arke/core/unit.ex:272:8 warning: clauses with the same name and arity (number of arguments) should be grouped together, "def encode_unit_data/2" was previously defined (lib/arke/core/unit.ex:253) │ 278 │ def encode_unit_data(arke, data) do │ ~ │ └─ lib/arke/core/unit.ex:278:7 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp update_encoded_unit_data/3" was previously defined (lib/arke/core/unit.ex:260) │ 285 │ defp update_encoded_unit_data(%{data: %{only_runtime: true}}, data, _), do: data │ ~ │ └─ lib/arke/core/unit.ex:285:8 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 336 │ def get_value(%Arke.Core.Unit{data: data} = unit, parameter_id), │ ~~~~ │ └─ lib/arke/core/unit.ex:336:47: Arke.Core.Unit.get_value/2 warning: defp parse_value/2 is private, @doc attribute is always discarded for private functions/macros/types │ 350 │ @doc """ │ ~~~~~~~~ │ └─ lib/arke/core/unit.ex:350: Arke.Core.Unit.parse_value/2 warning: variable "cleaned_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 404 │ cleaned_list = list_result |> Enum.map(&String.replace(&1, ~r/^['"]|['"]$/, "")) │ ~~~~~~~~~~~~ │ └─ lib/arke/core/unit.ex:404:5: Arke.Core.Unit.parse_value/2 warning: variable "datetime" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 431 │ defp get_data_value(%{"datetime" => datetime, "value" => value} = _), do: value │ ~~~~~~~~ │ └─ lib/arke/core/unit.ex:431:39: Arke.Core.Unit.get_data_value/1 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 96 │ defp cast_value(%Arke.Core.Unit{arke_id: arke_id} = parameter, value) do │ ~~~~~~~~~ │ └─ lib/arke/core/query.ex:96:57: Arke.Core.Query.BaseFilter.cast_value/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 110 │ defp cast_value(parameter, value), do: value │ ~~~~~~~~~ │ └─ lib/arke/core/query.ex:110:21: Arke.Core.Query.BaseFilter.cast_value/2 warning: variable "offset" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 378 │ def set_offset(query, offset), do: nil │ ~~~~~~ │ └─ lib/arke/core/query.ex:378:25: Arke.Core.Query.set_offset/2 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 378 │ def set_offset(query, offset), do: nil │ ~~~~~ │ └─ lib/arke/core/query.ex:378:18: Arke.Core.Query.set_offset/2 warning: variable "limit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 402 │ def set_limit(query, limit), do: nil │ ~~~~~ │ └─ lib/arke/core/query.ex:402:24: Arke.Core.Query.set_limit/2 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 402 │ def set_limit(query, limit), do: nil │ ~~~~~ │ └─ lib/arke/core/query.ex:402:17: Arke.Core.Query.set_limit/2 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 67 │ else: ({:error, msg} -> nil) │ ~ │ └─ lib/arke/boundary/arke_manager.ex:67:30: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 60 │ %{id: id, data: data} -> │ ~ │ └─ lib/arke/boundary/arke_manager.ex:60:13: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def get_parameter(unit_id, project, %Unit{} = parameter), do: parameter │ ~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:72:30: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "unit_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def get_parameter(unit_id, project, %Unit{} = parameter), do: parameter │ ~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:72:21: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 85 │ %{id: id, data: data} = arke -> │ ~ │ └─ lib/arke/boundary/arke_manager.ex:85:13: Arke.Boundary.ArkeManager.update_parameter/4 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 103 │ defp init_parameter(project, id, metadata, p) do │ ~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:103:23: Arke.Boundary.ArkeManager.init_parameter/4 warning: variable "parameter" is unused (there is a variable with the same name in the context, use the pin operator (^) to match on it or prefix this variable with underscore if it is not meant to be used) │ 130 │ parameter = handle_init_p(id, parameter, metadata) │ ~ │ └─ lib/arke/boundary/arke_manager.ex:130:9: Arke.Boundary.ArkeManager.init_parameter/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 134 │ defp handle_init_p(id, nil, metadata) do │ ~~ │ └─ lib/arke/boundary/arke_manager.ex:134:22: Arke.Boundary.ArkeManager.handle_init_p/3 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 134 │ defp handle_init_p(id, nil, metadata) do │ ~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:134:31: Arke.Boundary.ArkeManager.handle_init_p/3 warning: variable "pdata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 139 │ Map.update(parameter,:data, %{},fn v -> Map.merge(v,override_data, fn _k, pdata,ovdata -> ovdata end) end) │ ~ │ └─ lib/arke/boundary/arke_manager.ex:139:79: Arke.Boundary.ArkeManager.handle_init_p/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 138 │ defp handle_init_p(id, parameter, override_data) do │ ~~ │ └─ lib/arke/boundary/arke_manager.ex:138:22: Arke.Boundary.ArkeManager.handle_init_p/3 warning: function init_parameter/4 is unused │ 103 │ defp init_parameter(project, id, metadata, p) do │ ~ │ └─ lib/arke/boundary/arke_manager.ex:103:8: Arke.Boundary.ArkeManager (module) warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule Arke.Boundary.ArkeManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:15: Arke.Boundary.ArkeManager (module) warning: this clause cannot match because a previous clause at line 124 matches the same pattern as this clause │ 125 │ def load_parameter_value(%{id: :metadata} = _, data, opts), do: data │ ~ │ └─ lib/arke/core/unit.ex:125:7 warning: this clause for handle_id/1 cannot match because a previous clause at line 251 always matches │ 272 │ defp handle_id(id) when is_nil(id), do: UUID.uuid1() │ ~ │ └─ lib/arke/core/unit.ex:272:8 warning: this clause for handle_id/1 cannot match because a previous clause at line 251 always matches │ 273 │ defp handle_id(id) when is_atom(id), do: Atom.to_string(id) │ ~ │ └─ lib/arke/core/unit.ex:273:8 warning: this clause for handle_id/1 cannot match because a previous clause at line 251 always matches │ 274 │ defp handle_id(id) when is_binary(id), do: id │ ~ │ └─ lib/arke/core/unit.ex:274:8 warning: this clause for handle_id/1 cannot match because a previous clause at line 251 always matches │ 276 │ defp handle_id(id), do: id │ ~ │ └─ lib/arke/core/unit.ex:276:8 warning: this clause for encode_unit_data/2 cannot match because a previous clause at line 253 always matches │ 278 │ def encode_unit_data(arke, data) do │ ~ │ └─ lib/arke/core/unit.ex:278:7 warning: this clause for update_encoded_unit_data/3 cannot match because a previous clause at line 269 always matches │ 285 │ defp update_encoded_unit_data(%{data: %{only_runtime: true}}, data, _), do: data │ ~ │ └─ lib/arke/core/unit.ex:285:8 warning: this clause for update_encoded_unit_data/3 cannot match because a previous clause at line 269 always matches │ 287 │ defp update_encoded_unit_data(%{id: id}, data, value), │ ~ │ └─ lib/arke/core/unit.ex:287:8 warning: this clause for update_encoded_unit_data/3 cannot match because a previous clause at line 269 always matches │ 294 │ defp update_encoded_unit_data(_, data, _), do: data │ ~ │ └─ lib/arke/core/unit.ex:294:8 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 66 │ else: ({:error, msg} -> nil) │ ~ │ └─ lib/arke/boundary/group_manager.ex:66:25: Arke.Boundary.GroupManager.get_arke/3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 70 │ def get_arke(unit_id, project, %Unit{} = parameter), do: parameter │ ~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:70:25: Arke.Boundary.GroupManager.get_arke/3 warning: variable "unit_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 70 │ def get_arke(unit_id, project, %Unit{} = parameter), do: parameter │ ~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:70:16: Arke.Boundary.GroupManager.get_arke/3 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def get_groups_by_arke(%{id: id, metadata: %{project: project}} = arke), │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:72:69: Arke.Boundary.GroupManager.get_groups_by_arke/1 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 89 │ def get_parameters(%{id: id, metadata: %{project: project}} = group) do │ ~~ │ └─ lib/arke/boundary/group_manager.ex:89:28: Arke.Boundary.GroupManager.get_parameters/1 warning: variable "parameters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 90 │ parameters = │ ~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:90:5: Arke.Boundary.GroupManager.get_parameters/1 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 119 │ {:error, msg} -> %{id: child_id, metadata: metadata} │ ~ │ └─ lib/arke/boundary/group_manager.ex:119:16: Arke.Boundary.GroupManager.link_init/4 warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule Arke.Boundary.GroupManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:15: Arke.Boundary.GroupManager (module) warning: def add_node/5 has multiple clauses and also declares default values. In such cases, the default values should be defined in a header. Instead of: def foo(:first_clause, b \\ :default) do ... end def foo(:second_clause, b) do ... end one should write: def foo(a, b \\ :default) def foo(:first_clause, b) do ... end def foo(:second_clause, b) do ... end the previous clause is defined on line 24 │ 42 │ def add_node(project, parent, child, type, metadata) │ ~ │ └─ lib/arke/link_manager.ex:42:7 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 74 │ def delete_node(project, %Unit{} = parent, %Unit{} = child, type, metadata \\ %{}) do │ ~~~~~~~~ │ └─ lib/arke/link_manager.ex:74:69: Arke.LinkManager.delete_node/5 warning: def delete_node/5 has multiple clauses and also declares default values. In such cases, the default values should be defined in a header. Instead of: def foo(:first_clause, b \\ :default) do ... end def foo(:second_clause, b) do ... end one should write: def foo(a, b \\ :default) def foo(:first_clause, b) do ... end def foo(:second_clause, b) do ... end the previous clause is defined on line 74 │ 83 │ def delete_node(project, parent, child, type, metadata) │ ~ │ └─ lib/arke/link_manager.ex:83:7 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 62 │ def on_unit_create(_arke, %{id: id, metadata: %{project: project}} = unit) do │ ~~ │ └─ lib/arke/core/parameter.ex:62:35: Arke.Core.Parameter.on_unit_create/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 62 │ def on_unit_create(_arke, %{id: id, metadata: %{project: project}} = unit) do │ ~~~~~~~ │ └─ lib/arke/core/parameter.ex:62:60: Arke.Core.Parameter.on_unit_create/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def on_unit_delete(_, %{id: id, metadata: %{project: project}} = unit) do │ ~~ │ └─ lib/arke/core/parameter.ex:72:31: Arke.Core.Parameter.on_unit_delete/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def on_unit_delete(_, %{id: id, metadata: %{project: project}} = unit) do │ ~~~~~~~ │ └─ lib/arke/core/parameter.ex:72:56: Arke.Core.Parameter.on_unit_delete/2 warning: module attribute @record_fields was set but never used │ 17 │ @record_fields [:id, :data, :metadata, :inserted_at, :updated_at] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/link_manager.ex:17: Arke.LinkManager (module) warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead │ 49 │ @persistence Application.get_env(:arke, :persistence) │ ~ │ └─ lib/arke/query_manager.ex:49:28: Arke.QueryManager (module) warning: function head for def encode/2 must come at the top of its direct implementation. Instead of: def add(a, b), do: a + b def add(a, b) one should write: def add(a, b) def add(a, b), do: a + b │ 60 │ def encode(unit, opts) │ ~ │ └─ lib/arke/struct_manager.ex:60:7 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 80 │ type, │ ~~~~ │ └─ lib/arke/struct_manager.ex:80:10: Arke.StructManager.handle_encode/4 warning: variable "link_id_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 130 │ link_id_list = │ ~~~~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:130:5: Arke.StructManager.get_link_id_list/1 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 137 │ %{id: id, arke_id: arke_id, metadata: %{project: project}, data: data} = unit │ ~~ │ └─ lib/arke/struct_manager.ex:137:16: Arke.StructManager.get_link_id_list/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 137 │ %{id: id, arke_id: arke_id, metadata: %{project: project}, data: data} = unit │ ~~~~ │ └─ lib/arke/struct_manager.ex:137:83: Arke.StructManager.get_link_id_list/1 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 162 │ defp get_parsed_data(nil, arke, _), do: %{} │ ~~~~ │ └─ lib/arke/struct_manager.ex:162:29: Arke.StructManager.get_parsed_data/3 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 163 │ defp get_parsed_data(data, arke, _) when data == %{}, do: %{} │ ~~~~ │ └─ lib/arke/struct_manager.ex:163:30: Arke.StructManager.get_parsed_data/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "def encode/2" was previously defined (lib/arke/struct_manager.ex:52) │ 173 │ def encode(_unit, _format), do: raise("Must pass a valid unit") │ ~ │ └─ lib/arke/struct_manager.ex:173:7 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 199 │ %{load_values: true} = opts │ ~~~~ │ └─ lib/arke/struct_manager.ex:199:33: Arke.StructManager.parse_value/3 warning: variable "param" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 198 │ %{arke_id: param_type, data: %{multiple: false, values: values}} = param, │ ~~~~~ │ └─ lib/arke/struct_manager.ex:198:77: Arke.StructManager.parse_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 208 │ %{load_values: true} = opts │ ~~~~ │ └─ lib/arke/struct_manager.ex:208:33: Arke.StructManager.parse_value/3 warning: variable "param" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 207 │ %{arke_id: param_type, data: %{multiple: true, values: values}} = param, │ ~~~~~ │ └─ lib/arke/struct_manager.ex:207:76: Arke.StructManager.parse_value/3 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 222 │ defp filter_link_units(_link_units, %{id: id, metadata: metadata} = unit, false) │ ~~~~~~~~ │ └─ lib/arke/struct_manager.ex:222:59: Arke.StructManager.filter_link_units/3 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 222 │ defp filter_link_units(_link_units, %{id: id, metadata: metadata} = unit, false) │ ~~~~ │ └─ lib/arke/struct_manager.ex:222:71: Arke.StructManager.filter_link_units/3 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 331 │ def get_struct(arke, %{data: data} = unit, opts) do │ ~~~~ │ └─ lib/arke/struct_manager.ex:331:32: Arke.StructManager.get_struct/3 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 340 │ def get_struct(arke, %{data: data} = unit) do │ ~~~~ │ └─ lib/arke/struct_manager.ex:340:32: Arke.StructManager.get_struct/2 warning: clauses with the same name should be grouped together, "def get_struct/1" was previously defined (lib/arke/struct_manager.ex:326) │ 362 │ def get_struct(_), do: raise("Must pass a valid arke or unit") │ ~ │ └─ lib/arke/struct_manager.ex:362:7 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 417 │ defp add_value(struct, %{data: data} = unit) do │ ~~~~ │ └─ lib/arke/struct_manager.ex:417:42: Arke.StructManager.add_value/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 427 │ defp add_type_fields({%{arke_id: :string, data: data} = parameter, base_data}, _project) do │ ~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:427:59: Arke.StructManager.add_type_fields/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 466 │ defp add_type_fields({%{arke_id: :boolean, data: data} = parameter, base_data}, _project) do │ ~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:466:60: Arke.StructManager.add_type_fields/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 476 │ defp add_type_fields({%{arke_id: :dict, data: data} = parameter, base_data}, _project) do │ ~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:476:57: Arke.StructManager.add_type_fields/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 486 │ defp add_type_fields({%{arke_id: :list, data: data} = parameter, base_data}, _project) do │ ~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:486:57: Arke.StructManager.add_type_fields/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 510 │ defp get_arke_or_group_id(nil, project), do: nil │ ~~~~~~~ │ └─ lib/arke/struct_manager.ex:510:34: Arke.StructManager.get_arke_or_group_id/2 warning: variable "p" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 540 │ defp add_type_fields({p, base_data}, _project) do │ ~ │ └─ lib/arke/struct_manager.ex:540:25: Arke.StructManager.add_type_fields/2 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 82 │ query = Query.new(arke, project, distinct) │ ~~~~~ │ └─ lib/arke/query_manager.ex:82:5: Arke.QueryManager.query/1 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp add_type_fields/2" was previously defined (lib/arke/struct_manager.ex:427) │ 540 │ defp add_type_fields({p, base_data}, _project) do │ ~ │ └─ lib/arke/struct_manager.ex:540:8 warning: variable "depth" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 120 │ defp parse_link_depth(depth), do: 500 │ ~~~~~ │ └─ lib/arke/query_manager.ex:120:25: Arke.QueryManager.parse_link_depth/1 warning: variable "link_unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 181 │ {:ok, parameter, link_unit} -> {errors, link_units} │ ~ │ └─ lib/arke/query_manager.ex:181:28: Arke.QueryManager.handle_link_parameters_unit/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 181 │ {:ok, parameter, link_unit} -> {errors, link_units} │ ~ │ └─ lib/arke/query_manager.ex:181:17: Arke.QueryManager.handle_link_parameters_unit/2 warning: variable "p" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 188 │ Enum.map(link_units, fn {p, u} -> │ ~ │ └─ lib/arke/query_manager.ex:188:34: Arke.QueryManager.handle_link_parameters_unit/2 warning: variable "parameters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 165 │ %{data: parameters} = arke, │ ~~~~~~~~~~ │ └─ lib/arke/query_manager.ex:165:18: Arke.QueryManager.handle_link_parameters_unit/2 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 204 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~ │ └─ lib/arke/query_manager.ex:204:72: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 204 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~~~~ │ └─ lib/arke/query_manager.ex:204:46: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 204 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~ │ └─ lib/arke/query_manager.ex:204:55: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 208 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~ │ └─ lib/arke/query_manager.ex:208:72: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 208 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~~~~ │ └─ lib/arke/query_manager.ex:208:46: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 208 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~ │ └─ lib/arke/query_manager.ex:208:55: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "filters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 407 │ def and_(_query, _negate, filters), do: raise("filters must be a list") │ ~~~~~~~ │ └─ lib/arke/query_manager.ex:407:29: Arke.QueryManager.and_/3 warning: variable "filters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 428 │ def or_(_query, _negate, filters), do: raise("filters must be a list") │ ~~~~~~~ │ └─ lib/arke/query_manager.ex:428:28: Arke.QueryManager.or_/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 566 │ %{id: id} = group = get_group(value, query.project) │ ~~ │ └─ lib/arke/query_manager.ex:566:11: Arke.QueryManager.handle_filter/5 warning: variable "arke_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 592 │ defp handle_filter_group(query, group, arke_list, negate) when is_nil(group), do: query │ ~~~~~~~~~ │ └─ lib/arke/query_manager.ex:592:42: Arke.QueryManager.handle_filter_group/4 warning: variable "negate" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 592 │ defp handle_filter_group(query, group, arke_list, negate) when is_nil(group), do: query │ ~~~~~~ │ └─ lib/arke/query_manager.ex:592:53: Arke.QueryManager.handle_filter_group/4 warning: variable "group" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 594 │ defp handle_filter_group(query, group, arke_list, negate), │ ~~~~~ │ └─ lib/arke/query_manager.ex:594:35: Arke.QueryManager.handle_filter_group/4 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 740 │ defp get_parameter_operator(arke, [key, operator]), do: {key, String.to_existing_atom(operator)} │ ~~~~ │ └─ lib/arke/query_manager.ex:740:31: Arke.QueryManager.get_parameter_operator/2 warning: default values for the optional arguments in the private function parse_value/3 are never used │ 182 │ defp parse_value(value, param, _opts \\ []) │ ~ │ └─ lib/arke/struct_manager.ex:182:8: Arke.StructManager (module) warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 741 │ defp get_parameter_operator(arke, [key]), do: {key, :eq} │ ~~~~ │ └─ lib/arke/query_manager.ex:741:31: Arke.QueryManager.get_parameter_operator/2 warning: default values for the optional arguments in the private function handle_encode/4 are never used │ 61 │ defp handle_encode(u, type, load_links, opts \\ []) │ ~ │ └─ lib/arke/struct_manager.ex:61:8: Arke.StructManager (module) warning: function handle_default_value/2 is unused │ 265 │ defp handle_default_value( │ ~ │ └─ lib/arke/struct_manager.ex:265:8: Arke.StructManager (module) warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 745 │ defp get_parameter(%{arke: nil, project: project} = query, %{id: id} = _parameter), │ ~~~~~ │ └─ lib/arke/query_manager.ex:745:55: Arke.QueryManager.get_parameter/2 warning: default values for the optional arguments in the private function get_parsed_data/3 are never used │ 161 │ defp get_parsed_data(data, arke, opts \\ []) │ ~ │ └─ lib/arke/struct_manager.ex:161:8: Arke.StructManager (module) warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 748 │ defp get_parameter(%{arke: nil, project: project} = query, key), │ ~~~~~ │ └─ lib/arke/query_manager.ex:748:55: Arke.QueryManager.get_parameter/2 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 751 │ defp get_parameter(%{arke: arke, project: project} = query, key) do │ ~~~~~ │ └─ lib/arke/query_manager.ex:751:56: Arke.QueryManager.get_parameter/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 756 │ %{arke_id: arke_id, metadata: %{project: project}, data: new_data, id: id} = unit, │ ~~ │ └─ lib/arke/query_manager.ex:756:81: Arke.QueryManager.handle_link_parameters/2 warning: variable "value" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 869 │ defp normalize_value(%{id: id} = value) do │ ~~~~~ │ └─ lib/arke/query_manager.ex:869:36: Arke.QueryManager.normalize_value/1 warning: this clause for encode/2 cannot match because a previous clause at line 54 always matches │ 173 │ def encode(_unit, _format), do: raise("Must pass a valid unit") │ ~ │ └─ lib/arke/struct_manager.ex:173:7 warning: unused alias Arke │ 25 │ alias Arke.Core.{Unit, Arke} │ ~ │ └─ lib/arke/struct_manager.ex:25:3 warning: module attribute @record_fields was set but never used │ 50 │ @record_fields [:id, :data, :metadata, :inserted_at, :updated_at] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/query_manager.ex:50: Arke.QueryManager (module) warning: unused alias Parameter │ 47 │ alias Arke.Core.{Arke, Unit, Query, Parameter} │ ~ │ └─ lib/arke/query_manager.ex:47:3 warning: unused alias QueryManager │ 43 │ alias Arke.QueryManager │ ~ │ └─ lib/arke/query_manager.ex:43:3 warning: variable "e" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 65 │ e -> │ ~ │ └─ lib/arke/utils/datetime_handler.ex:65:7: Arke.Utils.DatetimeHandler.check_time/2 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead │ 23 │ @persistence Application.get_env(:arke, :persistence) │ ~ │ └─ lib/arke/core/project.ex:23:28: Arke.Core.Project (module) warning: this clause cannot match because a previous clause at line 373 matches the same pattern as this clause │ 373 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/system.ex:373 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 69 │ def base_parameters(arke, %{data: %{parameters: []}} = unit), do: base_parameters(arke) │ ~~~~ │ └─ lib/arke/core/arke.ex:69:58: Arke.Core.Arke.base_parameters/2 warning: variable "content_type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 35 │ %{path: path, content_type: content_type, filename: filename} = _unit, │ ~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:35:37: Arke.Core.File.before_load/2 warning: variable "opts" is unused (there is a variable with the same name in the context, use the pin operator (^) to match on it or prefix this variable with underscore if it is not meant to be used) │ 61 │ {:ok, %{signed_url: signed_url} = opts} <- get_url(unit) do │ ~ │ └─ lib/arke/core/file.ex:61:44: Arke.Core.File.on_struct_encode/4 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 57 │ def on_struct_encode(arke, %{metadata: %{project: project}} = unit, data, opts) do │ ~~~~ │ └─ lib/arke/core/file.ex:57:24: Arke.Core.File.on_struct_encode/4 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 57 │ def on_struct_encode(arke, %{metadata: %{project: project}} = unit, data, opts) do │ ~~~~~~~ │ └─ lib/arke/core/file.ex:57:53: Arke.Core.File.on_struct_encode/4 warning: this clause cannot match because a previous clause at line 21 matches the same pattern as this clause │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/arke.ex:21 warning: unused alias Parameter │ 22 │ alias Arke.Core.Parameter │ ~ │ └─ lib/arke/core/arke.ex:22:3 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def on_create(arke, unit) do │ ~~~~ │ └─ lib/arke/core/group.ex:27:17: Arke.Core.Group.on_create/2 warning: this clause cannot match because a previous clause at line 20 matches the same pattern as this clause │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:20 warning: unused alias ArkeManager │ 22 │ alias Arke.Boundary.{ArkeManager, FileManager} │ ~ │ └─ lib/arke/core/file.ex:22:3 warning: variable "child_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 64 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:64:63: Arke.Core.Link.on_create/2 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 65 │ metadata: %{project: project} = metadata │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:65:43: Arke.Core.Link.on_create/2 warning: variable "parent_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 64 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~~~~~~ │ └─ lib/arke/core/link.ex:64:42: Arke.Core.Link.on_create/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 65 │ metadata: %{project: project} = metadata │ ~~~~~~~ │ └─ lib/arke/core/link.ex:65:32: Arke.Core.Link.on_create/2 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 64 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~ │ └─ lib/arke/core/link.ex:64:25: Arke.Core.Link.on_create/2 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 86 │ metadata: %{project: project} = metadata │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:86:43: Arke.Core.Link.on_delete/2 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 103 │ metadata: %{project: project} = metadata │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:103:43: Arke.Core.Link.on_delete/2 warning: variable "child_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 119 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:119:63: Arke.Core.Link.on_delete/2 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 120 │ metadata: %{project: project} = metadata │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:120:43: Arke.Core.Link.on_delete/2 warning: variable "parent_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 119 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~~~~~~ │ └─ lib/arke/core/link.ex:119:42: Arke.Core.Link.on_delete/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 120 │ metadata: %{project: project} = metadata │ ~~~~~~~ │ └─ lib/arke/core/link.ex:120:32: Arke.Core.Link.on_delete/2 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 119 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~ │ └─ lib/arke/core/link.ex:119:25: Arke.Core.Link.on_delete/2 warning: this clause cannot match because a previous clause at line 20 matches the same pattern as this clause │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/group.ex:20 warning: this clause cannot match because a previous clause at line 18 matches the same pattern as this clause │ 18 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/link.ex:18 warning: unused alias LinkManager │ 19 │ alias Arke.LinkManager │ ~ │ └─ lib/arke/core/link.ex:19:3 warning: this clause cannot match because a previous clause at line 21 matches the same pattern as this clause │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/project.ex:21 warning: this clause cannot match because a previous clause at line 102 matches the same pattern as this clause │ 102 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:102 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 49 │ defp get_arke(project, nil), do: [] │ ~~~~~~~ │ └─ lib/arke/utils/export.ex:49:17: Arke.Utils.Export.get_arke/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 52 │ defp get_parameter(project, nil), do: [] │ ~~~~~~~ │ └─ lib/arke/utils/export.ex:52:22: Arke.Utils.Export.get_parameter/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 61 │ defp get_group(project, nil), do: [] │ ~~~~~~~ │ └─ lib/arke/utils/export.ex:61:18: Arke.Utils.Export.get_group/2 warning: variable "parsed_data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 86 │ parsed_data = │ ~~~~~~~~~~~ │ └─ lib/arke/utils/export.ex:86:5: Arke.Utils.Export.get_all/1 warning: this clause cannot match because a previous clause at line 136 matches the same pattern as this clause │ 136 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:136 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead │ 19 │ @storage Application.get_env(:arke, :storage) │ ~ │ └─ lib/arke/utils/gcp.ex:19:24: Arke.Utils.Gcp (module) warning: variable "object" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 28 │ {:ok, object} = │ ~~~~~~ │ └─ lib/arke/utils/gcp.ex:28:11: Arke.Utils.Gcp.upload_file/3 warning: variable "ext" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 50 │ def get_public_url(%{data: %{name: name, path: path, extension: ext}} = unit, opts \\ []) do │ ~~~ │ └─ lib/arke/utils/gcp.ex:50:67: Arke.Utils.Gcp.get_public_url/2 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 50 │ def get_public_url(%{data: %{name: name, path: path, extension: ext}} = unit, opts \\ []) do │ ~~~~ │ └─ lib/arke/utils/gcp.ex:50:75: Arke.Utils.Gcp.get_public_url/2 warning: def get_public_url/2 has multiple clauses and also declares default values. In such cases, the default values should be defined in a header. Instead of: def foo(:first_clause, b \\ :default) do ... end def foo(:second_clause, b) do ... end one should write: def foo(a, b \\ :default) def foo(:first_clause, b) do ... end def foo(:second_clause, b) do ... end the previous clause is defined on line 50 │ 55 │ def get_public_url(_unit, _opts), do: Error.create(:storage, "invalid unit") │ ~ │ └─ lib/arke/utils/gcp.ex:55:7 warning: variable "err" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 101 │ {:ok, %{status_code: 403} = err} -> │ ~ │ └─ lib/arke/utils/gcp.ex:101:35: Arke.Utils.Gcp.get_bucket_file_signed_url/2 warning: this clause cannot match because a previous clause at line 170 matches the same pattern as this clause │ 170 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:170 warning: this clause for upload_file/2 cannot match because a previous clause at line 16 always matches │ 23 │ def upload_file(file_name, file_data, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:23:7 warning: this clause for get_file/1 cannot match because a previous clause at line 16 always matches │ 39 │ def get_file(file_path, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:39:7 warning: this clause for get_public_url/1 cannot match because a previous clause at line 16 always matches │ 50 │ def get_public_url(%{data: %{name: name, path: path, extension: ext}} = unit, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:50:7 warning: this clause for delete_file/1 cannot match because a previous clause at line 16 always matches │ 57 │ def delete_file(file_path, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:57:7 warning: this clause for get_bucket_file_signed_url/1 cannot match because a previous clause at line 16 always matches │ 68 │ def get_bucket_file_signed_url(file_path, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:68:7 warning: module attribute @default_bucket was set but never used │ 21 │ @default_bucket @storage[:gcp][:default_bucket] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/utils/gcp.ex:21: Arke.Utils.Gcp (module) warning: module attribute @service_account was set but never used │ 20 │ @service_account @storage[:gcp][:service_account] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/utils/gcp.ex:20: Arke.Utils.Gcp (module) warning: variable "arke_data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 51 │ %{data: arke_data} = arke = ArkeManager.get(arke_id, project) │ ~ │ └─ lib/arke/validator.ex:51:15: Arke.Validator.validate/3 warning: variable "unit_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 91 │ defp check_duplicate_unit(%{id: unit_id} = unit, _project, _persistence_fn), do: {:ok, unit} │ ~~~~~~~ │ └─ lib/arke/validator.ex:91:35: Arke.Validator.check_duplicate_unit/3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 144 │ defp get_parameter(arke, parameter_id, project), │ ~~~~~~~ │ └─ lib/arke/validator.ex:144:42: Arke.Validator.get_parameter/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "def validate_parameter/4" was previously defined (lib/arke/validator.ex:134) │ 147 │ def validate_parameter(arke, parameter, value, project) do │ ~ │ └─ lib/arke/validator.ex:147:7 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 167 │ def get_default_value(parameter, value), do: value │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:167:25: Arke.Validator.get_default_value/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 169 │ defp parse_value(%{arke_id: :integer, data: %{multiple: false} = data} = _, value) │ ~~~~ │ └─ lib/arke/validator.ex:169:68: Arke.Validator.parse_value/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 177 │ defp parse_value(%{arke_id: :float, data: %{multiple: false} = data} = _, value) │ ~~~~ │ └─ lib/arke/validator.ex:177:66: Arke.Validator.parse_value/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 224 │ defp check_duplicate(errors, %{id: id, data: %{unique: true}} = _parameter, nil, project), │ ~~~~~~~ │ └─ lib/arke/validator.ex:224:84: Arke.Validator.check_duplicate/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 227 │ defp check_duplicate(errors, %{id: id, data: %{unique: true}} = parameter, value, project,arke) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:227:67: Arke.Validator.check_duplicate/5 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 287 │ %{arke_id: type, data: %{multiple: true, values: _values, label: label}} = parameter, │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:287:85: Arke.Validator.check_values/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 306 │ defp check_multiple(errors, %{id: id, data: %{multiple: true}} = parameter, value) when not is_list(value), do: check_multiple(errors, parameter, [value]) │ ~~ │ └─ lib/arke/validator.ex:306:37: Arke.Validator.check_multiple/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 307 │ defp check_multiple(errors, %{id: id, arke_id: type, data: %{ multiple: true}} = parameter, value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:307:84: Arke.Validator.check_multiple/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 317 │ defp check_whitespace(%{data: %{strip: true}} = parameter, value) when is_atom(value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:317:51: Arke.Validator.check_whitespace/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 325 │ defp check_whitespace(%{data: %{strip: true}} = parameter, value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:325:51: Arke.Validator.check_whitespace/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 332 │ defp check_lowercase(%{data: %{lowercase: true}} = parameter, value) when is_atom(value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:332:54: Arke.Validator.check_lowercase/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 339 │ defp check_lowercase(%{data: %{lowercase: true}} = parameter, value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:339:54: Arke.Validator.check_lowercase/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 346 │ defp check_max_length(errors, %{data: %{max_length: max_length}} = parameter, _) │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:346:70: Arke.Validator.check_max_length/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 352 │ %{data: %{label: label, max_length: max_length}} = parameter, │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:352:61: Arke.Validator.check_max_length/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 364 │ defp check_min_length(errors, %{data: %{min_length: min_length}} = parameter, _) │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:364:70: Arke.Validator.check_min_length/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 370 │ %{data: %{label: label, min_length: min_length}} = parameter, │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:370:61: Arke.Validator.check_min_length/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp check_by_type/3" was previously defined (lib/arke/validator.ex:235) │ 386 │ defp check_by_type(errors, %{arke_id: :integer} = parameter, value) │ ~ │ └─ lib/arke/validator.ex:386:8 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 395 │ defp check_by_type(errors, %{arke_id: :integer, data: %{label: label}} = parameter, _value), │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:395:76: Arke.Validator.check_by_type/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 407 │ defp check_by_type(errors, %{arke_id: :float, data: %{label: label}} = parameter, _value), │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:407:74: Arke.Validator.check_by_type/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 412 │ defp check_by_type(errors, %{arke_id: :dict, data: %{label: label}} = parameter, _value), │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:412:73: Arke.Validator.check_by_type/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 417 │ defp check_by_type(errors, %{arke_id: :list, data: %{label: label}} = parameter, _value), │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:417:73: Arke.Validator.check_by_type/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 420 │ defp check_max(errors, %{data: %{max: max}} = parameter, _) when is_nil(max), do: errors │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:420:49: Arke.Validator.check_max/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 431 │ defp check_min(errors, %{data: %{min: min}} = parameter, _) when is_nil(min), do: errors │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:431:49: Arke.Validator.check_min/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp check_by_type/3" was previously defined (lib/arke/validator.ex:235) │ 443 │ defp check_by_type(errors, %{arke_id: :date} = parameter, value) do │ ~ │ └─ lib/arke/validator.ex:443:8 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 470 │ defp check_by_type(errors, %{arke_id: :boolean} = parameter, value) │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:470:53: Arke.Validator.check_by_type/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 495 │ defp __enum_error_common__(errors, %{id: id, data: %{values: nil}} = _parameter), do: errors │ ~~ │ └─ lib/arke/validator.ex:495:44: Arke.Validator.__enum_error_common__/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 496 │ defp __enum_error_common__(errors, %{id: id, data: %{values: %{}}} = _parameter), do: errors │ ~~ │ └─ lib/arke/validator.ex:496:44: Arke.Validator.__enum_error_common__/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 497 │ defp __enum_error_common__(errors, %{id: id, data: %{values: []}} = _parameter), do: errors │ ~~ │ └─ lib/arke/validator.ex:497:44: Arke.Validator.__enum_error_common__/2 warning: function check_duplicate/4 is unused │ 224 │ defp check_duplicate(errors, %{id: id, data: %{unique: true}} = _parameter, nil, project), │ ~ │ └─ lib/arke/validator.ex:224:8: Arke.Validator (module) warning: this clause cannot match because a previous clause at line 200 matches the same pattern as this clause │ 200 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:200 warning: variable "exception" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 12 │ def message(%{message: [%{context: context, message: message}]} = exception), │ ~~~~~~~~~ │ └─ lib/error/arke_error.ex:12:69: Arke.Errors.ArkeError.message/1 warning: variable "exception" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 15 │ def message(%{message: errors} = exception) when is_list(errors) do │ ~~~~~~~~~ │ └─ lib/error/arke_error.ex:15:36: Arke.Errors.ArkeError.message/1 warning: this clause cannot match because a previous clause at line 224 matches the same pattern as this clause │ 224 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:224 warning: this clause cannot match because a previous clause at line 248 matches the same pattern as this clause │ 248 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:248 warning: module attribute @decode_keys was set but never used │ 29 │ @decode_keys [:arke, :parameter, :group, :link] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/mix/tasks/arke.export_data.ex:29: Mix.Tasks.Arke.ExportData (module) warning: unused alias ArkeManager │ 26 │ alias Arke.Boundary.{ArkeManager} │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:26:3 warning: unused alias Error │ 25 │ alias Arke.Utils.ErrorGenerator, as: Error │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:25:3 warning: unused alias LinkManager │ 24 │ alias Arke.LinkManager │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:24:3 warning: unused alias QueryManager │ 23 │ alias Arke.QueryManager │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:23:3 warning: unused alias Unit │ 28 │ alias Arke.Core.Unit │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:28:3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 79 │ defp check_file(_arke_id,project, []), do: nil │ ~~~~~~~ │ └─ lib/mix/tasks/arke.seed_project.ex:79:28: Mix.Tasks.Arke.SeedProject.check_file/3 warning: variable "format" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 256 │ defp parse([],format, data), do: data │ ~~~~~~ │ └─ lib/mix/tasks/arke.seed_project.ex:256:17: Mix.Tasks.Arke.SeedProject.parse/3 warning: default values for the optional arguments in the private function handle_link/3 are never used │ 346 │ defp handle_link(_data,_project, _error \\ []) │ ~ │ └─ lib/mix/tasks/arke.seed_project.ex:346:8: Mix.Tasks.Arke.SeedProject (module) warning: this clause cannot match because a previous clause at line 280 matches the same pattern as this clause │ 280 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:280 warning: this clause cannot match because a previous clause at line 311 matches the same pattern as this clause │ 311 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:311 warning: this clause cannot match because a previous clause at line 346 matches the same pattern as this clause │ 346 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:346 warning: this clause cannot match because a previous clause at line 370 matches the same pattern as this clause │ 370 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:370 warning: this clause cannot match because a previous clause at line 388 matches the same pattern as this clause │ 388 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:388 warning: this clause cannot match because a previous clause at line 404 matches the same pattern as this clause │ 404 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:404 warning: unused alias Parameter │ 402 │ alias Arke.Core.Parameter │ ~ │ └─ lib/arke/core/parameter.ex:402:3 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 404 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:404: Arke.Core.Parameter.Binary.handle_insert/4 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 388 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:388: Arke.Core.Parameter.Dynamic.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 388 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:388: Arke.Core.Parameter.Dynamic.import/1 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 404 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:404: Arke.Core.Parameter.Binary.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:388 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:388 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:388 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:388 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:388 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 388 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:388: Arke.Core.Parameter.Dynamic.import_units/5 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:404 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:404 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:404 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:404 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:404 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 404 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:404: Arke.Core.Parameter.Binary.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 346 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:346: Arke.Core.Parameter.DateTime.handle_insert/4 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 370 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:370: Arke.Core.Parameter.Link.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 346 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:346: Arke.Core.Parameter.DateTime.import/1 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 370 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:370: Arke.Core.Parameter.Link.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:346 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:346 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:346 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:346 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:346 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 346 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:346: Arke.Core.Parameter.DateTime.import_units/5 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:370 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:370 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:370 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:370 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:370 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 370 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:370: Arke.Core.Parameter.Link.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 311 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:311: Arke.Core.Parameter.Time.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 311 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:311: Arke.Core.Parameter.Time.import/1 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 280 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:280: Arke.Core.Parameter.Date.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:311 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:311 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:311 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:311 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:311 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 311 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:311: Arke.Core.Parameter.Time.import_units/5 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 280 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:280: Arke.Core.Parameter.Date.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:280 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:280 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:280 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:280 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:280 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 280 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:280: Arke.Core.Parameter.Date.import_units/5 warning: Arke.Boundary.ParameterManager.get_from_persistence/0 is undefined or private │ 34 │ Arke.Boundary.ParameterManager.get_from_persistence() │ ~ │ └─ lib/examples/starter.ex:34:36: Arke.Examples.Starter.init/0 warning: Arke.Core.Parameter.new/1 is undefined or private │ 44 │ parameter = Arke.Core.Parameter.new(p) │ ~ │ └─ lib/examples/starter.ex:44:41: Arke.Examples.Starter.init_arke_by_struct/2 warning: Arke.Boundary.ArkeManager.set_manager/2 is undefined or private │ 50 │ ArkeManager.set_manager(Arke.Core.Arke.new(args), :arke_system) │ ~ │ └─ lib/examples/starter.ex:50:17: Arke.Examples.Starter.init_arke_by_struct/2 warning: Arke.Core.Arke.new/1 is undefined or private │ 50 │ ArkeManager.set_manager(Arke.Core.Arke.new(args), :arke_system) │ ~ │ └─ lib/examples/starter.ex:50:44: Arke.Examples.Starter.init_arke_by_struct/2 └─ lib/examples/starter.ex:61:24: Arke.Examples.Starter.init_arke_by_persistence/0 warning: Arke.Boundary.ArkeManager.add_parameter/4 is undefined or private. Did you mean: * update_parameter/4 │ 78 │ ArkeManager.add_parameter(parent_id, :arke_system, child_id, data.metadata) │ ~ │ └─ lib/examples/starter.ex:78:19: Arke.Examples.Starter.init_arke_parameters_by_persistence/0 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 248 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:248: Arke.Core.Parameter.List.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 248 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:248: Arke.Core.Parameter.List.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:248 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:248 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:248 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:248 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:248 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 248 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:248: Arke.Core.Parameter.List.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 224 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:224: Arke.Core.Parameter.Dict.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 224 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:224: Arke.Core.Parameter.Dict.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:224 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:224 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:224 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:224 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:224 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 224 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:224: Arke.Core.Parameter.Dict.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 200 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:200: Arke.Core.Parameter.Boolean.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 200 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:200: Arke.Core.Parameter.Boolean.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:200 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:200 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:200 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:200 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:200 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 200 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:200: Arke.Core.Parameter.Boolean.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 170 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:170: Arke.Core.Parameter.Float.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 170 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:170: Arke.Core.Parameter.Float.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:170 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:170 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:170 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:170 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:170 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 170 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:170: Arke.Core.Parameter.Float.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 136 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:136: Arke.Core.Parameter.Integer.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 136 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:136: Arke.Core.Parameter.Integer.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:136 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:136 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:136 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:136 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:136 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 136 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:136: Arke.Core.Parameter.Integer.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 102 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:102: Arke.Core.Parameter.String.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 102 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:102: Arke.Core.Parameter.String.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:102 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:102 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:102 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:102 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:102 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 102 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:102: Arke.Core.Parameter.String.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/project.ex:21: Arke.Core.Project.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/project.ex:21: Arke.Core.Project.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/project.ex:21 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/project.ex:21 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/project.ex:21 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/project.ex:21 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/project.ex:21 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/project.ex:21: Arke.Core.Project.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 18 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/link.ex:18: Arke.Core.Link.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 18 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/link.ex:18: Arke.Core.Link.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/link.ex:18 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/link.ex:18 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/link.ex:18 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/link.ex:18 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/link.ex:18 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 18 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/link.ex:18: Arke.Core.Link.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/group.ex:20: Arke.Core.Group.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/group.ex:20: Arke.Core.Group.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/group.ex:20 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/group.ex:20 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/group.ex:20 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/group.ex:20 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/group.ex:20 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/group.ex:20: Arke.Core.Group.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:20: Arke.Core.File.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:20: Arke.Core.File.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/file.ex:20 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/file.ex:20 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/file.ex:20 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/file.ex:20 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/file.ex:20 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:20: Arke.Core.File.import_units/5 warning: Logger.warn/1 is undefined or private. However, there is a macro with the same name and arity. Be sure to require Logger if you intend to invoke this macro │ 69 │ Logger.warn("error while loading the image: #{msg}") │ ~ │ └─ lib/arke/core/file.ex:69:16: Arke.Core.File.on_struct_encode/4 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 373 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/system.ex:373: Arke.System.Arke.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 373 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/system.ex:373: Arke.System.Arke.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/system.ex:373 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/system.ex:373 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/system.ex:373 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/system.ex:373 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/system.ex:373 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 373 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/system.ex:373: Arke.System.Arke.import_units/5 warning: module attribute @impl was not set for function handle_call/3 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager (module) warning: module attribute @impl was not set for function handle_info/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager (module) warning: module attribute @impl was not set for function terminate/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager (module) warning: Tuple.append/2 is deprecated. Use insert_at instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager.call_nodes_manager/3 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/arke.ex:21: Arke.Core.Arke.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/arke.ex:21: Arke.Core.Arke.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/arke.ex:21 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/arke.ex:21 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/arke.ex:21 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/arke.ex:21 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/arke.ex:21 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/arke.ex:21: Arke.Core.Arke.import_units/5 warning: module attribute @impl was not set for function handle_call/3 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager (module) warning: Unit.update/2 is undefined (module Unit is not available or is yet to be defined). Did you mean: * Arke.Core.Unit.update/2 │ 45 │ unit = Unit.update(unit, %{parameters: parameters}) │ ~ │ └─ lib/arke/core/arke.ex:45:17: Arke.Core.Arke.on_update/2 warning: module attribute @impl was not set for function handle_info/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager (module) warning: module attribute @impl was not set for function terminate/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager (module) warning: Tuple.append/2 is deprecated. Use insert_at instead │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager.call_nodes_manager/3 warning: module attribute @impl was not set for function handle_call/3 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager (module) warning: module attribute @impl was not set for function handle_info/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager (module) warning: module attribute @impl was not set for function terminate/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager (module) warning: Tuple.append/2 is deprecated. Use insert_at instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager.call_nodes_manager/3 warning: Arke.DatetimeHandler.now/1 is undefined (module Arke.DatetimeHandler is not available or is yet to be defined) │ 291 │ :datetime => Arke.DatetimeHandler.now(:datetime) │ ~ │ └─ lib/arke/core/unit.ex:291:43: Arke.Core.Unit.update_encoded_unit_data/3 Generated arke app ==> arke_auth Compiling 13 files (.ex) warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager.handle_info/2 warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule ArkeAuth.Boundary.OtpManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:15: ArkeAuth.Boundary.OtpManager (module) warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 30 │ def on_unit_load(arke, data, _persistence_fn), do: {:ok, data} │ ~~~~ │ └─ lib/arke_auth/core/member.ex:30:20: ArkeAuth.Core.Member.on_unit_load/3 warning: variable "arke_user" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 63 │ arke_user = ArkeManager.get(:user, :arke_system) │ ~~~~~~~~~ │ └─ lib/arke_auth/core/member.ex:63:5: ArkeAuth.Core.Member.before_unit_update/2 warning: variable "arke_member_public" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 91 │ arke_member_public = QueryManager.get_by(project: project, arke_id: "ake", id: "member_public") │ ~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/member.ex:91:5: ArkeAuth.Core.Member.handle_get_permission/2 warning: function permission_dict/1 is unused │ 107 │ defp permission_dict(data \\ %{}) do │ ~ │ └─ lib/arke_auth/core/member.ex:107:8: ArkeAuth.Core.Member (module) warning: function handle_get_permission/2 is unused │ 89 │ defp handle_get_permission(member, %{metadata: %{project: project}}=arke) do │ ~ │ └─ lib/arke_auth/core/member.ex:89:8: ArkeAuth.Core.Member (module) warning: function get_permission_dict/2 is unused │ 119 │ defp get_permission_dict(permission_list, is_public \\ false) do │ ~ │ └─ lib/arke_auth/core/member.ex:119:8: ArkeAuth.Core.Member (module) warning: function get_parent_list/1 is unused │ 127 │ defp get_parent_list(nil), do: ["member_public"] │ ~ │ └─ lib/arke_auth/core/member.ex:127:8: ArkeAuth.Core.Member (module) warning: unused alias Member │ 17 │ alias ArkeAuth.Core.Member │ ~ │ └─ lib/arke_auth/core/member.ex:17:3 warning: this clause cannot match because a previous clause at line 6 matches the same pattern as this clause │ 6 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/reset_password_token.ex:6 warning: this clause cannot match because a previous clause at line 23 matches the same pattern as this clause │ 23 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/otp.ex:23 warning: this clause cannot match because a previous clause at line 24 matches the same pattern as this clause │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/temporary_token.ex:24 warning: Application.get_env/3 is discouraged in the module body, use Application.compile_env/3 instead │ 19 │ use Guardian, otp_app: :arke_auth │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/guardian.ex:19: ArkeAuth.Guardian (module) warning: this clause cannot match because a previous clause at line 24 matches the same pattern as this clause │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/user.ex:24 warning: Application.get_env/3 is discouraged in the module body, use Application.compile_env/3 instead │ 19 │ use Guardian, otp_app: :arke_auth │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/sso_guardian.ex:19: ArkeAuth.SSOGuardian (module) warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 44 │ data = Map.get(user,:data,%{}) │ ~ │ └─ lib/arke_auth/sso_guardian.ex:44:9: ArkeAuth.SSOGuardian.resource_from_claims/1 warning: this clause for subject_for_token/2 cannot match because a previous clause at line 24 always matches │ 32 │ def subject_for_token(_, _) do │ ~ │ └─ lib/arke_auth/sso_guardian.ex:32:7 warning: this clause for resource_from_claims/1 cannot match because a previous clause at line 39 always matches │ 49 │ def resource_from_claims(_claims) do │ ~ │ └─ lib/arke_auth/sso_guardian.ex:49:7 warning: this clause for subject_for_token/2 cannot match because a previous clause at line 51 always matches │ 61 │ def subject_for_token(_, _) do │ ~ │ └─ lib/arke_auth/guardian.ex:61:7 warning: this clause for resource_from_claims/1 cannot match because a previous clause at line 68 always matches │ 81 │ def resource_from_claims(_claims) do │ ~ │ └─ lib/arke_auth/guardian.ex:81:7 warning: variable "parent_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 34 │ parent_list = get_parent_list(member) │ ~~~~~~~~~~~ │ └─ lib/arke_auth/utils/permission.ex:34:5: ArkeAuth.Utils.Permission.get_member_permission/3 warning: variable "parent_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 59 │ parent_list = get_parent_list(member) │ ~~~~~~~~~~~ │ └─ lib/arke_auth/utils/permission.ex:59:5: ArkeAuth.Utils.Permission.get_member_permission/3 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 112 │ defp permission_dict(data, %{arke_id: :super_admin} = _member), │ ~~~~ │ └─ lib/arke_auth/utils/permission.ex:112:24: ArkeAuth.Utils.Permission.permission_dict/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 115 │ defp permission_dict(data, %{data: %{subscription_active: false}}), │ ~~~~ │ └─ lib/arke_auth/utils/permission.ex:115:24: ArkeAuth.Utils.Permission.permission_dict/2 warning: default values for the optional arguments in the private function permission_dict/2 are never used │ 110 │ defp permission_dict(data, member \\ nil) │ ~ │ └─ lib/arke_auth/utils/permission.ex:110:8: ArkeAuth.Utils.Permission (module) warning: default values for the optional arguments in the private function get_permission_dict/3 are never used │ 92 │ defp get_permission_dict(permission_list, member \\ nil, is_public \\ false) do │ ~ │ └─ lib/arke_auth/utils/permission.ex:92:8: ArkeAuth.Utils.Permission (module) warning: unused alias Error │ 19 │ alias Arke.Utils.ErrorGenerator, as: Error │ ~ │ └─ lib/arke_auth/utils/permission.ex:19:3 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/user.ex:24: ArkeAuth.Core.User.handle_insert/4 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/temporary_token.ex:24: ArkeAuth.Core.TemporaryToken.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/user.ex:24 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke_auth/core/user.ex:24 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/user.ex:24 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/user.ex:24 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/user.ex:24 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/user.ex:24: ArkeAuth.Core.User.import_units/5 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/temporary_token.ex:24 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke_auth/core/temporary_token.ex:24 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/temporary_token.ex:24 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/temporary_token.ex:24 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/temporary_token.ex:24 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/temporary_token.ex:24: ArkeAuth.Core.TemporaryToken.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 23 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/otp.ex:23: ArkeAuth.Core.Otp.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/otp.ex:23 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke_auth/core/otp.ex:23 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/otp.ex:23 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/otp.ex:23 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/otp.ex:23 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 23 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/otp.ex:23: ArkeAuth.Core.Otp.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 6 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/reset_password_token.ex:6: ArkeAuth.ResetPasswordToken.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/reset_password_token.ex:6 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke_auth/core/reset_password_token.ex:6 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/reset_password_token.ex:6 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/reset_password_token.ex:6 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/reset_password_token.ex:6 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 6 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/reset_password_token.ex:6: ArkeAuth.ResetPasswordToken.import_units/5 warning: module attribute @impl was not set for function handle_call/3 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager (module) warning: module attribute @impl was not set for function handle_info/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager (module) warning: module attribute @impl was not set for function terminate/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager (module) warning: Tuple.append/2 is deprecated. Use insert_at instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager.call_nodes_manager/3 Generated arke_auth app ==> arke_postgres Compiling 13 files (.ex) warning: variable "args" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 24 │ def start(type, args) do │ ~~~~ │ └─ lib/arke_postgres/application.ex:24:19: ArkePostgres.Application.start/2 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 24 │ def start(type, args) do │ ~~~~ │ └─ lib/arke_postgres/application.ex:24:13: ArkePostgres.Application.start/2 warning: variable "reason" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 34 │ %{message: message, reason: reason} = err │ ~ │ └─ lib/arke_postgres.ex:34:41: ArkePostgres.init/0 warning: variable "code" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 45 │ %{message: message, postgres: %{code: code, message: postgres_message}} = err │ ~ │ └─ lib/arke_postgres.ex:45:51: ArkePostgres.init/0 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 131 │ defp handle_create(proj, arke, unit) do │ ~~~~ │ └─ lib/arke_postgres.ex:131:28: ArkePostgres.handle_create/3 warning: variable "proj" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 131 │ defp handle_create(proj, arke, unit) do │ ~~~~ │ └─ lib/arke_postgres.ex:131:22: ArkePostgres.handle_create/3 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 131 │ defp handle_create(proj, arke, unit) do │ ~~~~ │ └─ lib/arke_postgres.ex:131:34: ArkePostgres.handle_create/3 warning: variable "unit" is unused (there is a variable with the same name in the context, use the pin operator (^) to match on it or prefix this variable with underscore if it is not meant to be used) │ 137 │ {:ok, unit} = handle_update(project, arke, unit) │ ~~~~ │ └─ lib/arke_postgres.ex:137:11: ArkePostgres.update/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 143 │ %{data: data, metadata: metadata} = unit │ ~~~~ │ └─ lib/arke_postgres.ex:143:17: ArkePostgres.handle_update/3 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 169 │ {:ok, unit} = handle_update_key(arke, old_unit, new_unit) │ ~~~~ │ └─ lib/arke_postgres.ex:169:11: ArkePostgres.update_key/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 175 │ %{data: data, metadata: %{project: project} = metadata} = new_unit │ ~~~~ │ └─ lib/arke_postgres.ex:175:17: ArkePostgres.handle_update_key/3 warning: variable "code" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 294 │ %{message: message, postgres: %{code: code, message: postgres_message}} = err │ ~ │ └─ lib/arke_postgres.ex:294:47: ArkePostgres.create_project/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 309 │ def delete_project(%{arke_id: :arke_project, id: id} = unit) do │ ~~~~ │ └─ lib/arke_postgres.ex:309:58: ArkePostgres.delete_project/1 warning: default values for the optional arguments in the private function filter_primary_keys/2 are never used │ 230 │ defp filter_primary_keys( │ ~ │ └─ lib/arke_postgres.ex:230:8: ArkePostgres (module) warning: unused import Ecto.Adapters.SQL.Sandbox │ 20 │ import Ecto.Adapters.SQL.Sandbox │ ~ │ └─ lib/arke_postgres/application.ex:20:3 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 66 │ %{data: data, metadata: %{project: project} = metadata} = unit, │ ~~~~~~~~ │ └─ lib/arke_postgres/arke_unit.ex:66:55: ArkePostgres.ArkeUnit.update_key/4 warning: function pop_map/2 is unused │ 171 │ defp pop_map(data, key) do │ ~ │ └─ lib/arke_postgres/arke_unit.ex:171:8: ArkePostgres.ArkeUnit (module) warning: function pop_datetime/2 is unused │ 166 │ defp pop_datetime(data, key) do │ ~ │ └─ lib/arke_postgres/arke_unit.ex:166:8: ArkePostgres.ArkeUnit (module) warning: module attribute @record_fields was set but never used │ 20 │ @record_fields [:id, :data, :metadata, :inserted_at, :updated_at] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_postgres/arke_unit.ex:20: ArkePostgres.ArkeUnit (module) warning: unused alias ArkeManager │ 16 │ alias Arke.Boundary.{GroupManager, ArkeManager} │ ~ │ └─ lib/arke_postgres.ex:16:3 warning: unused alias GroupManager │ 16 │ alias Arke.Boundary.{GroupManager, ArkeManager} │ ~ │ └─ lib/arke_postgres.ex:16:3 warning: variable "project_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 65 │ def remove_arke_system(metadata, project_id) do │ ~~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:65:36: ArkePostgres.Query.remove_arke_system/2 warning: variable "unit_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 123 │ unit_list = │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:123:5: ArkePostgres.Query.get_project_record/0 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 216 │ defp base_query(%{arke: %{data: %{type: "table"}, id: id} = arke} = _arke_query, action), │ ~~ │ └─ lib/arke_postgres/query.ex:216:57: ArkePostgres.Query.base_query/2 warning: variable "action" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 261 │ defp table_query(%{id: id, data: data} = arke, action) do │ ~~~~~~ │ └─ lib/arke_postgres/query.ex:261:50: ArkePostgres.Query.table_query/2 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 261 │ defp table_query(%{id: id, data: data} = arke, action) do │ ~~~~ │ └─ lib/arke_postgres/query.ex:261:44: ArkePostgres.Query.table_query/2 warning: variable "arke_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 281 │ defp get_arke(project, %{arke_id: arke_id}, arke) when is_atom(arke), │ ~~~~~~~ │ └─ lib/arke_postgres/query.ex:281:37: ArkePostgres.Query.get_arke/3 warning: variable "arke_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 284 │ defp get_arke(project, %{arke_id: arke_id}, arke) when is_binary(arke), │ ~~~~~~~ │ └─ lib/arke_postgres/query.ex:284:37: ArkePostgres.Query.get_arke/3 warning: variable "arke_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 287 │ defp get_arke(_, %{arke_id: arke_id}, arke), do: arke │ ~~~~~~~ │ └─ lib/arke_postgres/query.ex:287:31: ArkePostgres.Query.get_arke/3 warning: variable "clause" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 398 │ defp parameter_condition(clause, parameter, value, operator, negate, logic, join_alias \\ nil) do │ ~~~~~~ │ └─ lib/arke_postgres/query.ex:398:28: ArkePostgres.Query.parameter_condition/7 warning: variable "logic" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 398 │ defp parameter_condition(clause, parameter, value, operator, negate, logic, join_alias \\ nil) do │ ~~~~~ │ └─ lib/arke_postgres/query.ex:398:72: ArkePostgres.Query.parameter_condition/7 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 614 │ defp get_value(%{id: id, arke_id: :string} = _parameter, value) when is_binary(value), do: value │ ~~ │ └─ lib/arke_postgres/query.ex:614:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 615 │ defp get_value(%{id: id, arke_id: :string} = _parameter, value), do: Kernel.inspect(value) │ ~~ │ └─ lib/arke_postgres/query.ex:615:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 617 │ defp get_value(%{id: id, arke_id: :integer} = _parameter, value) when is_number(value), │ ~~ │ └─ lib/arke_postgres/query.ex:617:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 627 │ defp get_value(%{id: id, arke_id: :integer} = parameter, value) when is_list(value), │ ~~ │ └─ lib/arke_postgres/query.ex:627:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 630 │ defp get_value(%{id: id, arke_id: :float} = _parameter, value) when is_number(value), do: value │ ~~ │ └─ lib/arke_postgres/query.ex:630:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 639 │ defp get_value(%{id: id, arke_id: :float} = parameter, value) when is_list(value), │ ~~ │ └─ lib/arke_postgres/query.ex:639:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 642 │ defp get_value(%{id: id, arke_id: :boolean} = _parameter, true), do: true │ ~~ │ └─ lib/arke_postgres/query.ex:642:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 643 │ defp get_value(%{id: id, arke_id: :boolean} = _parameter, "true"), do: true │ ~~ │ └─ lib/arke_postgres/query.ex:643:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 644 │ defp get_value(%{id: id, arke_id: :boolean} = _parameter, "True"), do: true │ ~~ │ └─ lib/arke_postgres/query.ex:644:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 645 │ defp get_value(%{id: id, arke_id: :boolean} = _parameter, 1), do: true │ ~~ │ └─ lib/arke_postgres/query.ex:645:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 646 │ defp get_value(%{id: id, arke_id: :boolean} = _parameter, "1"), do: true │ ~~ │ └─ lib/arke_postgres/query.ex:646:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 647 │ defp get_value(%{id: id, arke_id: :boolean} = _parameter, false), do: false │ ~~ │ └─ lib/arke_postgres/query.ex:647:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 648 │ defp get_value(%{id: id, arke_id: :boolean} = _parameter, "false"), do: false │ ~~ │ └─ lib/arke_postgres/query.ex:648:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 649 │ defp get_value(%{id: id, arke_id: :boolean} = _parameter, "False"), do: false │ ~~ │ └─ lib/arke_postgres/query.ex:649:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 650 │ defp get_value(%{id: id, arke_id: :boolean} = _parameter, 0), do: false │ ~~ │ └─ lib/arke_postgres/query.ex:650:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 651 │ defp get_value(%{id: id, arke_id: :boolean} = _parameter, "0"), do: false │ ~~ │ └─ lib/arke_postgres/query.ex:651:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 677 │ defp get_value(%{id: id, arke_id: :dict} = _parameter, value), do: value │ ~~ │ └─ lib/arke_postgres/query.ex:677:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 678 │ defp get_value(%{id: id, arke_id: :list} = _parameter, value), do: value │ ~~ │ └─ lib/arke_postgres/query.ex:678:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 679 │ defp get_value(%{id: id, arke_id: :link} = _parameter, value), do: value │ ~~ │ └─ lib/arke_postgres/query.ex:679:24: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 680 │ defp get_value(%{id: id, arke_id: :dynamic} = _parameter, value), do: value │ ~~ │ └─ lib/arke_postgres/query.ex:680:24: ArkePostgres.Query.get_value/2 warning: variable "value" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 681 │ defp get_value(%{id: id}, value), do: raise("Parameter(#{id}) value not valid") │ ~~~~~ │ └─ lib/arke_postgres/query.ex:681:29: ArkePostgres.Query.get_value/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 711 │ defp get_nil_query(%{id: id} = _parameter, column, true, _join_alias), │ ~~ │ └─ lib/arke_postgres/query.ex:711:28: ArkePostgres.Query.get_nil_query/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 721 │ defp filter_query_by_operator(parameter, column, value, :eq), │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:721:33: ArkePostgres.Query.filter_query_by_operator/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 724 │ defp filter_query_by_operator(parameter, column, value, :contains), │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:724:33: ArkePostgres.Query.filter_query_by_operator/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 727 │ defp filter_query_by_operator(parameter, column, value, :icontains), │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:727:33: ArkePostgres.Query.filter_query_by_operator/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 730 │ defp filter_query_by_operator(parameter, column, value, :endswith), │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:730:33: ArkePostgres.Query.filter_query_by_operator/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 733 │ defp filter_query_by_operator(parameter, column, value, :iendswith), │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:733:33: ArkePostgres.Query.filter_query_by_operator/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 736 │ defp filter_query_by_operator(parameter, column, value, :startswith), │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:736:33: ArkePostgres.Query.filter_query_by_operator/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 739 │ defp filter_query_by_operator(parameter, column, value, :istartswith), │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:739:33: ArkePostgres.Query.filter_query_by_operator/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 742 │ defp filter_query_by_operator(parameter, column, value, :lte), │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:742:33: ArkePostgres.Query.filter_query_by_operator/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 745 │ defp filter_query_by_operator(parameter, column, value, :lt), do: dynamic([q], ^column < ^value) │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:745:33: ArkePostgres.Query.filter_query_by_operator/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 746 │ defp filter_query_by_operator(parameter, column, value, :gt), do: dynamic([q], ^column > ^value) │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:746:33: ArkePostgres.Query.filter_query_by_operator/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 748 │ defp filter_query_by_operator(parameter, column, value, :gte), │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:748:33: ArkePostgres.Query.filter_query_by_operator/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 751 │ defp filter_query_by_operator(parameter, column, value, :in), │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:751:33: ArkePostgres.Query.filter_query_by_operator/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 754 │ defp filter_query_by_operator(parameter, column, value, _), do: dynamic([q], ^column == ^value) │ ~~~~~~~~~ │ └─ lib/arke_postgres/query.ex:754:33: ArkePostgres.Query.filter_query_by_operator/4 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp get_where_field_by_direction/1" was previously defined (lib/arke_postgres/query.ex:798) │ 809 │ defp get_where_field_by_direction(:parent), │ ~ │ └─ lib/arke_postgres/query.ex:809:8 warning: missing `:on` in join, defaulting to `on: true`. lib/arke_postgres/query.ex:813: ArkePostgres.Query.get_link_query/7 warning: missing `:on` in join, defaulting to `on: true`. lib/arke_postgres/query.ex:838: ArkePostgres.Query.get_link_query/7 warning: this clause cannot match because a previous clause at line 801 matches the same pattern as this clause │ 809 │ defp get_where_field_by_direction(:parent), │ ~ │ └─ lib/arke_postgres/query.ex:809:8 warning: invalid association `parent_id` in schema ArkePostgres.ArkeLink: associated module ArkePostgres.ArkeUnit is not an Ecto schema lib/arke_postgres/tables/arke_link.ex:15: ArkePostgres.ArkeLink (module) warning: invalid association `child_id` in schema ArkePostgres.ArkeLink: associated module ArkePostgres.ArkeUnit is not an Ecto schema lib/arke_postgres/tables/arke_link.ex:15: ArkePostgres.ArkeLink (module) warning: module attribute @timestamps was set but never used │ 20 │ @timestamps ~w[inserted_at updated_at]a │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_postgres/tables/arke_schema.ex:20: ArkePostgres.Tables.ArkeSchema (module) warning: module attribute @timestamps was set but never used │ 20 │ @timestamps ~w[inserted_at updated_at]a │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_postgres/tables/arke_unit.ex:20: ArkePostgres.Tables.ArkeUnit (module) warning: unused alias ArkeManager │ 17 │ alias Arke.Boundary.ArkeManager │ ~ │ └─ lib/mix/tasks/arke_postgres.create_project.ex:17:3 warning: unused alias QueryManager │ 16 │ alias Arke.QueryManager │ ~ │ └─ lib/mix/tasks/arke_postgres.create_project.ex:16:3 warning: invalid association `arke_schema` in schema ArkePostgres.Tables.ArkeSchemaField: associated schema ArkePostgres.ArkeSchema does not exist lib/arke_postgres/tables/arke_schema_field.ex:15: ArkePostgres.Tables.ArkeSchemaField (module) warning: invalid association `arke_field` in schema ArkePostgres.Tables.ArkeSchemaField: associated schema ArkePostgres.ArkeField does not exist lib/arke_postgres/tables/arke_schema_field.ex:15: ArkePostgres.Tables.ArkeSchemaField (module) warning: module attribute @arke_schema_field_fields was set but never used │ 19 │ @arke_schema_field_fields ~w[arke_schema_id arke_parameter_id metadata]a │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_postgres/tables/arke_schema_field.ex:19: ArkePostgres.Tables.ArkeSchemaField (module) warning: unused import Ecto.Changeset │ 17 │ import Ecto.Changeset │ ~ │ └─ lib/arke_postgres/tables/arke_schema_field.ex:17:3 Generated arke_postgres app ==> arke_server Compiling 53 files (.ex) warning: variable "claims" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ with {:ok, claims} <- verify_token(token), │ ~ │ └─ lib/arke_server/oauth/providers/microsoft.ex:27:16: ArkeServer.OAuth.Provider.Microsoft.handle_request/1 warning: variable "err" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 92 │ err -> │ ~ │ └─ lib/arke_server/oauth/providers/google.ex:92:7: ArkeServer.OAuth.Provider.Google.validate_jwt/1 warning: variable "token" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 78 │ defp get_public_key(token) do │ ~~~~~ │ └─ lib/arke_server/oauth/providers/apple.ex:78:24: ArkeServer.OAuth.Provider.Apple.get_public_key/1 warning: unused alias Reference │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/auth_controller_spec.ex:21:3 warning: unused alias Operation │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/oauth_controller_spec.ex:21:3 warning: unused alias Reference │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/oauth_controller_spec.ex:21:3 warning: unused alias Responses │ 20 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/openapi/oauth_controller_spec.ex:20:3 warning: unused alias Operation │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/parameter_controller_spec.ex:21:3 warning: unused alias Reference │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/parameter_controller_spec.ex:21:3 warning: unused alias Responses │ 20 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/openapi/parameter_controller_spec.ex:20:3 warning: unused alias Operation │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/project_controller_spec.ex:21:3 warning: unused alias Reference │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/project_controller_spec.ex:21:3 warning: unused alias Responses │ 20 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/openapi/project_controller_spec.ex:20:3 warning: variable "limit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 25 │ limit = Map.get(conn.query_params, "limit", nil) │ ~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:25:5: ArkeServer.TopologyController.get_node/2 warning: variable "offset" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 24 │ offset = Map.get(conn.query_params, "offset", nil) │ ~~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:24:5: ArkeServer.TopologyController.get_node/2 warning: variable "order" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 26 │ order = Map.get(conn.query_params, "order", []) │ ~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:26:5: ArkeServer.TopologyController.get_node/2 warning: variable "arke_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 80 │ "arke_id" => arke_id, │ ~~~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:80:22: ArkeServer.TopologyController.create_node/2 warning: variable "arke_id_two" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 81 │ "arke_id_two" => arke_id_two, │ ~~~~~~~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:81:26: ArkeServer.TopologyController.create_node/2 warning: unused alias Operation │ 31 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/struct_controller.ex:31:3 warning: unused alias Reference │ 31 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/struct_controller.ex:31:3 warning: unused alias Responses │ 29 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/controllers/struct_controller.ex:29:3 warning: unused alias LinkManager │ 26 │ alias Arke.{QueryManager, LinkManager, StructManager} │ ~ │ └─ lib/arke_server/controllers/project_controller.ex:26:3 warning: unused alias Operation │ 18 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/topology_controller.ex:18:3 warning: unused alias Reference │ 18 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/topology_controller.ex:18:3 warning: unused alias Responses │ 16 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/controllers/topology_controller.ex:16:3 warning: variable "limit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 37 │ limit = Map.get(conn.query_params, "limit", 100) │ ~~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:37:5: ArkeServer.ParameterController.get_parameter_value/2 warning: variable "offset" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 36 │ offset = Map.get(conn.query_params, "offset", 0) │ ~~~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:36:5: ArkeServer.ParameterController.get_parameter_value/2 warning: variable "order" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 38 │ order = Map.get(conn.query_params, "order", []) │ ~~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:38:5: ArkeServer.ParameterController.get_parameter_value/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 34 │ parameter = ParameterManager.get(parameter_id, project) │ ~~~~~~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:34:5: ArkeServer.ParameterController.get_parameter_value/2 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 31 │ unit = conn.assigns[:unit] │ ~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:31:5: ArkeServer.ParameterController.get_parameter_value/2 warning: variable "permission" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 39 │ permission = conn.assigns[:permission_filter] || %{filter: nil} │ ~~~~~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:39:5: ArkeServer.GroupController.call_group_function/2 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 89 │ {:error, msg} -> │ ~ │ └─ lib/arke_server/controllers/group_controller.ex:89:16: ArkeServer.GroupController.get_arke/2 warning: variable "limit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 105 │ limit = Map.get(conn.query_params, "limit", nil) │ ~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:105:5: ArkeServer.GroupController.get_unit/2 warning: variable "offset" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 104 │ offset = Map.get(conn.query_params, "offset", nil) │ ~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:104:5: ArkeServer.GroupController.get_unit/2 warning: variable "order" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 106 │ order = Map.get(conn.query_params, "order", []) │ ~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:106:5: ArkeServer.GroupController.get_unit/2 warning: variable "load_files" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 140 │ load_files = Map.get(conn.query_params, "load_files", "false") == "true" │ ~~~~~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:140:5: ArkeServer.GroupController.unit_detail/2 warning: variable "load_links" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 138 │ load_links = Map.get(conn.query_params, "load_links", "false") == "true" │ ~~~~~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:138:5: ArkeServer.GroupController.unit_detail/2 warning: variable "load_values" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 139 │ load_values = Map.get(conn.query_params, "load_values", "false") == "true" │ ~~~~~~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:139:5: ArkeServer.GroupController.unit_detail/2 warning: variable "limit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 114 │ limit = Map.get(conn.query_params, "limit", nil) │ ~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:114:5: ArkeServer.ArkeController.get_all_unit/2 warning: variable "offset" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 113 │ offset = Map.get(conn.query_params, "offset", nil) │ ~~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:113:5: ArkeServer.ArkeController.get_all_unit/2 warning: variable "order" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 115 │ order = Map.get(conn.query_params, "order", []) │ ~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:115:5: ArkeServer.ArkeController.get_all_unit/2 warning: variable "permission" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 200 │ permission = conn.assigns[:permission_filter] || %{filter: nil} │ ~~~~~~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:200:5: ArkeServer.ArkeController.call_arke_function/2 warning: variable "limit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 279 │ limit = Map.get(conn.query_params, "limit", nil) │ ~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:279:5: ArkeServer.ArkeController.get_groups/2 warning: variable "offset" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 278 │ offset = Map.get(conn.query_params, "offset", nil) │ ~~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:278:5: ArkeServer.ArkeController.get_groups/2 warning: variable "order" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 280 │ order = Map.get(conn.query_params, "order", []) │ ~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:280:5: ArkeServer.ArkeController.get_groups/2 warning: unused alias LinkManager │ 24 │ alias Arke.{QueryManager, LinkManager, StructManager} │ ~ │ └─ lib/arke_server/controllers/group_controller.ex:24:3 warning: unused alias Operation │ 32 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/group_controller.ex:32:3 warning: unused alias Reference │ 32 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/group_controller.ex:32:3 warning: unused alias Responses │ 30 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/controllers/group_controller.ex:30:3 warning: variable "username" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 111 │ "arke_system_user" => %{"username" => username}, │ ~~~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:111:50: ArkeServer.AuthController.handle_signup_mode/5 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 248 │ {:error, type} -> │ ~ │ └─ lib/arke_server/controllers/auth_controller.ex:248:20: ArkeServer.AuthController.signin/2 warning: variable "params" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 228 │ def signin(conn, %{"token" => token} = params) do │ ~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:228:42: ArkeServer.AuthController.signin/2 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 287 │ {:error, type} -> │ ~ │ └─ lib/arke_server/controllers/auth_controller.ex:287:28: ArkeServer.AuthController.signin/2 warning: variable "params" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 254 │ def signin(conn, %{"auth_token" => auth_token} = params) do │ ~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:254:52: ArkeServer.AuthController.signin/2 warning: clauses with the same name and arity (number of arguments) should be grouped together, "def signin/2" was previously defined (lib/arke_server/controllers/auth_controller.ex:228) │ 319 │ def signin(conn, %{"username" => username, "password" => password} = params) do │ ~ │ └─ lib/arke_server/controllers/auth_controller.ex:319:7 warning: variable "password" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 410 │ %{"username" => username, "password" => password, "otp" => otp} = params, │ ~~~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:410:50: ArkeServer.AuthController.handle_signin_mode/4 warning: variable "username" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 410 │ %{"username" => username, "password" => password, "otp" => otp} = params, │ ~~~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:410:26: ArkeServer.AuthController.handle_signin_mode/4 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 663 │ %{metadata: %{project: project}} = member, │ ~~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:663:33: ArkeServer.AuthController.handle_recover_password_mode/4 warning: unused alias LinkManager │ 25 │ alias Arke.{QueryManager, LinkManager, StructManager} │ ~ │ └─ lib/arke_server/controllers/arke_controller.ex:25:3 warning: unused alias Operation │ 33 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/arke_controller.ex:33:3 warning: unused alias Permission │ 29 │ alias ArkeServer.Utils.{QueryFilters,QueryOrder, QueryProcessor,Permission} │ ~ │ └─ lib/arke_server/controllers/arke_controller.ex:29:3 warning: unused alias QueryOrder │ 29 │ alias ArkeServer.Utils.{QueryFilters,QueryOrder, QueryProcessor,Permission} │ ~ │ └─ lib/arke_server/controllers/arke_controller.ex:29:3 warning: unused alias Reference │ 33 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/arke_controller.ex:33:3 warning: unused alias Responses │ 31 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/controllers/arke_controller.ex:31:3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 58 │ project = conn.assigns[:arke_project] │ ~~~~~~~ │ └─ lib/arke_server/controllers/unit_controller.ex:58:5: ArkeServer.UnitController.update/2 warning: unused alias ArkeManager │ 23 │ alias Arke.Boundary.{ArkeManager, ParameterManager} │ ~ │ └─ lib/arke_server/controllers/unit_controller.ex:23:3 warning: unused alias LinkManager │ 22 │ alias Arke.{QueryManager, LinkManager, StructManager} │ ~ │ └─ lib/arke_server/controllers/unit_controller.ex:22:3 warning: unused alias Operation │ 29 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/unit_controller.ex:29:3 warning: unused alias ParameterManager │ 23 │ alias Arke.Boundary.{ArkeManager, ParameterManager} │ ~ │ └─ lib/arke_server/controllers/unit_controller.ex:23:3 warning: unused alias Reference │ 29 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/unit_controller.ex:29:3 warning: unused alias Responses │ 28 │ alias(ArkeServer.Openapi.Responses) │ ~ │ └─ lib/arke_server/controllers/unit_controller.ex:28:3 warning: this clause cannot match because a previous clause at line 313 always matches │ 314 │ _ -> Error.create(:auth, "member not found") │ ~ │ └─ lib/arke_server/controllers/auth_controller.ex:314:9 warning: this clause for handle_change_password_mode/4 cannot match because a previous clause at line 571 always matches │ 574 │ defp handle_change_password_mode(conn, _, _, _), do: auth_not_active(conn) │ ~ │ └─ lib/arke_server/controllers/auth_controller.ex:574:8 warning: variable "v" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 88 │ error_filters = Enum.filter(filters, fn {k, v} -> k == :error end) │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:88:51: ArkeServer.Plugs.BuildFilters.get_conditions/5 warning: variable "v" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 93 │ filters = Enum.filter(filters, fn {k, v} -> k == :ok end) |> Enum.map(fn {k, v} -> v end) │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:93:47: ArkeServer.Plugs.BuildFilters.get_conditions/5 warning: variable "k" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 93 │ filters = Enum.filter(filters, fn {k, v} -> k == :ok end) |> Enum.map(fn {k, v} -> v end) │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:93:83: ArkeServer.Plugs.BuildFilters.get_conditions/5 warning: variable "k" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 91 │ {:error, error_filters |> Enum.map(fn {k, v} -> v end)} │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:91:48: ArkeServer.Plugs.BuildFilters.get_conditions/5 warning: function remove_wrap_parentheses/1 is unused │ 33 │ defp remove_wrap_parentheses(str) do │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:33:8: ArkeServer.Plugs.BuildFilters (module) warning: function remove_match/2 is unused │ 130 │ defp remove_match(match, str) do │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:130:8: ArkeServer.Plugs.BuildFilters (module) warning: function parse_value/2 is unused │ 134 │ defp parse_value(val, :in) do │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:134:8: ArkeServer.Plugs.BuildFilters (module) warning: function is_negate_operator/1 is unused │ 146 │ defp is_negate_operator(:not), do: true │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:146:8: ArkeServer.Plugs.BuildFilters (module) warning: function is_logic_operator/1 is unused │ 142 │ defp is_logic_operator(:or), do: true │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:142:8: ArkeServer.Plugs.BuildFilters (module) warning: function get_operator/1 is unused │ 149 │ defp get_operator("or(" <> _rest), do: {:ok, :or} │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:149:8: ArkeServer.Plugs.BuildFilters (module) warning: function get_conditions/5 is unused │ 37 │ defp get_conditions( │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:37:8: ArkeServer.Plugs.BuildFilters (module) warning: function get_condition/5 is unused │ 118 │ defp get_condition(conn, parameter_id, operator, value, negate) do │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:118:8: ArkeServer.Plugs.BuildFilters (module) warning: function format_parameter_and_value/4 is unused │ 99 │ defp format_parameter_and_value(conn, data, operator, negate \\ false) │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:99:8: ArkeServer.Plugs.BuildFilters (module) warning: unused alias Validator │ 18 │ alias Arke.Validator │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:18:3 warning: variable "parameter_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 34 │ def call(%Plug.Conn{path_params: %{"parameter_id" => parameter_id}} = conn, _default) do │ ~~~~~~~~~~~~ │ └─ lib/arke_server/plugs/permission.ex:34:56: ArkeServer.Plugs.Permission.call/2 warning: variable "default" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 40 │ def call(%Plug.Conn{method: method, request_path: req_path} = conn, default) do │ ~~~~~~~ │ └─ lib/arke_server/plugs/permission.ex:40:71: ArkeServer.Plugs.Permission.call/2 warning: variable "method" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 40 │ def call(%Plug.Conn{method: method, request_path: req_path} = conn, default) do │ ~~~~~~ │ └─ lib/arke_server/plugs/permission.ex:40:31: ArkeServer.Plugs.Permission.call/2 warning: variable "default" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 54 │ def call(conn, default), do: conn │ ~~~~~~~ │ └─ lib/arke_server/plugs/permission.ex:54:18: ArkeServer.Plugs.Permission.call/2 warning: variable "conn" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 118 │ defp get_permission_filter(conn, %{filter: nil} = permission), do: permission │ ~~~~ │ └─ lib/arke_server/plugs/permission.ex:118:30: ArkeServer.Plugs.Permission.get_permission_filter/2 warning: unused import Plug.Conn │ 25 │ import Plug.Conn │ ~ │ └─ lib/arke_server/response_manager.ex:25:3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 16 │ def create_user(%{metadata: %{project: project}} = member) do │ ~~~~~~~ │ └─ lib/arke_server/utils/onesignal.ex:16:42: ArkeServer.Utils.OneSignal.create_user/1 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 66 │ defp call_api(method, path, body, opts \\ []) do │ ~~~~ │ └─ lib/arke_server/utils/onesignal.ex:66:37: ArkeServer.Utils.OneSignal.call_api/4 warning: router paths should begin with a forward slash, got: "ready" (phoenix 1.7.21) lib/phoenix/router/scope.ex:113: Phoenix.Router.Scope.validate_path/1 (phoenix 1.7.21) lib/phoenix/router/scope.ex:37: Phoenix.Router.Scope.route/8 lib/arke_server/router.ex:91: (module) (elixir 1.19.4) src/elixir_compiler.erl:81: :elixir_compiler.dispatch/4 (elixir 1.19.4) src/elixir_compiler.erl:56: :elixir_compiler.compile/4 (elixir 1.19.4) src/elixir_module.erl:476: :elixir_module.eval_form/7 warning: router paths should begin with a forward slash, got: "live" (phoenix 1.7.21) lib/phoenix/router/scope.ex:113: Phoenix.Router.Scope.validate_path/1 (phoenix 1.7.21) lib/phoenix/router/scope.ex:37: Phoenix.Router.Scope.route/8 lib/arke_server/router.ex:92: (module) (elixir 1.19.4) src/elixir_compiler.erl:81: :elixir_compiler.dispatch/4 (elixir 1.19.4) src/elixir_compiler.erl:56: :elixir_compiler.compile/4 (elixir 1.19.4) src/elixir_module.erl:476: :elixir_module.eval_form/7 warning: router paths should begin with a forward slash, got: "start" (phoenix 1.7.21) lib/phoenix/router/scope.ex:113: Phoenix.Router.Scope.validate_path/1 (phoenix 1.7.21) lib/phoenix/router/scope.ex:37: Phoenix.Router.Scope.route/8 lib/arke_server/router.ex:93: (module) (elixir 1.19.4) src/elixir_compiler.erl:81: :elixir_compiler.dispatch/4 (elixir 1.19.4) src/elixir_compiler.erl:56: :elixir_compiler.compile/4 (elixir 1.19.4) src/elixir_module.erl:476: :elixir_module.eval_form/7 warning: unused alias Endpoint │ 13 │ alias ArkeServer.{Endpoint, Router} │ ~ │ └─ lib/openapi/openapispec.ex:13:3 warning: variable "v" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 17 │ Map.filter(responses, fn {k, v} -> k not in exclude end) │ ~ │ └─ lib/openapi/schemas/responses.ex:17:34: ArkeServer.Openapi.Responses.get_responses/1 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def auth_error(conn, {type, reason}, opts) do │ ~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:27:40: ArkeServer.ErrorHandlers.Auth.auth_error/3 warning: variable "reason" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def auth_error(conn, {type, reason}, opts) do │ ~~~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:27:31: ArkeServer.ErrorHandlers.Auth.auth_error/3 warning: variable "v" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 33 │ with [_] <- Enum.filter(headers, fn {k, v} -> k == "authorization" end) do │ ~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:33:45: ArkeServer.ErrorHandlers.Auth.get_message/2 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 52 │ def auth_error(conn, {type, reason}, opts) do │ ~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:52:40: ArkeServer.ErrorHandlers.SSOAuth.auth_error/3 warning: variable "reason" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 52 │ def auth_error(conn, {type, reason}, opts) do │ ~~~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:52:31: ArkeServer.ErrorHandlers.SSOAuth.auth_error/3 warning: variable "v" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 58 │ with [_] <- Enum.filter(headers, fn {k, v} -> k == "authorization" end) do │ ~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:58:45: ArkeServer.ErrorHandlers.SSOAuth.get_message/2 warning: unused import Plug.Conn │ 48 │ import Plug.Conn │ ~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:48:3 warning: @behaviour ArkeAuth.Guardian.Plug.ErrorHandler does not exist (in module ArkeServer.ErrorHandlers.Auth) │ 18 │ defmodule ArkeServer.ErrorHandlers.Auth do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:18: ArkeServer.ErrorHandlers.Auth (module) warning: @behaviour ArkeAuth.SSOGuardian.Plug.ErrorHandler does not exist (in module ArkeServer.ErrorHandlers.SSOAuth) │ 43 │ defmodule ArkeServer.ErrorHandlers.SSOAuth do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:43: ArkeServer.ErrorHandlers.SSOAuth (module) warning: got "@impl ArkeAuth.Guardian.Plug.ErrorHandler" for function auth_error/3 but this behaviour does not specify such callback. There are no known callbacks, please specify the proper @behaviour and make sure it defines callbacks │ 27 │ def auth_error(conn, {type, reason}, opts) do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:27: ArkeServer.ErrorHandlers.Auth (module) warning: got "@impl ArkeAuth.SSOGuardian.Plug.ErrorHandler" for function auth_error/3 but this behaviour does not specify such callback. There are no known callbacks, please specify the proper @behaviour and make sure it defines callbacks │ 52 │ def auth_error(conn, {type, reason}, opts) do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:52: ArkeServer.ErrorHandlers.SSOAuth (module) warning: incompatible types given to run/2: run(conn, {provider, to_options}) given types: ( dynamic(), -dynamic( {term(), %{ options: term(), request_path: term(), request_port: term(), request_scheme: term(), strategy: term(), strategy_name: term() }} )- ) but expected one of: dynamic(), dynamic({term(), :run_request, term()}) where "conn" was given the type: # type: dynamic() # from: lib/arke_server/plugs/oauth.ex:66:19 conn where "provider" was given the type: # type: dynamic() # from: lib/arke_server/plugs/oauth.ex:66:40 {provider, :run_request, provider_options} where "to_options" was given the type: # type: dynamic(%{ options: term(), request_path: term(), request_port: term(), request_scheme: term(), strategy: term(), strategy_name: term() }) # from: lib/arke_server/plugs/oauth.ex:70:16 to_options = build_strategy_options(base_path, {provider_name, {provider, provider_options}}) typing violation found at: │ 72 │ run(conn, {provider, to_options}) │ ~ │ └─ lib/arke_server/plugs/oauth.ex:72:5: ArkeServer.Plugs.OAuth.run_request/4 warning: this clause of defp get_operation_list/1 is never used │ 23 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.AuthControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:23: ArkeServer.AuthController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.AuthControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.AuthControllerSpec # from: lib/arke_server/controllers/auth_controller.ex:23 apimodule = ArkeServer.Openapi.AuthControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 23 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.AuthControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:23: ArkeServer.AuthController.open_api_operation/1 warning: incompatible types given to handle_recover_password/3: handle_recover_password(conn, member, params) given types: dynamic(), dynamic(), -dynamic(map())- but expected one of: dynamic(), dynamic(), binary() where "conn" was given the type: # type: dynamic() # from: lib/arke_server/controllers/auth_controller.ex:596:24 conn where "member" was given the type: # type: dynamic() # from: lib/arke_server/controllers/auth_controller.ex:605:7 member where "params" was given the type: # type: dynamic(map()) # from: lib/arke_server/controllers/auth_controller.ex:596:50 %{"email" => email} = params typing violation found at: │ 608 │ handle_recover_password(conn, member, params) │ ~ │ └─ lib/arke_server/controllers/auth_controller.ex:608:13: ArkeServer.AuthController.recover_password/2 warning: this clause of defp get_operation_list/1 is never used │ 19 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.UnitControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/unit_controller.ex:19: ArkeServer.UnitController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.UnitControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.UnitControllerSpec # from: lib/arke_server/controllers/unit_controller.ex:19 apimodule = ArkeServer.Openapi.UnitControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 19 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.UnitControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/unit_controller.ex:19: ArkeServer.UnitController.open_api_operation/1 warning: this clause of defp get_operation_list/1 is never used │ 23 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.ArkeControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:23: ArkeServer.ArkeController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.ArkeControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.ArkeControllerSpec # from: lib/arke_server/controllers/arke_controller.ex:23 apimodule = ArkeServer.Openapi.ArkeControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 23 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.ArkeControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:23: ArkeServer.ArkeController.open_api_operation/1 warning: this clause of defp get_operation_list/1 is never used │ 22 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.GroupControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:22: ArkeServer.GroupController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.GroupControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.GroupControllerSpec # from: lib/arke_server/controllers/group_controller.ex:22 apimodule = ArkeServer.Openapi.GroupControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 22 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.GroupControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:22: ArkeServer.GroupController.open_api_operation/1 warning: this clause of defp get_operation_list/1 is never used │ 24 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.OAuthControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/oauth_controller.ex:24: ArkeServer.OAuthController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.OAuthControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.OAuthControllerSpec # from: lib/arke_server/controllers/oauth_controller.ex:24 apimodule = ArkeServer.Openapi.OAuthControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 24 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.OAuthControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/oauth_controller.ex:24: ArkeServer.OAuthController.open_api_operation/1 warning: this clause of defp get_operation_list/1 is never used │ 19 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.ParameterControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:19: ArkeServer.ParameterController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.ParameterControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.ParameterControllerSpec # from: lib/arke_server/controllers/parameter_controller.ex:19 apimodule = ArkeServer.Openapi.ParameterControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 19 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.ParameterControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:19: ArkeServer.ParameterController.open_api_operation/1 warning: this clause of defp get_operation_list/1 is never used │ 9 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.TopologyControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:9: ArkeServer.TopologyController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.TopologyControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.TopologyControllerSpec # from: lib/arke_server/controllers/topology_controller.ex:9 apimodule = ArkeServer.Openapi.TopologyControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 9 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.TopologyControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:9: ArkeServer.TopologyController.open_api_operation/1 warning: this clause of defp get_operation_list/1 is never used │ 23 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.ProjectControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/project_controller.ex:23: ArkeServer.ProjectController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.ProjectControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.ProjectControllerSpec # from: lib/arke_server/controllers/project_controller.ex:23 apimodule = ArkeServer.Openapi.ProjectControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 23 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.ProjectControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/project_controller.ex:23: ArkeServer.ProjectController.open_api_operation/1 warning: this clause of defp get_operation_list/1 is never used │ 22 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.StructControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/struct_controller.ex:22: ArkeServer.StructController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.StructControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.StructControllerSpec # from: lib/arke_server/controllers/struct_controller.ex:22 apimodule = ArkeServer.Openapi.StructControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 22 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.StructControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/struct_controller.ex:22: ArkeServer.StructController.open_api_operation/1 warning: comparison with structs found: Timex.from_unix(Map.get(decoded, "exp", 0)) > Arke.Utils.DatetimeHandler.now(:datetime) given types: dynamic(%DateTime{}) > dynamic() where "decoded" was given the type: # type: dynamic() # from: lib/arke_server/oauth/providers/apple.ex:83:14 decoded = token.fields Comparison operators (>, <, >=, <=, min, and max) perform structural and not semantic comparison. Comparing with a struct won't give meaningful results. Structs that can be compared typically define a compare/2 function within their modules that can be used for semantic comparison. typing violation found at: │ 92 │ Timex.from_unix(Map.get(decoded, "exp", 0)) > DatetimeHandler.now(:datetime) do │ ~ │ └─ lib/arke_server/oauth/providers/apple.ex:92:59: ArkeServer.OAuth.Provider.Apple.validate_jwt/2 warning: UeberauthApple.generate_client_secret/1 is undefined (module UeberauthApple is not available or is yet to be defined). Make sure the module name is correct and has been specified in full (or that an alias has been defined) │ 7 │ UeberauthApple.generate_client_secret(%{ │ ~ │ └─ lib/arke_server/utils/apple_secret.ex:7:20: ArkeServer.Utils.Apple.client_secret/1 Generated arke_server app ==> nerves_compatibility_test Compiling 2 files (.ex) Generated nerves_compatibility_test app |nerves| Building OTP Release... * [Nerves] validating vm.args * skipping runtime configuration (config/runtime.exs not found) * creating _build/rpi4/rel/nerves_compatibility_test/releases/0.1.0/vm.args Updating base firmware image with Erlang release... Copying rootfs_overlay: /work/proj/_build/rpi4/nerves/rootfs_overlay Copying rootfs_overlay: /work/proj/rootfs_overlay Building /work/proj/_build/rpi4/nerves/images/nerves_compatibility_test.fw... Firmware UUID: loop-invest (7e8082ac-2064-5794-8efa-e1c64558643c) Firmware built successfully! 🎉 Now you may install it to a MicroSD card using `mix burn` or upload it to a device with `mix upload` or `mix firmware.gen.script`+`./upload.sh`. * Cleaning arke_server ==> nerves ==> nerves_compatibility_test Nerves environment MIX_TARGET: rpi4 MIX_ENV: prod ==> arke_server Compiling 53 files (.ex) warning: unused alias Reference │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/auth_controller_spec.ex:21:3 warning: variable "claims" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ with {:ok, claims} <- verify_token(token), │ ~ │ └─ lib/arke_server/oauth/providers/microsoft.ex:27:16: ArkeServer.OAuth.Provider.Microsoft.handle_request/1 warning: variable "err" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 92 │ err -> │ ~ │ └─ lib/arke_server/oauth/providers/google.ex:92:7: ArkeServer.OAuth.Provider.Google.validate_jwt/1 warning: variable "token" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 78 │ defp get_public_key(token) do │ ~~~~~ │ └─ lib/arke_server/oauth/providers/apple.ex:78:24: ArkeServer.OAuth.Provider.Apple.get_public_key/1 warning: unused alias Operation │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/oauth_controller_spec.ex:21:3 warning: unused alias Reference │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/oauth_controller_spec.ex:21:3 warning: unused alias Responses │ 20 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/openapi/oauth_controller_spec.ex:20:3 warning: unused alias Operation │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/parameter_controller_spec.ex:21:3 warning: unused alias Reference │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/parameter_controller_spec.ex:21:3 warning: unused alias Responses │ 20 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/openapi/parameter_controller_spec.ex:20:3 warning: unused alias Operation │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/project_controller_spec.ex:21:3 warning: unused alias Reference │ 21 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/openapi/project_controller_spec.ex:21:3 warning: unused alias Responses │ 20 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/openapi/project_controller_spec.ex:20:3 warning: variable "limit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 25 │ limit = Map.get(conn.query_params, "limit", nil) │ ~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:25:5: ArkeServer.TopologyController.get_node/2 warning: variable "offset" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 24 │ offset = Map.get(conn.query_params, "offset", nil) │ ~~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:24:5: ArkeServer.TopologyController.get_node/2 warning: variable "order" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 26 │ order = Map.get(conn.query_params, "order", []) │ ~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:26:5: ArkeServer.TopologyController.get_node/2 warning: variable "arke_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 80 │ "arke_id" => arke_id, │ ~~~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:80:22: ArkeServer.TopologyController.create_node/2 warning: variable "arke_id_two" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 81 │ "arke_id_two" => arke_id_two, │ ~~~~~~~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:81:26: ArkeServer.TopologyController.create_node/2 warning: unused alias Operation │ 31 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/struct_controller.ex:31:3 warning: unused alias Reference │ 31 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/struct_controller.ex:31:3 warning: unused alias Responses │ 29 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/controllers/struct_controller.ex:29:3 warning: unused alias Operation │ 18 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/topology_controller.ex:18:3 warning: unused alias Reference │ 18 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/topology_controller.ex:18:3 warning: unused alias Responses │ 16 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/controllers/topology_controller.ex:16:3 warning: unused alias LinkManager │ 26 │ alias Arke.{QueryManager, LinkManager, StructManager} │ ~ │ └─ lib/arke_server/controllers/project_controller.ex:26:3 warning: variable "limit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 37 │ limit = Map.get(conn.query_params, "limit", 100) │ ~~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:37:5: ArkeServer.ParameterController.get_parameter_value/2 warning: variable "offset" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 36 │ offset = Map.get(conn.query_params, "offset", 0) │ ~~~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:36:5: ArkeServer.ParameterController.get_parameter_value/2 warning: variable "order" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 38 │ order = Map.get(conn.query_params, "order", []) │ ~~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:38:5: ArkeServer.ParameterController.get_parameter_value/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 34 │ parameter = ParameterManager.get(parameter_id, project) │ ~~~~~~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:34:5: ArkeServer.ParameterController.get_parameter_value/2 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 31 │ unit = conn.assigns[:unit] │ ~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:31:5: ArkeServer.ParameterController.get_parameter_value/2 warning: variable "limit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 114 │ limit = Map.get(conn.query_params, "limit", nil) │ ~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:114:5: ArkeServer.ArkeController.get_all_unit/2 warning: variable "offset" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 113 │ offset = Map.get(conn.query_params, "offset", nil) │ ~~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:113:5: ArkeServer.ArkeController.get_all_unit/2 warning: variable "order" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 115 │ order = Map.get(conn.query_params, "order", []) │ ~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:115:5: ArkeServer.ArkeController.get_all_unit/2 warning: variable "permission" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 200 │ permission = conn.assigns[:permission_filter] || %{filter: nil} │ ~~~~~~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:200:5: ArkeServer.ArkeController.call_arke_function/2 warning: variable "limit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 279 │ limit = Map.get(conn.query_params, "limit", nil) │ ~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:279:5: ArkeServer.ArkeController.get_groups/2 warning: variable "offset" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 278 │ offset = Map.get(conn.query_params, "offset", nil) │ ~~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:278:5: ArkeServer.ArkeController.get_groups/2 warning: variable "order" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 280 │ order = Map.get(conn.query_params, "order", []) │ ~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:280:5: ArkeServer.ArkeController.get_groups/2 warning: variable "username" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 111 │ "arke_system_user" => %{"username" => username}, │ ~~~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:111:50: ArkeServer.AuthController.handle_signup_mode/5 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 248 │ {:error, type} -> │ ~ │ └─ lib/arke_server/controllers/auth_controller.ex:248:20: ArkeServer.AuthController.signin/2 warning: variable "params" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 228 │ def signin(conn, %{"token" => token} = params) do │ ~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:228:42: ArkeServer.AuthController.signin/2 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 287 │ {:error, type} -> │ ~ │ └─ lib/arke_server/controllers/auth_controller.ex:287:28: ArkeServer.AuthController.signin/2 warning: variable "params" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 254 │ def signin(conn, %{"auth_token" => auth_token} = params) do │ ~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:254:52: ArkeServer.AuthController.signin/2 warning: clauses with the same name and arity (number of arguments) should be grouped together, "def signin/2" was previously defined (lib/arke_server/controllers/auth_controller.ex:228) │ 319 │ def signin(conn, %{"username" => username, "password" => password} = params) do │ ~ │ └─ lib/arke_server/controllers/auth_controller.ex:319:7 warning: variable "password" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 410 │ %{"username" => username, "password" => password, "otp" => otp} = params, │ ~~~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:410:50: ArkeServer.AuthController.handle_signin_mode/4 warning: variable "username" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 410 │ %{"username" => username, "password" => password, "otp" => otp} = params, │ ~~~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:410:26: ArkeServer.AuthController.handle_signin_mode/4 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 663 │ %{metadata: %{project: project}} = member, │ ~~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:663:33: ArkeServer.AuthController.handle_recover_password_mode/4 warning: unused alias LinkManager │ 25 │ alias Arke.{QueryManager, LinkManager, StructManager} │ ~ │ └─ lib/arke_server/controllers/arke_controller.ex:25:3 warning: unused alias Operation │ 33 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/arke_controller.ex:33:3 warning: unused alias Permission │ 29 │ alias ArkeServer.Utils.{QueryFilters,QueryOrder, QueryProcessor,Permission} │ ~ │ └─ lib/arke_server/controllers/arke_controller.ex:29:3 warning: unused alias QueryOrder │ 29 │ alias ArkeServer.Utils.{QueryFilters,QueryOrder, QueryProcessor,Permission} │ ~ │ └─ lib/arke_server/controllers/arke_controller.ex:29:3 warning: unused alias Reference │ 33 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/arke_controller.ex:33:3 warning: unused alias Responses │ 31 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/controllers/arke_controller.ex:31:3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 58 │ project = conn.assigns[:arke_project] │ ~~~~~~~ │ └─ lib/arke_server/controllers/unit_controller.ex:58:5: ArkeServer.UnitController.update/2 warning: unused alias ArkeManager │ 23 │ alias Arke.Boundary.{ArkeManager, ParameterManager} │ ~ │ └─ lib/arke_server/controllers/unit_controller.ex:23:3 warning: unused alias LinkManager │ 22 │ alias Arke.{QueryManager, LinkManager, StructManager} │ ~ │ └─ lib/arke_server/controllers/unit_controller.ex:22:3 warning: unused alias Operation │ 29 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/unit_controller.ex:29:3 warning: unused alias ParameterManager │ 23 │ alias Arke.Boundary.{ArkeManager, ParameterManager} │ ~ │ └─ lib/arke_server/controllers/unit_controller.ex:23:3 warning: unused alias Reference │ 29 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/unit_controller.ex:29:3 warning: unused alias Responses │ 28 │ alias(ArkeServer.Openapi.Responses) │ ~ │ └─ lib/arke_server/controllers/unit_controller.ex:28:3 warning: variable "permission" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 39 │ permission = conn.assigns[:permission_filter] || %{filter: nil} │ ~~~~~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:39:5: ArkeServer.GroupController.call_group_function/2 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 89 │ {:error, msg} -> │ ~ │ └─ lib/arke_server/controllers/group_controller.ex:89:16: ArkeServer.GroupController.get_arke/2 warning: variable "limit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 105 │ limit = Map.get(conn.query_params, "limit", nil) │ ~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:105:5: ArkeServer.GroupController.get_unit/2 warning: variable "offset" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 104 │ offset = Map.get(conn.query_params, "offset", nil) │ ~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:104:5: ArkeServer.GroupController.get_unit/2 warning: variable "order" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 106 │ order = Map.get(conn.query_params, "order", []) │ ~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:106:5: ArkeServer.GroupController.get_unit/2 warning: variable "load_files" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 140 │ load_files = Map.get(conn.query_params, "load_files", "false") == "true" │ ~~~~~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:140:5: ArkeServer.GroupController.unit_detail/2 warning: variable "load_links" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 138 │ load_links = Map.get(conn.query_params, "load_links", "false") == "true" │ ~~~~~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:138:5: ArkeServer.GroupController.unit_detail/2 warning: variable "load_values" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 139 │ load_values = Map.get(conn.query_params, "load_values", "false") == "true" │ ~~~~~~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:139:5: ArkeServer.GroupController.unit_detail/2 warning: unused alias LinkManager │ 24 │ alias Arke.{QueryManager, LinkManager, StructManager} │ ~ │ └─ lib/arke_server/controllers/group_controller.ex:24:3 warning: unused alias Operation │ 32 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/group_controller.ex:32:3 warning: unused alias Reference │ 32 │ alias OpenApiSpex.{Operation, Reference} │ ~ │ └─ lib/arke_server/controllers/group_controller.ex:32:3 warning: unused alias Responses │ 30 │ alias ArkeServer.Openapi.Responses │ ~ │ └─ lib/arke_server/controllers/group_controller.ex:30:3 warning: this clause cannot match because a previous clause at line 313 always matches │ 314 │ _ -> Error.create(:auth, "member not found") │ ~ │ └─ lib/arke_server/controllers/auth_controller.ex:314:9 warning: this clause for handle_change_password_mode/4 cannot match because a previous clause at line 571 always matches │ 574 │ defp handle_change_password_mode(conn, _, _, _), do: auth_not_active(conn) │ ~ │ └─ lib/arke_server/controllers/auth_controller.ex:574:8 warning: variable "v" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 88 │ error_filters = Enum.filter(filters, fn {k, v} -> k == :error end) │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:88:51: ArkeServer.Plugs.BuildFilters.get_conditions/5 warning: variable "v" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 93 │ filters = Enum.filter(filters, fn {k, v} -> k == :ok end) |> Enum.map(fn {k, v} -> v end) │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:93:47: ArkeServer.Plugs.BuildFilters.get_conditions/5 warning: variable "k" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 93 │ filters = Enum.filter(filters, fn {k, v} -> k == :ok end) |> Enum.map(fn {k, v} -> v end) │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:93:83: ArkeServer.Plugs.BuildFilters.get_conditions/5 warning: variable "k" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 91 │ {:error, error_filters |> Enum.map(fn {k, v} -> v end)} │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:91:48: ArkeServer.Plugs.BuildFilters.get_conditions/5 warning: function remove_wrap_parentheses/1 is unused │ 33 │ defp remove_wrap_parentheses(str) do │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:33:8: ArkeServer.Plugs.BuildFilters (module) warning: function remove_match/2 is unused │ 130 │ defp remove_match(match, str) do │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:130:8: ArkeServer.Plugs.BuildFilters (module) warning: function parse_value/2 is unused │ 134 │ defp parse_value(val, :in) do │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:134:8: ArkeServer.Plugs.BuildFilters (module) warning: function is_negate_operator/1 is unused │ 146 │ defp is_negate_operator(:not), do: true │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:146:8: ArkeServer.Plugs.BuildFilters (module) warning: function is_logic_operator/1 is unused │ 142 │ defp is_logic_operator(:or), do: true │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:142:8: ArkeServer.Plugs.BuildFilters (module) warning: function get_operator/1 is unused │ 149 │ defp get_operator("or(" <> _rest), do: {:ok, :or} │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:149:8: ArkeServer.Plugs.BuildFilters (module) warning: function get_conditions/5 is unused │ 37 │ defp get_conditions( │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:37:8: ArkeServer.Plugs.BuildFilters (module) warning: function get_condition/5 is unused │ 118 │ defp get_condition(conn, parameter_id, operator, value, negate) do │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:118:8: ArkeServer.Plugs.BuildFilters (module) warning: function format_parameter_and_value/4 is unused │ 99 │ defp format_parameter_and_value(conn, data, operator, negate \\ false) │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:99:8: ArkeServer.Plugs.BuildFilters (module) warning: unused alias Validator │ 18 │ alias Arke.Validator │ ~ │ └─ lib/arke_server/plugs/build_filters.ex:18:3 warning: variable "parameter_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 34 │ def call(%Plug.Conn{path_params: %{"parameter_id" => parameter_id}} = conn, _default) do │ ~~~~~~~~~~~~ │ └─ lib/arke_server/plugs/permission.ex:34:56: ArkeServer.Plugs.Permission.call/2 warning: variable "default" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 40 │ def call(%Plug.Conn{method: method, request_path: req_path} = conn, default) do │ ~~~~~~~ │ └─ lib/arke_server/plugs/permission.ex:40:71: ArkeServer.Plugs.Permission.call/2 warning: variable "method" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 40 │ def call(%Plug.Conn{method: method, request_path: req_path} = conn, default) do │ ~~~~~~ │ └─ lib/arke_server/plugs/permission.ex:40:31: ArkeServer.Plugs.Permission.call/2 warning: variable "default" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 54 │ def call(conn, default), do: conn │ ~~~~~~~ │ └─ lib/arke_server/plugs/permission.ex:54:18: ArkeServer.Plugs.Permission.call/2 warning: variable "conn" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 118 │ defp get_permission_filter(conn, %{filter: nil} = permission), do: permission │ ~~~~ │ └─ lib/arke_server/plugs/permission.ex:118:30: ArkeServer.Plugs.Permission.get_permission_filter/2 warning: unused import Plug.Conn │ 25 │ import Plug.Conn │ ~ │ └─ lib/arke_server/response_manager.ex:25:3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 16 │ def create_user(%{metadata: %{project: project}} = member) do │ ~~~~~~~ │ └─ lib/arke_server/utils/onesignal.ex:16:42: ArkeServer.Utils.OneSignal.create_user/1 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 66 │ defp call_api(method, path, body, opts \\ []) do │ ~~~~ │ └─ lib/arke_server/utils/onesignal.ex:66:37: ArkeServer.Utils.OneSignal.call_api/4 warning: router paths should begin with a forward slash, got: "ready" (phoenix 1.7.21) lib/phoenix/router/scope.ex:113: Phoenix.Router.Scope.validate_path/1 (phoenix 1.7.21) lib/phoenix/router/scope.ex:37: Phoenix.Router.Scope.route/8 lib/arke_server/router.ex:91: (module) (elixir 1.19.4) src/elixir_compiler.erl:81: :elixir_compiler.dispatch/4 (elixir 1.19.4) src/elixir_compiler.erl:56: :elixir_compiler.compile/4 (elixir 1.19.4) src/elixir_module.erl:476: :elixir_module.eval_form/7 warning: router paths should begin with a forward slash, got: "live" (phoenix 1.7.21) lib/phoenix/router/scope.ex:113: Phoenix.Router.Scope.validate_path/1 (phoenix 1.7.21) lib/phoenix/router/scope.ex:37: Phoenix.Router.Scope.route/8 lib/arke_server/router.ex:92: (module) (elixir 1.19.4) src/elixir_compiler.erl:81: :elixir_compiler.dispatch/4 (elixir 1.19.4) src/elixir_compiler.erl:56: :elixir_compiler.compile/4 (elixir 1.19.4) src/elixir_module.erl:476: :elixir_module.eval_form/7 warning: router paths should begin with a forward slash, got: "start" (phoenix 1.7.21) lib/phoenix/router/scope.ex:113: Phoenix.Router.Scope.validate_path/1 (phoenix 1.7.21) lib/phoenix/router/scope.ex:37: Phoenix.Router.Scope.route/8 lib/arke_server/router.ex:93: (module) (elixir 1.19.4) src/elixir_compiler.erl:81: :elixir_compiler.dispatch/4 (elixir 1.19.4) src/elixir_compiler.erl:56: :elixir_compiler.compile/4 (elixir 1.19.4) src/elixir_module.erl:476: :elixir_module.eval_form/7 warning: unused alias Endpoint │ 13 │ alias ArkeServer.{Endpoint, Router} │ ~ │ └─ lib/openapi/openapispec.ex:13:3 warning: variable "v" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 17 │ Map.filter(responses, fn {k, v} -> k not in exclude end) │ ~ │ └─ lib/openapi/schemas/responses.ex:17:34: ArkeServer.Openapi.Responses.get_responses/1 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def auth_error(conn, {type, reason}, opts) do │ ~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:27:40: ArkeServer.ErrorHandlers.Auth.auth_error/3 warning: variable "reason" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def auth_error(conn, {type, reason}, opts) do │ ~~~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:27:31: ArkeServer.ErrorHandlers.Auth.auth_error/3 warning: variable "v" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 33 │ with [_] <- Enum.filter(headers, fn {k, v} -> k == "authorization" end) do │ ~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:33:45: ArkeServer.ErrorHandlers.Auth.get_message/2 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 52 │ def auth_error(conn, {type, reason}, opts) do │ ~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:52:40: ArkeServer.ErrorHandlers.SSOAuth.auth_error/3 warning: variable "reason" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 52 │ def auth_error(conn, {type, reason}, opts) do │ ~~~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:52:31: ArkeServer.ErrorHandlers.SSOAuth.auth_error/3 warning: variable "v" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 58 │ with [_] <- Enum.filter(headers, fn {k, v} -> k == "authorization" end) do │ ~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:58:45: ArkeServer.ErrorHandlers.SSOAuth.get_message/2 warning: unused import Plug.Conn │ 48 │ import Plug.Conn │ ~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:48:3 warning: @behaviour ArkeAuth.Guardian.Plug.ErrorHandler does not exist (in module ArkeServer.ErrorHandlers.Auth) │ 18 │ defmodule ArkeServer.ErrorHandlers.Auth do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:18: ArkeServer.ErrorHandlers.Auth (module) warning: @behaviour ArkeAuth.SSOGuardian.Plug.ErrorHandler does not exist (in module ArkeServer.ErrorHandlers.SSOAuth) │ 43 │ defmodule ArkeServer.ErrorHandlers.SSOAuth do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:43: ArkeServer.ErrorHandlers.SSOAuth (module) warning: got "@impl ArkeAuth.Guardian.Plug.ErrorHandler" for function auth_error/3 but this behaviour does not specify such callback. There are no known callbacks, please specify the proper @behaviour and make sure it defines callbacks │ 27 │ def auth_error(conn, {type, reason}, opts) do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:27: ArkeServer.ErrorHandlers.Auth (module) warning: got "@impl ArkeAuth.SSOGuardian.Plug.ErrorHandler" for function auth_error/3 but this behaviour does not specify such callback. There are no known callbacks, please specify the proper @behaviour and make sure it defines callbacks │ 52 │ def auth_error(conn, {type, reason}, opts) do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/error_handlers/auth_error_handler.ex:52: ArkeServer.ErrorHandlers.SSOAuth (module) warning: incompatible types given to run/2: run(conn, {provider, to_options}) given types: ( dynamic(), -dynamic( {term(), %{ options: term(), request_path: term(), request_port: term(), request_scheme: term(), strategy: term(), strategy_name: term() }} )- ) but expected one of: dynamic(), dynamic({term(), :run_request, term()}) where "conn" was given the type: # type: dynamic() # from: lib/arke_server/plugs/oauth.ex:66:19 conn where "provider" was given the type: # type: dynamic() # from: lib/arke_server/plugs/oauth.ex:66:40 {provider, :run_request, provider_options} where "to_options" was given the type: # type: dynamic(%{ options: term(), request_path: term(), request_port: term(), request_scheme: term(), strategy: term(), strategy_name: term() }) # from: lib/arke_server/plugs/oauth.ex:70:16 to_options = build_strategy_options(base_path, {provider_name, {provider, provider_options}}) typing violation found at: │ 72 │ run(conn, {provider, to_options}) │ ~ │ └─ lib/arke_server/plugs/oauth.ex:72:5: ArkeServer.Plugs.OAuth.run_request/4 warning: this clause of defp get_operation_list/1 is never used │ 23 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.AuthControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:23: ArkeServer.AuthController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.AuthControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.AuthControllerSpec # from: lib/arke_server/controllers/auth_controller.ex:23 apimodule = ArkeServer.Openapi.AuthControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 23 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.AuthControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/auth_controller.ex:23: ArkeServer.AuthController.open_api_operation/1 warning: incompatible types given to handle_recover_password/3: handle_recover_password(conn, member, params) given types: dynamic(), dynamic(), -dynamic(map())- but expected one of: dynamic(), dynamic(), binary() where "conn" was given the type: # type: dynamic() # from: lib/arke_server/controllers/auth_controller.ex:596:24 conn where "member" was given the type: # type: dynamic() # from: lib/arke_server/controllers/auth_controller.ex:605:7 member where "params" was given the type: # type: dynamic(map()) # from: lib/arke_server/controllers/auth_controller.ex:596:50 %{"email" => email} = params typing violation found at: │ 608 │ handle_recover_password(conn, member, params) │ ~ │ └─ lib/arke_server/controllers/auth_controller.ex:608:13: ArkeServer.AuthController.recover_password/2 warning: UeberauthApple.generate_client_secret/1 is undefined (module UeberauthApple is not available or is yet to be defined). Make sure the module name is correct and has been specified in full (or that an alias has been defined) │ 7 │ UeberauthApple.generate_client_secret(%{ │ ~ │ └─ lib/arke_server/utils/apple_secret.ex:7:20: ArkeServer.Utils.Apple.client_secret/1 warning: this clause of defp get_operation_list/1 is never used │ 19 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.UnitControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/unit_controller.ex:19: ArkeServer.UnitController.get_operation_list/1 warning: this clause of defp get_operation_list/1 is never used │ 22 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.GroupControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:22: ArkeServer.GroupController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.UnitControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.UnitControllerSpec # from: lib/arke_server/controllers/unit_controller.ex:19 apimodule = ArkeServer.Openapi.UnitControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 19 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.UnitControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/unit_controller.ex:19: ArkeServer.UnitController.open_api_operation/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.GroupControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.GroupControllerSpec # from: lib/arke_server/controllers/group_controller.ex:22 apimodule = ArkeServer.Openapi.GroupControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 22 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.GroupControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/group_controller.ex:22: ArkeServer.GroupController.open_api_operation/1 warning: this clause of defp get_operation_list/1 is never used │ 23 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.ArkeControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:23: ArkeServer.ArkeController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.ArkeControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.ArkeControllerSpec # from: lib/arke_server/controllers/arke_controller.ex:23 apimodule = ArkeServer.Openapi.ArkeControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 23 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.ArkeControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/arke_controller.ex:23: ArkeServer.ArkeController.open_api_operation/1 warning: this clause of defp get_operation_list/1 is never used │ 19 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.ParameterControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:19: ArkeServer.ParameterController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.ParameterControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.ParameterControllerSpec # from: lib/arke_server/controllers/parameter_controller.ex:19 apimodule = ArkeServer.Openapi.ParameterControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 19 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.ParameterControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/parameter_controller.ex:19: ArkeServer.ParameterController.open_api_operation/1 warning: this clause of defp get_operation_list/1 is never used │ 23 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.ProjectControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/project_controller.ex:23: ArkeServer.ProjectController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.ProjectControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.ProjectControllerSpec # from: lib/arke_server/controllers/project_controller.ex:23 apimodule = ArkeServer.Openapi.ProjectControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 23 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.ProjectControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/project_controller.ex:23: ArkeServer.ProjectController.open_api_operation/1 warning: this clause of defp get_operation_list/1 is never used │ 9 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.TopologyControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:9: ArkeServer.TopologyController.get_operation_list/1 warning: this clause of defp get_operation_list/1 is never used │ 24 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.OAuthControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/oauth_controller.ex:24: ArkeServer.OAuthController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.TopologyControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.TopologyControllerSpec # from: lib/arke_server/controllers/topology_controller.ex:9 apimodule = ArkeServer.Openapi.TopologyControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 9 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.TopologyControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/topology_controller.ex:9: ArkeServer.TopologyController.open_api_operation/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.OAuthControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.OAuthControllerSpec # from: lib/arke_server/controllers/oauth_controller.ex:24 apimodule = ArkeServer.Openapi.OAuthControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 24 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.OAuthControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/oauth_controller.ex:24: ArkeServer.OAuthController.open_api_operation/1 warning: this clause of defp get_operation_list/1 is never used │ 22 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.StructControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/struct_controller.ex:22: ArkeServer.StructController.get_operation_list/1 warning: comparison between distinct types found: apimodule == nil given types: ArkeServer.Openapi.StructControllerSpec == nil where "apimodule" (context ArkeServer.Openapi.Spec) was given the type: # type: ArkeServer.Openapi.StructControllerSpec # from: lib/arke_server/controllers/struct_controller.ex:22 apimodule = ArkeServer.Openapi.StructControllerSpec While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 22 │ use ArkeServer.Openapi.Spec, module: ArkeServer.Openapi.StructControllerSpec │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_server/controllers/struct_controller.ex:22: ArkeServer.StructController.open_api_operation/1 warning: comparison with structs found: Timex.from_unix(Map.get(decoded, "exp", 0)) > Arke.Utils.DatetimeHandler.now(:datetime) given types: dynamic(%DateTime{}) > dynamic() where "decoded" was given the type: # type: dynamic() # from: lib/arke_server/oauth/providers/apple.ex:83:14 decoded = token.fields Comparison operators (>, <, >=, <=, min, and max) perform structural and not semantic comparison. Comparing with a struct won't give meaningful results. Structs that can be compared typically define a compare/2 function within their modules that can be used for semantic comparison. typing violation found at: │ 92 │ Timex.from_unix(Map.get(decoded, "exp", 0)) > DatetimeHandler.now(:datetime) do │ ~ │ └─ lib/arke_server/oauth/providers/apple.ex:92:59: ArkeServer.OAuth.Provider.Apple.validate_jwt/2 Generated arke_server app ==> nerves_compatibility_test Generated nerves_compatibility_test app |nerves| Building OTP Release... * [Nerves] validating vm.args * skipping runtime configuration (config/runtime.exs not found) * creating _build/rpi4/rel/nerves_compatibility_test/releases/0.1.0/vm.args Updating base firmware image with Erlang release... Copying rootfs_overlay: /work/proj/_build/rpi4/nerves/rootfs_overlay Copying rootfs_overlay: /work/proj/rootfs_overlay Building /work/proj/_build/rpi4/nerves/images/nerves_compatibility_test.fw... Firmware UUID: ripple-nasty (c68e0598-9eca-5057-d7aa-e0558a881435) Firmware built successfully! 🎉 Now you may install it to a MicroSD card using `mix burn` or upload it to a device with `mix upload` or `mix firmware.gen.script`+`./upload.sh`.