@nietaki
$ wc -l mix.lock
106 mix.lock
"unicode_util_compat": {:hex, :unicode_util_compat, "0.3.1", "a1f612a7b512638634a603c8f401892afbf99b8ce93a45041f8aaca99cadb85e", [:rebar3], [], "hexpm"},
"unsafe": {:hex, :unsafe, "1.0.0", "7c21742cd05380c7875546b023481d3a26f52df8e5dfedcb9f958f322baae305", [:mix], [], "hexpm"},
"uuid": {:hex, :uuid, "1.1.8", "e22fc04499de0de3ed1116b770c7737779f226ceefa0badb3592e64d5cfb4eb9", [:mix], [], "hexpm"},
iex(1)> :code.all_loaded() |>
...(1)> Enum.map(fn {module, _path} -> module end) |>
...(1)> Enum.filter(fn module ->
...(1)> behaviours = Keyword.get(module.module_info[:attributes], :behaviour, [])
...(1)> Ecto.Repo in behaviours
...(1)> end)
[MyApp.Repo]
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, (...) INCLUDING BUT NOT LIMITED TO (...) FITNESS FOR A PARTICULAR PURPOSE (...).
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY (...) ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE (...).
Rule 6: Be proactively paranoid - paranoia does not work retroactively
https://www.youtube.com/watch?v=S8GPTvq1m-w
(nsfw language)
Your own decentralized package security audit network of trust