Elixir標準モジュールの数を数えてみた
はじめに
ふと、"Elixirは標準モジュールをどれくらい提供しているのだろう?"と疑問に思ったので調査してみました。
TL;DR
$ ag '^defmodule [a-zA-Z.]* do' --stats-only --elixir--ignore-dir=test lib/
290 matches
242 files contained matches
249 files searched
3736169 bytes searched
0.663903 seconds
Elixir言語の標準モジュール数は、290個でした。
検索対象と条件
以下の対象について調べます。
- Elixir言語のGitHubリポジトリに含まれる開発のためのモジュールのことを標準モジュールとする
-
defmodule
で始まる行の数をモジュールの数とする - 標準モジュールをテストするためのモジュールはカウントしない(testディレクトリ)
- 検索対象ファイルは
.exs
と.ex
に絞る
対象バージョンは Elixir v1.13.3
とします。
やり方
今回はgrepツールとしてthe_silver_searcher(ag)を使います。
the_silver_searcherはgrepツールの一種で、grepツールの1種であるackよりも高速かつ高機能であることを売りにしています。
the_silver_searcherでdefmodule
で始まる行を数え、その検索ヒット数をモジュール数とします。
コマンドはag
です。
バージョンは 2.2.0
を使います。
$ ag --version
ag version 2.2.0
コマンド解説
モジュール数を調べるためのagコマンドを説明します。
# 実行したコマンド(リポジトリルートから)
$ ag '^defmodule [a-zA-Z.]* do' --stats-only --elixir --ignore-dir=test lib/
'^defmodule [a-zA-Z.]* do'
defmodule
から始まる行を検索対象に取る正規表現です。
正規表現はコチラのサイトが参考になると思います。
--stats-only
--stats
オプションを付けると、結果の末尾にヒット数や捜査ファイル数など検索結果のレポートを表示します。
--stats-only
を設定するとレポートだけが表示されなくなります。
今回はヒット数だけ必要なので設定しました。
$ ag --help | ag stats
--stats Print stats (files scanned, time taken, etc.)
--stats-only Print stats and nothing else.
--elixir
the_silver_searcherは、特定のプログラミング言語の拡張子ファイルだけを検索するオプションを提供しています。
--elixir
オプションを設定すると、.ex
、.exx
、.exs
だけを検索対象にします。
$ ag --list-file-types | ag -A 1 elixir
--elixir
.ex .eex .exs
他にどんな言語があるのかは、--list-file-types
オプションで調べることができます。
--ignore-dir=test
--ignore-dir
は検索対象から除外するディレクトリ名のパターンを指定可能です。
Elixirはtest/
ディレクトリにテストファイルを入れているためtest
完全一致で除外しました。
lib/
検索対象にするディレクトリです。
Elixirはlib/
以外には.ex
や.exs
は配置していないため実行時間を短くするため指定しています。
検索結果
--stats-only
を除外したコマンドの実行結果を掲載しておきます。
検索にヒットしたファイル名とヒットした行
$ ag '^defmodule [a-zA-Z.]* do' --elixir --ignore-dir=test lib/
lib/eex/lib/eex/smart_engine.ex
1:defmodule EEx.SmartEngine do
lib/eex/lib/eex/engine.ex
1:defmodule EEx.Engine do
lib/eex/lib/eex/compiler.ex
1:defmodule EEx.Compiler do
lib/eex/lib/eex/tokenizer.ex
1:defmodule EEx.Tokenizer do
lib/eex/mix.exs
1:defmodule EEx.MixProject do
lib/eex/lib/eex.ex
1:defmodule EEx.SyntaxError do
10:defmodule EEx do
lib/elixir/diff.exs
1:defmodule Diff do
lib/elixir/lib/access.ex
1:defmodule Access do
lib/elixir/lib/atom.ex
1:defmodule Atom do
lib/elixir/lib/agent.ex
1:defmodule Agent do
lib/elixir/lib/agent/server.ex
1:defmodule Agent.Server do
lib/elixir/lib/application.ex
1:defmodule Application do
lib/elixir/lib/behaviour.ex
1:defmodule Behaviour do
lib/elixir/lib/bitwise.ex
1:defmodule Bitwise do
lib/elixir/lib/base.ex
1:defmodule Base do
lib/elixir/lib/calendar/date_range.ex
1:defmodule Date.Range do
lib/elixir/lib/calendar/date.ex
1:defmodule Date do
lib/elixir/lib/calendar/datetime.ex
1:defmodule DateTime do
lib/elixir/lib/calendar/iso.ex
1:defmodule Calendar.ISO do
lib/elixir/lib/calendar/naive_datetime.ex
1:defmodule NaiveDateTime do
lib/elixir/lib/calendar/time.ex
1:defmodule Time do
lib/elixir/lib/calendar/time_zone_database.ex
1:defmodule Calendar.TimeZoneDatabase do
74:defmodule Calendar.UTCOnlyTimeZoneDatabase do
lib/elixir/lib/calendar.ex
1:defmodule Calendar do
lib/elixir/lib/code/identifier.ex
1:defmodule Code.Identifier do
lib/elixir/lib/code/fragment.ex
1:defmodule Code.Fragment do
lib/elixir/lib/code/normalizer.ex
1:defmodule Code.Normalizer do
lib/elixir/lib/code/formatter.ex
1:defmodule Code.Formatter do
lib/elixir/lib/code/typespec.ex
1:defmodule Code.Typespec do
lib/elixir/lib/code.ex
1:defmodule Code do
lib/elixir/lib/config/provider.ex
1:defmodule Config.Provider do
lib/elixir/lib/config/reader.ex
1:defmodule Config.Reader do
lib/elixir/lib/config.ex
1:defmodule Config do
lib/elixir/lib/dict.ex
1:defmodule Dict do
lib/elixir/lib/dynamic_supervisor.ex
1:defmodule DynamicSupervisor do
lib/elixir/lib/file/stat.ex
3:defmodule File.Stat do
lib/elixir/lib/exception.ex
1:defmodule Exception do
721:defmodule RuntimeError do
725:defmodule ArgumentError do
767:defmodule ArithmeticError do
807:defmodule SystemLimitError do
811:defmodule SyntaxError do
839:defmodule TokenMissingError do
867:defmodule CompileError do
876:defmodule BadFunctionError do
889:defmodule BadStructError do
898:defmodule BadMapError do
907:defmodule BadBooleanError do
916:defmodule MatchError do
925:defmodule CaseClauseError do
934:defmodule WithClauseError do
943:defmodule CondClauseError do
952:defmodule TryClauseError do
961:defmodule BadArityError do
978:defmodule UndefinedFunctionError do
1156:defmodule FunctionClauseError do
1256:defmodule Code.LoadError do
1265:defmodule Protocol.UndefinedError do
1305:defmodule KeyError do
1378:defmodule UnicodeConversionError do
1401:defmodule Enum.OutOfBoundsError do
1405:defmodule Enum.EmptyError do
1409:defmodule File.Error do
1427:defmodule File.CopyError do
1445:defmodule File.RenameError do
1463:defmodule File.LinkError do
1475:defmodule ErlangError do
lib/elixir/lib/file/stream.ex
1:defmodule File.Stream do
lib/elixir/lib/file.ex
1:defmodule File do
lib/elixir/lib/enum.ex
202:defmodule Enum do
lib/elixir/lib/float.ex
3:defmodule Float do
lib/elixir/lib/function.ex
1:defmodule Function do
lib/elixir/lib/gen_event/stream.ex
1:defmodule GenEvent.Stream do
lib/elixir/lib/hash_set.ex
1:defmodule HashSet do
lib/elixir/lib/hash_dict.ex
1:defmodule HashDict do
lib/elixir/lib/gen_event.ex
1:defmodule GenEvent do
lib/elixir/lib/gen_server.ex
1:defmodule GenServer do
lib/elixir/lib/integer.ex
1:defmodule Integer do
lib/elixir/lib/inspect/algebra.ex
1:defmodule Inspect.Opts do
166:defmodule Inspect.Error do
173:defmodule Inspect.Algebra do
lib/elixir/lib/io.ex
1:defmodule IO do
lib/elixir/lib/io/stream.ex
1:defmodule IO.StreamError do
12:defmodule IO.Stream do
lib/elixir/lib/io/ansi.ex
1:defmodule IO.ANSI.Sequence do
17:defmodule IO.ANSI do
lib/elixir/lib/io/ansi/docs.ex
1:defmodule IO.ANSI.Docs do
lib/elixir/lib/kernel/error_handler.ex
3:defmodule Kernel.ErrorHandler do
lib/elixir/lib/kernel/lexical_tracker.ex
7:defmodule Kernel.LexicalTracker do
lib/elixir/lib/kernel/cli.ex
1:defmodule Kernel.CLI do
lib/elixir/lib/kernel/parallel_compiler.ex
1:defmodule Kernel.ParallelCompiler do
lib/elixir/lib/kernel/parallel_require.ex
1:defmodule Kernel.ParallelRequire do
lib/elixir/lib/kernel/utils.ex
3:defmodule Kernel.Utils do
lib/elixir/lib/kernel/typespec.ex
1:defmodule Kernel.Typespec do
lib/elixir/lib/kernel/special_forms.ex
1:defmodule Kernel.SpecialForms do
lib/elixir/lib/keyword.ex
1:defmodule Keyword do
lib/elixir/lib/kernel.ex
9:defmodule Kernel do
lib/elixir/lib/list.ex
1:defmodule List do
lib/elixir/lib/macro/env.ex
1:defmodule Macro.Env do
lib/elixir/lib/map.ex
1:defmodule Map do
lib/elixir/lib/map_set.ex
1:defmodule MapSet do
lib/elixir/lib/macro.ex
3:defmodule Macro do
lib/elixir/lib/module/locals_tracker.ex
15:defmodule Module.LocalsTracker do
lib/elixir/lib/module/parallel_checker.ex
1:defmodule Module.ParallelChecker do
lib/elixir/lib/module/types/helpers.ex
1:defmodule Module.Types.Helpers do
lib/elixir/lib/module/types/of.ex
1:defmodule Module.Types.Of do
lib/elixir/lib/module/types/expr.ex
1:defmodule Module.Types.Expr do
lib/elixir/lib/module/types/pattern.ex
1:defmodule Module.Types.Pattern do
lib/elixir/lib/module/types/unify.ex
1:defmodule Module.Types.Unify do
lib/elixir/lib/module/types.ex
1:defmodule Module.Types do
lib/elixir/lib/node.ex
1:defmodule Node do
lib/elixir/lib/option_parser.ex
1:defmodule OptionParser do
lib/elixir/lib/module.ex
1:defmodule Module do
lib/elixir/lib/path.ex
1:defmodule Path do
lib/elixir/lib/port.ex
1:defmodule Port do
lib/elixir/lib/process.ex
1:defmodule Process do
lib/elixir/lib/range.ex
1:defmodule Range do
lib/elixir/lib/record/extractor.ex
1:defmodule Record.Extractor do
lib/elixir/lib/protocol.ex
1:defmodule Protocol do
lib/elixir/lib/record.ex
1:defmodule Record do
lib/elixir/lib/regex.ex
1:defmodule Regex do
lib/elixir/lib/set.ex
1:defmodule Set do
lib/elixir/lib/stream/reducers.ex
1:defmodule Stream.Reducers do
lib/elixir/lib/registry.ex
1:defmodule Registry do
1405:defmodule Registry.Supervisor do
1444:defmodule Registry.Partition do
lib/elixir/lib/stream.ex
1:defmodule Stream do
lib/elixir/lib/string_io.ex
1:defmodule StringIO do
lib/elixir/lib/supervisor/default.ex
1:defmodule Supervisor.Default do
lib/elixir/lib/supervisor/spec.ex
1:defmodule Supervisor.Spec do
lib/elixir/lib/string.ex
3:defmodule String do
lib/elixir/lib/supervisor.ex
1:defmodule Supervisor do
lib/elixir/lib/system.ex
1:defmodule System do
lib/elixir/lib/task/supervised.ex
1:defmodule Task.Supervised do
lib/elixir/lib/task/supervisor.ex
1:defmodule Task.Supervisor do
lib/elixir/lib/task.ex
1:defmodule Task do
lib/elixir/lib/tuple.ex
1:defmodule Tuple do
lib/elixir/lib/uri.ex
1:defmodule URI do
lib/elixir/mix.exs
1:defmodule Elixir.MixProject do
lib/elixir/lib/version.ex
1:defmodule Version do
lib/elixir/unicode/tokenizer.ex
1:defmodule String.Tokenizer do
lib/elixir/unicode/unicode.ex
143:defmodule String.Unicode do
420:defmodule String.Break do
lib/ex_unit/examples/difference.exs
3:defmodule Difference do
lib/ex_unit/examples/one_of_each.exs
3:defmodule TestOneOfEach do
lib/ex_unit/lib/ex_unit/capture_log.ex
1:defmodule ExUnit.CaptureLog do
lib/ex_unit/lib/ex_unit/capture_io.ex
1:defmodule ExUnit.CaptureIO do
lib/ex_unit/lib/ex_unit/assertions.ex
1:defmodule ExUnit.AssertionError do
29:defmodule ExUnit.MultiError do
45:defmodule ExUnit.Assertions do
lib/ex_unit/lib/ex_unit/callbacks.ex
1:defmodule ExUnit.Callbacks do
lib/ex_unit/lib/ex_unit/capture_server.ex
1:defmodule ExUnit.CaptureServer do
lib/ex_unit/lib/ex_unit/case_template.ex
1:defmodule ExUnit.CaseTemplate do
lib/ex_unit/lib/ex_unit/cli_formatter.ex
1:defmodule ExUnit.CLIFormatter do
lib/ex_unit/lib/ex_unit/case.ex
1:defmodule ExUnit.DuplicateTestError do
5:defmodule ExUnit.DuplicateDescribeError do
9:defmodule ExUnit.Case do
lib/ex_unit/lib/ex_unit/event_manager.ex
1:defmodule ExUnit.EventManager do
lib/ex_unit/lib/ex_unit/diff.ex
1:defmodule ExUnit.Diff do
lib/ex_unit/lib/ex_unit/failures_manifest.ex
1:defmodule ExUnit.FailuresManifest do
lib/ex_unit/lib/ex_unit/doc_test.ex
1:defmodule ExUnit.DocTest do
lib/ex_unit/lib/ex_unit/filters.ex
1:defmodule ExUnit.Filters do
lib/ex_unit/lib/ex_unit/on_exit_handler.ex
1:defmodule ExUnit.OnExitHandler do
lib/ex_unit/lib/ex_unit/formatter.ex
1:defmodule ExUnit.Formatter do
lib/ex_unit/lib/ex_unit/runner.ex
1:defmodule ExUnit.Runner do
lib/ex_unit/lib/ex_unit/server.ex
1:defmodule ExUnit.Server do
lib/ex_unit/lib/ex_unit/runner_stats.ex
1:defmodule ExUnit.RunnerStats do
lib/ex_unit/lib/ex_unit.ex
1:defmodule ExUnit do
lib/ex_unit/mix.exs
1:defmodule ExUnit.MixProject do
lib/iex/lib/iex/app.ex
1:defmodule IEx.App do
lib/iex/lib/iex/broker.ex
1:defmodule IEx.Broker do
lib/iex/lib/iex/cli.ex
37:defmodule IEx.CLI do
lib/iex/lib/iex/autocomplete.ex
1:defmodule IEx.Autocomplete do
lib/iex/lib/iex/config.ex
1:defmodule IEx.Config do
lib/iex/lib/iex/evaluator.ex
1:defmodule IEx.Evaluator do
lib/iex/lib/iex/history.ex
1:defmodule IEx.History do
lib/iex/lib/iex/helpers.ex
1:defmodule IEx.Helpers do
lib/iex/lib/iex/introspection.ex
3:defmodule IEx.Introspection do
lib/iex/lib/iex/pry.ex
1:defmodule IEx.Pry do
lib/iex/lib/iex/server.ex
1:defmodule IEx.State do
15:defmodule IEx.Server do
lib/iex/mix.exs
1:defmodule IEx.MixProject do
lib/iex/lib/iex.ex
1:defmodule IEx do
lib/logger/lib/logger/app.ex
1:defmodule Logger.App do
lib/logger/lib/logger/backend_supervisor.ex
1:defmodule Logger.BackendSupervisor do
lib/logger/lib/logger/filter.ex
1:defmodule Logger.Filter do
lib/logger/lib/logger/config.ex
1:defmodule Logger.Config do
lib/logger/lib/logger/backends/console.ex
1:defmodule Logger.Backends.Console do
lib/logger/lib/logger/formatter.ex
3:defmodule Logger.Formatter do
lib/logger/lib/logger/handler.ex
1:defmodule Logger.Handler do
lib/logger/lib/logger/utils.ex
1:defmodule Logger.Utils do
lib/logger/lib/logger/translator.ex
1:defmodule Logger.Translator do
lib/logger/lib/logger/watcher.ex
1:defmodule Logger.Watcher do
lib/logger/mix.exs
1:defmodule Logger.MixProject do
lib/logger/lib/logger.ex
1:defmodule Logger do
lib/mix/lib/mix/cli.ex
1:defmodule Mix.CLI do
lib/mix/lib/mix/compilers/test.ex
1:defmodule Mix.Compilers.Test do
lib/mix/lib/mix/compilers/application_tracer.ex
1:defmodule Mix.Compilers.ApplicationTracer do
lib/mix/lib/mix/compilers/erlang.ex
1:defmodule Mix.Compilers.Erlang do
lib/mix/lib/mix/compilers/elixir.ex
1:defmodule Mix.Compilers.Elixir do
lib/mix/lib/mix/config.ex
1:defmodule Mix.Config do
lib/mix/lib/mix/dep/elixir_scm.ex
2:defmodule Mix.Dep.ElixirSCM do
lib/mix/lib/mix/dep/fetcher.ex
7:defmodule Mix.Dep.Fetcher do
lib/mix/lib/mix/dep/loader.ex
4:defmodule Mix.Dep.Loader do
lib/mix/lib/mix/dep/converger.ex
4:defmodule Mix.Dep.Converger do
lib/mix/lib/mix/dep/lock.ex
5:defmodule Mix.Dep.Lock do
lib/mix/lib/mix/dep/umbrella.ex
1:defmodule Mix.Dep.Umbrella do
lib/mix/lib/mix/exceptions.ex
1:defmodule Mix.NoTaskError do
54:defmodule Mix.InvalidTaskError do
64:defmodule Mix.ElixirVersionError do
81:defmodule Mix.NoProjectError do
88:defmodule Mix.Error do
lib/mix/lib/mix/dep.ex
1:defmodule Mix.Dep do
lib/mix/lib/mix/generator.ex
1:defmodule Mix.Generator do
lib/mix/lib/mix/hex.ex
1:defmodule Mix.Hex do
lib/mix/lib/mix/local.ex
1:defmodule Mix.Local do
lib/mix/lib/mix/local/installer.ex
1:defmodule Mix.Local.Installer do
lib/mix/lib/mix/project_stack.ex
1:defmodule Mix.ProjectStack do
lib/mix/lib/mix/project.ex
1:defmodule Mix.Project do
lib/mix/lib/mix/public_key.ex
1:defmodule Mix.PublicKey do
lib/mix/lib/mix/rebar.ex
1:defmodule Mix.Rebar do
lib/mix/lib/mix/remote_converger.ex
1:defmodule Mix.RemoteConverger do
lib/mix/lib/mix/release.ex
1:defmodule Mix.Release do
lib/mix/lib/mix/scm/path.ex
1:defmodule Mix.SCM.Path do
lib/mix/lib/mix/scm/git.ex
1:defmodule Mix.SCM.Git do
lib/mix/lib/mix/scm.ex
1:defmodule Mix.SCM do
lib/mix/lib/mix/shell.ex
1:defmodule Mix.Shell do
lib/mix/lib/mix/shell/quiet.ex
1:defmodule Mix.Shell.Quiet do
lib/mix/lib/mix/shell/io.ex
1:defmodule Mix.Shell.IO do
lib/mix/lib/mix/shell/process.ex
1:defmodule Mix.Shell.Process do
lib/mix/lib/mix/state.ex
1:defmodule Mix.State do
lib/mix/lib/mix/task.compiler.ex
1:defmodule Mix.Task.Compiler do
lib/mix/lib/mix/task.ex
1:defmodule Mix.Task do
lib/mix/lib/mix/tasks/app.tree.ex
1:defmodule Mix.Tasks.App.Tree do
lib/mix/lib/mix/tasks/app.start.ex
1:defmodule Mix.Tasks.App.Start do
lib/mix/lib/mix/tasks/app.config.ex
1:defmodule Mix.Tasks.App.Config do
lib/mix/lib/mix/tasks/archive.build.ex
1:defmodule Mix.Tasks.Archive.Build do
lib/mix/lib/mix/tasks/archive.ex
1:defmodule Mix.Tasks.Archive do
lib/mix/lib/mix/tasks/archive.uninstall.ex
1:defmodule Mix.Tasks.Archive.Uninstall do
lib/mix/lib/mix/tasks/archive.check.ex
1:defmodule Mix.Tasks.Archive.Check do
lib/mix/lib/mix/tasks/archive.install.ex
1:defmodule Mix.Tasks.Archive.Install do
lib/mix/lib/mix/tasks/clean.ex
1:defmodule Mix.Tasks.Clean do
lib/mix/lib/mix/tasks/cmd.ex
1:defmodule Mix.Tasks.Cmd do
lib/mix/lib/mix/tasks/compile.all.ex
1:defmodule Mix.Tasks.Compile.All do
lib/mix/lib/mix/tasks/compile.app.ex
1:defmodule Mix.Tasks.Compile.App do
lib/mix/lib/mix/tasks/compile.elixir.ex
1:defmodule Mix.Tasks.Compile.Elixir do
lib/mix/lib/mix/tasks/compile.erlang.ex
1:defmodule Mix.Tasks.Compile.Erlang do
lib/mix/lib/mix/tasks/compile.ex
1:defmodule Mix.Tasks.Compile do
lib/mix/lib/mix/tasks/compile.leex.ex
1:defmodule Mix.Tasks.Compile.Leex do
lib/mix/lib/mix/tasks/compile.protocols.ex
1:defmodule Mix.Tasks.Compile.Protocols do
lib/mix/lib/mix/tasks/compile.yecc.ex
1:defmodule Mix.Tasks.Compile.Yecc do
lib/mix/lib/mix/tasks/deps.clean.ex
1:defmodule Mix.Tasks.Deps.Clean do
lib/mix/lib/mix/tasks/deps.ex
1:defmodule Mix.Tasks.Deps do
lib/mix/lib/mix/tasks/deps.compile.ex
1:defmodule Mix.Tasks.Deps.Compile do
lib/mix/lib/mix/tasks/deps.loadpaths.ex
1:defmodule Mix.Tasks.Deps.Loadpaths do
lib/mix/lib/mix/tasks/deps.get.ex
1:defmodule Mix.Tasks.Deps.Get do
lib/mix/lib/mix/tasks/deps.precompile.ex
1:defmodule Mix.Tasks.Deps.Precompile do
lib/mix/lib/mix/tasks/do.ex
1:defmodule Mix.Tasks.Do do
lib/mix/lib/mix/tasks/deps.tree.ex
1:defmodule Mix.Tasks.Deps.Tree do
lib/mix/lib/mix/tasks/deps.unlock.ex
1:defmodule Mix.Tasks.Deps.Unlock do
lib/mix/lib/mix/tasks/deps.update.ex
1:defmodule Mix.Tasks.Deps.Update do
lib/mix/lib/mix/tasks/escript.build.ex
1:defmodule Mix.Tasks.Escript.Build do
lib/mix/lib/mix/tasks/escript.ex
1:defmodule Mix.Tasks.Escript do
lib/mix/lib/mix/tasks/escript.install.ex
1:defmodule Mix.Tasks.Escript.Install do
lib/mix/lib/mix/tasks/escript.uninstall.ex
1:defmodule Mix.Tasks.Escript.Uninstall do
lib/mix/lib/mix/tasks/format.ex
1:defmodule Mix.Tasks.Format do
lib/mix/lib/mix/tasks/help.ex
1:defmodule Mix.Tasks.Help do
lib/mix/lib/mix/tasks/loadpaths.ex
1:defmodule Mix.Tasks.Loadpaths do
lib/mix/lib/mix/tasks/iex.ex
1:defmodule Mix.Tasks.Iex do
lib/mix/lib/mix/tasks/loadconfig.ex
1:defmodule Mix.Tasks.Loadconfig do
lib/mix/lib/mix/tasks/local.ex
1:defmodule Mix.Tasks.Local do
lib/mix/lib/mix/tasks/local.hex.ex
1:defmodule Mix.Tasks.Local.Hex do
lib/mix/lib/mix/tasks/local.public_keys.ex
1:defmodule Mix.Tasks.Local.PublicKeys do
lib/mix/lib/mix/tasks/local.rebar.ex
1:defmodule Mix.Tasks.Local.Rebar do
lib/mix/lib/mix/tasks/new.ex
1:defmodule Mix.Tasks.New do
lib/mix/lib/mix/tasks/profile.eprof.ex
1:defmodule Mix.Tasks.Profile.Eprof do
lib/mix/lib/mix/tasks/profile.cprof.ex
1:defmodule Mix.Tasks.Profile.Cprof do
lib/mix/lib/mix/tasks/profile.fprof.ex
1:defmodule Mix.Tasks.Profile.Fprof do
lib/mix/lib/mix/tasks/run.ex
1:defmodule Mix.Tasks.Run do
lib/mix/lib/mix/tasks/release.ex
1:defmodule Mix.Tasks.Release do
lib/mix/lib/mix/tasks/release.init.ex
1:defmodule Mix.Tasks.Release.Init do
lib/mix/lib/mix/tasks/test.coverage.ex
1:defmodule Mix.Tasks.Test.Coverage do
lib/mix/lib/mix/tasks/will_recompile.ex
1:defmodule Mix.Tasks.WillRecompile do
lib/mix/lib/mix/tasks/test.ex
1:defmodule Mix.Tasks.Test do
lib/mix/lib/mix/tasks_server.ex
1:defmodule Mix.TasksServer do
lib/mix/lib/mix/tasks/xref.ex
1:defmodule Mix.Tasks.Xref do
lib/mix/lib/mix/utils.ex
1:defmodule Mix.Utils do
lib/mix/mix.exs
1:defmodule Mix.MixProject do
lib/mix/lib/mix.ex
1:defmodule Mix do
まとめ
the_silver_searcherを利用してElixir公式リポジトリで定義されているモジュールの数を調べました。
提供されているモジュールが290個もあり、予想よりも数が多く驚きました(他の言語と比べると少ないかも知れませんが)
また、Mix.Utils
など、hexdocsに掲載されていないモジュールも知ることができました。
hexdocsで検索しても出てきません。
件数や調査方法に間違い等あればコメントいただけると嬉しいです。
Discussion