SYMBOL INDEX (245 symbols across 37 files) FILE: lib/cli/cli.ex class Doctor.CLI (line 1) | defmodule Doctor.CLI method generate_module_report_list (line 13) | def generate_module_report_list(args) do method generate_single_module_report (line 39) | def generate_single_module_report(module_name, args) do method process_module_report_list (line 61) | def process_module_report_list(module_report_list, args) do method generate_module_entry (line 67) | defp generate_module_entry(module) do method async_fetch_user_defined_functions (line 73) | defp async_fetch_user_defined_functions(%ModuleInformation{} = module_... method get_application_modules (line 81) | defp get_application_modules(application) do method filter_ignore_paths (line 92) | defp filter_ignore_paths(file_relative_path, ignore_paths) do method compare_ignore_path (line 99) | defp compare_ignore_path(file_relative_path, %Regex{} = ignore_pattern... method compare_ignore_path (line 115) | defp compare_ignore_path(_, ignore_value), method filter_ignore_modules (line 118) | defp filter_ignore_modules(module, ignore_modules) do method compare_ignore_module (line 125) | defp compare_ignore_module(module, %Regex{} = ignore_pattern) do method compare_ignore_module (line 146) | defp compare_ignore_module(_, ignore_value), FILE: lib/config.ex class Doctor.Config (line 1) | defmodule Doctor.Config method new (line 58) | def new(attrs \\ %{}) do method moduledoc_required? (line 73) | def moduledoc_required?(%{min_overall_moduledoc_coverage: 100}), do: true method moduledoc_required? (line 74) | def moduledoc_required?(_), do: false method config_defaults_as_string (line 79) | def config_defaults_as_string do method config_file (line 92) | def config_file, do: @config_file method interpret_moduledoc_required (line 98) | defp interpret_moduledoc_required(%{moduledoc_required: nil} = config) do method interpret_moduledoc_required (line 102) | defp interpret_moduledoc_required(%{moduledoc_required: true} = config... method interpret_moduledoc_required (line 107) | defp interpret_moduledoc_required(%{moduledoc_required: false} = confi... method warn_deprecation (line 112) | defp warn_deprecation(_bool, val) do FILE: lib/docs.ex class Doctor.Docs (line 1) | defmodule Doctor.Docs method build (line 21) | def build({{kind, name, arity}, _annotation, _signature, doc, _metadat... FILE: lib/doctor.ex class Doctor (line 1) | defmodule Doctor FILE: lib/mix/tasks/doctor.ex class Mix.Tasks.Doctor (line 1) | defmodule Mix.Tasks.Doctor method run (line 48) | def run(args) do method run_umbrella (line 67) | defp run_umbrella(config) do method run_default (line 83) | defp run_default(config) do method init_umbrella_acc (line 102) | defp init_umbrella_acc(config) do method load_config_file (line 122) | defp load_config_file(%{config_file_path: file_path} = _cli_args) do method load_config_file (line 138) | defp load_config_file(_) do method parse_cli_args (line 161) | defp parse_cli_args(args) do FILE: lib/mix/tasks/doctor.explain.ex class Mix.Tasks.Doctor.Explain (line 1) | defmodule Mix.Tasks.Doctor.Explain method run (line 61) | def run(args) do method run_umbrella (line 90) | defp run_umbrella(module_name, config) do method run_default (line 110) | defp run_default(module_name, config) do method init_umbrella_acc (line 130) | defp init_umbrella_acc(module_name, config) do method report_umbrella_result (line 142) | defp report_umbrella_result(%{found: false}, module_name, _config) do method report_umbrella_result (line 146) | defp report_umbrella_result(%{result: true}, _module_name, _config), d... method report_umbrella_result (line 148) | defp report_umbrella_result(_acc, _module_name, config) do method load_config_file (line 156) | defp load_config_file(%{config_file_path: file_path} = _cli_args) do method load_config_file (line 172) | defp load_config_file(_) do method parse_cli_args (line 195) | defp parse_cli_args(args) do FILE: lib/mix/tasks/doctor.gen.config.ex class Mix.Tasks.Doctor.Gen.Config (line 1) | defmodule Mix.Tasks.Doctor.Gen.Config method run (line 39) | def run(_args) do method create_config_file (line 56) | defp create_config_file do FILE: lib/module_information.ex class Doctor.ModuleInformation (line 1) | defmodule Doctor.ModuleInformation method build (line 45) | def build({docs_version, _annotation, _language, _format, module_doc, ... method load_file_ast (line 72) | def load_file_ast(%ModuleInformation{} = module_info) do method contains_struct_type_spec? (line 85) | def contains_struct_type_spec?(module) do method is_struct? (line 104) | defp is_struct?(module) do method load_user_defined_functions (line 119) | def load_user_defined_functions(%ModuleInformation{} = module_info) do method load_using_docs_and_specs (line 141) | defp load_using_docs_and_specs(%ModuleInformation{} = module_info, mod... method get_module_behaviours (line 165) | defp get_module_behaviours(module) do method get_full_file_path (line 179) | defp get_full_file_path(module) do method get_relative_file_path (line 186) | defp get_relative_file_path(module) do method parse_ast_node_for_def (line 201) | defp parse_ast_node_for_def({:@, _line_number, [{:doc, _, [false]}]} =... method parse_ast_node_for_def (line 207) | defp parse_ast_node_for_def({:@, _line_number, [{:impl, _, impl_def}]}... method parse_ast_node_for_def (line 214) | defp parse_ast_node_for_def( method parse_ast_node_for_def (line 225) | defp parse_ast_node_for_def( method parse_ast_node_for_def (line 236) | defp parse_ast_node_for_def( method parse_ast_node_for_def (line 247) | defp parse_ast_node_for_def(ast, acc) do method unnest (line 256) | defp unnest(ast, acc) do method update_acc_for_def (line 260) | defp update_acc_for_def(acc, function_name, function_arity, last_impl) do method normalize_impl (line 284) | defp normalize_impl([{:__aliases__, _, module}]) do method normalize_impl (line 288) | defp normalize_impl(value) do method parse_ast_node_for_defmodules (line 308) | defp parse_ast_node_for_defmodules(ast, acc) do method pop_module_stack (line 320) | defp pop_module_stack(ast, acc) do method get_function_arity (line 324) | defp get_function_arity(nil), do: 0 method get_function_arity (line 325) | defp get_function_arity(args), do: length(args) method parse_ast_for_using (line 327) | defp parse_ast_for_using({:defmacro, _macro_line, [{:__using__, _line,... method parse_ast_for_using (line 330) | defp parse_ast_for_using(ast, acc), do: {ast, acc} method parse_ast_using_node (line 332) | defp parse_ast_using_node( method parse_ast_using_node (line 338) | defp parse_ast_using_node( method parse_ast_using_node (line 344) | defp parse_ast_using_node( method parse_ast_using_node (line 351) | defp parse_ast_using_node( method parse_ast_using_node (line 358) | defp parse_ast_using_node( method parse_ast_using_node (line 365) | defp parse_ast_using_node(ast, acc), do: {ast, acc} method update_acc_for_using (line 367) | defp update_acc_for_using(function_name, args, acc) do FILE: lib/module_report.ex class Doctor.ModuleReport (line 1) | defmodule Doctor.ModuleReport method build (line 43) | def build(%ModuleInformation{} = module_info) do method generate_module_name (line 59) | defp generate_module_name(module) do method calculate_missed_docs (line 65) | defp calculate_missed_docs(module_info) do method calculate_doc_coverage (line 86) | defp calculate_doc_coverage(module_info) do method calculate_missed_specs (line 99) | defp calculate_missed_specs(module_info) do method calculate_spec_coverage (line 123) | defp calculate_spec_coverage(module_info) do method has_module_doc? (line 136) | defp has_module_doc?(module_info) do method is_protocol_implementation? (line 140) | defp is_protocol_implementation?(module_info) do FILE: lib/report_utils.ex class Doctor.ReportUtils (line 1) | defmodule Doctor.ReportUtils method count_total_functions (line 11) | def count_total_functions(module_report_list) do method count_total_documented_functions (line 21) | def count_total_documented_functions(module_report_list) do method count_total_speced_functions (line 33) | def count_total_speced_functions(module_report_list) do method count_total_passed_modules (line 45) | def count_total_passed_modules(module_report_list, %Config{} = config) do method count_total_failed_modules (line 55) | def count_total_failed_modules(module_report_list, %Config{} = config) do method calc_overall_doc_coverage (line 65) | def calc_overall_doc_coverage(module_report_list) do method calc_overall_moduledoc_coverage (line 81) | def calc_overall_moduledoc_coverage(module_report_list) do method calc_overall_spec_coverage (line 97) | def calc_overall_spec_coverage(module_report_list) do method module_passed_validation? (line 113) | def module_passed_validation?( method valid_module_doc? (line 133) | defp valid_module_doc?(%ModuleReport{is_protocol_implementation: true}... method valid_module_doc? (line 137) | defp valid_module_doc?(%ModuleReport{properties: properties} = module_... method doctor_report_passed? (line 154) | def doctor_report_passed?(module_report_list, config) do method doctor_report_errors (line 162) | def doctor_report_errors(module_report_list, %Config{} = config) do method calc_coverage_pass (line 206) | defp calc_coverage_pass(_coverage, _threshold), do: true FILE: lib/reporter.ex class Doctor.Reporter (line 1) | defmodule Doctor.Reporter FILE: lib/reporters/full.ex class Doctor.Reporters.Full (line 1) | defmodule Doctor.Reporters.Full method generate_report (line 26) | def generate_report(module_reports, args) do method print_header (line 75) | defp print_header() do method print_divider (line 92) | defp print_divider do method print_footer (line 98) | defp print_footer(errors, passed, failed, doc_coverage, moduledoc_cove... method massage_coverage (line 132) | defp massage_coverage(coverage) do method massage_module_doc (line 140) | defp massage_module_doc(%{is_protocol_implementation: true}), do: "N/A" method massage_module_doc (line 141) | defp massage_module_doc(%{has_module_doc: true}), do: "Yes" method massage_module_doc (line 142) | defp massage_module_doc(%{has_module_doc: false}), do: "No" method massage_struct_type_spec (line 144) | defp massage_struct_type_spec(:not_struct), do: "N/A" method massage_struct_type_spec (line 145) | defp massage_struct_type_spec(true), do: "Yes" method massage_struct_type_spec (line 146) | defp massage_struct_type_spec(false), do: "No" FILE: lib/reporters/module_explain.ex class Doctor.Reporters.ModuleExplain (line 1) | defmodule Doctor.Reporters.ModuleExplain method generate_report (line 23) | def generate_report(%ModuleInformation{} = module_information, %Config... method valid_module? (line 82) | defp valid_module?(%ModuleReport{is_protocol_implementation: true}, _c... method valid_module? (line 84) | defp valid_module?(module_report, config) do method valid_struct_spec? (line 91) | defp valid_struct_spec?(module_report, config) do method valid_moduledoc? (line 96) | defp valid_moduledoc?(%ModuleReport{is_protocol_implementation: true},... method valid_moduledoc? (line 98) | defp valid_moduledoc?(module_report, config) do method valid_doc_coverage? (line 103) | defp valid_doc_coverage?(%ModuleReport{is_protocol_implementation: tru... method valid_doc_coverage? (line 105) | defp valid_doc_coverage?(module_report, config) do method valid_spec_coverage? (line 109) | defp valid_spec_coverage?(module_report, config) do method doc_coverage (line 113) | defp doc_coverage(module_report) do method spec_coverage (line 119) | defp spec_coverage(module_report) do method print_struct_spec (line 125) | defp print_struct_spec(%ModuleReport{} = module_report, %Config{} = co... method print_module_doc (line 137) | defp print_module_doc(%ModuleReport{is_protocol_implementation: true},... method print_module_doc (line 141) | defp print_module_doc(%ModuleReport{} = module_report, %Config{} = con... method print_doc_coverage (line 160) | defp print_doc_coverage(%ModuleReport{is_protocol_implementation: true... method print_doc_coverage (line 164) | defp print_doc_coverage(%ModuleReport{} = module_report, %Config{} = c... method print_spec_coverage (line 176) | defp print_spec_coverage(%ModuleReport{is_protocol_implementation: tru... method print_spec_coverage (line 180) | defp print_spec_coverage(%ModuleReport{} = module_report, %Config{} = ... method generate_header (line 192) | defp generate_header(function_name_length) do method has_doc (line 203) | defp has_doc(function, arity, :none, module_docs) do method has_doc (line 213) | defp has_doc(_, _, _, _) do method has_spec (line 217) | defp has_spec(function, arity, :none, module_specs) do method has_spec (line 224) | defp has_spec(_, _, _, _) do FILE: lib/reporters/output_utils.ex class Doctor.Reporters.OutputUtils (line 1) | defmodule Doctor.Reporters.OutputUtils method generate_table_line (line 13) | def generate_table_line(line_data) do method print_divider (line 27) | def print_divider(length) do method print_pass_or_fail (line 36) | def print_pass_or_fail(true), do: "\u2713" method print_pass_or_fail (line 37) | def print_pass_or_fail(false), do: "\u2717" method print_pass_or_fail (line 38) | def print_pass_or_fail(:not_struct), do: "N/A" method print_error (line 43) | def print_error(string), do: Mix.shell().info(ANSI.red() <> string <> ... method print_success (line 48) | def print_success(string), do: Mix.shell().info(ANSI.green() <> string... method gen_fixed_width_string (line 53) | def gen_fixed_width_string(value, width, padding \\ 2) method gen_fixed_width_string (line 67) | def gen_fixed_width_string(value, width, padding) do FILE: lib/reporters/short.ex class Doctor.Reporters.Short (line 1) | defmodule Doctor.Reporters.Short method generate_report (line 23) | def generate_report(module_reports, args) do method print_header (line 69) | defp print_header() do method print_divider (line 83) | defp print_divider do method print_footer (line 89) | defp print_footer(pass, passed, failed, doc_coverage, moduledoc_covera... method massage_coverage (line 109) | defp massage_coverage(coverage) do method massage_module_doc (line 117) | defp massage_module_doc(%{is_protocol_implementation: true}), do: "N/A" method massage_module_doc (line 118) | defp massage_module_doc(%{has_module_doc: true}), do: "Yes" method massage_module_doc (line 119) | defp massage_module_doc(%{has_module_doc: false}), do: "No" method massage_struct_type_spec (line 121) | defp massage_struct_type_spec(:not_struct), do: "N/A" method massage_struct_type_spec (line 122) | defp massage_struct_type_spec(true), do: "Yes" method massage_struct_type_spec (line 123) | defp massage_struct_type_spec(false), do: "No" FILE: lib/reporters/summary.ex class Doctor.Reporters.Summary (line 1) | defmodule Doctor.Reporters.Summary method generate_report (line 16) | def generate_report(module_reports, args) do method print_divider (line 34) | defp print_divider do method print_footer (line 40) | defp print_footer(pass, passed, failed, doc_coverage, moduledoc_covera... FILE: lib/specs.ex class Doctor.Specs (line 1) | defmodule Doctor.Specs method build (line 19) | def build({{name, arity}, _spec}) do FILE: mix.exs class Doctor.MixProject (line 1) | defmodule Doctor.MixProject method project (line 6) | def project do method application (line 34) | def application do method elixirc_paths (line 40) | defp elixirc_paths(:test), do: ["lib", "test/sample_files"] method elixirc_paths (line 41) | defp elixirc_paths(_), do: ["lib"] method package (line 43) | defp package() do method deps (line 56) | defp deps do FILE: test/config_test.exs class Doctor.ConfigTest (line 1) | defmodule Doctor.ConfigTest FILE: test/mix_doctor_test.exs class Mix.Tasks.DoctorTest (line 1) | defmodule Mix.Tasks.DoctorTest method get_shell_output (line 404) | defp get_shell_output() do method remove_at_exit_hook (line 413) | defp remove_at_exit_hook() do FILE: test/module_information_test.exs class Doctor.ModuleInformationTest (line 1) | defmodule Doctor.ModuleInformationTest FILE: test/module_report_test.exs class Doctor.ModuleReportTest (line 1) | defmodule Doctor.ModuleReportTest FILE: test/report_utils_test.exs class Doctor.ReportUtilsTest (line 1) | defmodule Doctor.ReportUtilsTest FILE: test/sample_files/all_docs.ex class Doctor.AllDocs (line 1) | defmodule Doctor.AllDocs method func_1 (line 6) | def func_1(input) do method func_2 (line 14) | def func_2(input), do: input + 2 method func_5 (line 28) | def func_5(input_1, input_2) do method func_5 (line 34) | def func_5(input_1, input_2, input_3) do method func_6 (line 40) | def func_6("match" = input), do: input method func_6 (line 41) | def func_6("matches" = input), do: input method func_6 (line 42) | def func_6("matcher" = input), do: input method func_6 (line 43) | def func_6("matching" = input), do: input method func_6 (line 44) | def func_6(_), do: "no match" FILE: test/sample_files/another_behaviour_module.ex class Doctor.AnotherBehaviourModule (line 5) | defmodule Doctor.AnotherBehaviourModule class Doctor.AnotherBehaviourModule.Behaviour (line 1) | defmodule Doctor.AnotherBehaviourModule.Behaviour method func (line 9) | def func, do: "Hello world" FILE: test/sample_files/behaviour_module.ex class Doctor.BehaviourModule (line 1) | defmodule Doctor.BehaviourModule method init (line 9) | def init(stack) do method handle_call (line 15) | def handle_call(:pop, _from, [head | tail]) do method handle_call (line 19) | def handle_call(:nop, _from, state) do method handle_cast (line 24) | def handle_cast({:push, element}, state) do FILE: test/sample_files/custom_behaviour_module.ex class Doctor.FooBarBehaviour (line 1) | defmodule Doctor.FooBarBehaviour class Doctor.FooBar (line 19) | defmodule Doctor.FooBar method foo (line 26) | def foo(:five), do: 5 method foo (line 30) | def foo(:one), do: 1 method foo (line 33) | def foo(:two), do: 2 method bar (line 36) | def bar(:one), do: 1 method bar (line 37) | def bar(:two), do: 2 method bar (line 38) | def bar(:three), do: 3 method bar (line 41) | def bar(:test, value), do: value method bar (line 45) | def bar(:bar, value), do: value method bar (line 48) | def bar(:noop, _value1, _value2), do: 0 FILE: test/sample_files/derive_protocol.ex class Doctor.DeriveProtocol (line 1) | defmodule Doctor.DeriveProtocol FILE: test/sample_files/exception.ex class Doctor.Exception (line 1) | defmodule Doctor.Exception method exception (line 5) | def exception(value) do FILE: test/sample_files/implement_protocol.ex class Doctor.ImplementProtocol (line 1) | defmodule Doctor.ImplementProtocol FILE: test/sample_files/nested_module.ex class Doctor.ParentModule (line 1) | defmodule Doctor.ParentModule method outer (line 22) | def outer, do: :ok class Nested (line 6) | defmodule Nested method inner (line 15) | def inner, do: :ok FILE: test/sample_files/no_docs.ex class Doctor.NoDocs (line 1) | defmodule Doctor.NoDocs method func_1 (line 2) | def func_1(input) do method func_2 (line 6) | def func_2(input), do: input + 2 method func_5 (line 14) | def func_5(input_1, input_2) do method func_5 (line 18) | def func_5(input_1, input_2, input_3) do method func_6 (line 22) | def func_6("match" = input), do: input method func_6 (line 23) | def func_6("matches" = input), do: input method func_6 (line 24) | def func_6("matcher" = input), do: input method func_6 (line 25) | def func_6("matching" = input), do: input method func_6 (line 26) | def func_6(_), do: "no match" FILE: test/sample_files/no_struct_spec_module.ex class Doctor.NoStructSpecModule (line 1) | defmodule Doctor.NoStructSpecModule FILE: test/sample_files/opaque_struct_spec_module.ex class Doctor.OpaqueStructSpecModule (line 1) | defmodule Doctor.OpaqueStructSpecModule FILE: test/sample_files/partial_docs.ex class Doctor.PartialDocs (line 1) | defmodule Doctor.PartialDocs method func_1 (line 2) | def func_1(input) do method func_2 (line 6) | def func_2(input), do: input + 2 method func_5 (line 18) | def func_5(input_1, input_2) do method func_5 (line 24) | def func_5(input_1, input_2, input_3) do method func_6 (line 30) | def func_6("match" = input), do: input method func_6 (line 31) | def func_6("matches" = input), do: input method func_6 (line 32) | def func_6("matcher" = input), do: input method func_6 (line 33) | def func_6("matching" = input), do: input method func_6 (line 34) | def func_6(_), do: "no match" FILE: test/sample_files/struct_spec_module.ex class Doctor.StructSpecModule (line 1) | defmodule Doctor.StructSpecModule FILE: test/sample_files/use_module.ex class Doctor.UseModule (line 1) | defmodule Doctor.UseModule