akoutmos / doctor

Ensure that your Elixir project documentation is healthy
MIT License
178 stars 15 forks source link

Failed on erl modules #43

Closed cgnv closed 1 year ago

cgnv commented 2 years ago

mix doctor fails with

** (FunctionClauseError) no function clause matching in Doctor.ModuleInformation.build/2    

    The following arguments were given to Doctor.ModuleInformation.build/2:

        # 1
        {:error, :chunk_not_found}

        # 2
        :my_app

    Attempted function clauses (showing 1 out of 1):

        def build({docs_version, _annotation, _language, _format, module_doc, metadata, docs}, module)

    (doctor 0.18.0) lib/module_information.ex:45: Doctor.ModuleInformation.build/2
    (elixir 1.12.3) lib/enum.ex:1582: Enum."-map/2-lists^map/1-0-"/2
    (elixir 1.12.3) lib/enum.ex:1582: Enum."-map/2-lists^map/1-0-"/2
    (doctor 0.18.0) lib/cli/cli.ex:20: Doctor.CLI.generate_module_report_list/1
    (doctor 0.18.0) lib/mix/tasks/doctor.ex:88: Mix.Tasks.Doctor.run_default/1
    (mix 1.12.3) lib/mix/task.ex:394: anonymous fn/3 in Mix.Task.run_task/3
    (mix 1.12.3) lib/mix/cli.ex:84: Mix.CLI.run_task/2

on any erl module. It is possible to skip modules and paths with config options ignore_modules and ignore_paths, but filtering (filter_ignore_modules, filter_ignore_paths) is called after fetching docs (Code.fetch_docs/1). Could we call filtering earlier? Source of possible solution: https://github.com/akoutmos/doctor/blob/9e6411e26fa2222a2da70271ac857f8049c77bd4/lib/cli/cli.ex#L19-L24