# Doctor
[![Hex.pm](https://img.shields.io/hexpm/v/doctor.svg)](http://hex.pm/packages/doctor)
**WORK IN PROGRESS**
Ensure that your documentation is healthy with Doctor! This library contains a mix task which you can run against your project to generate a documentation coverage report. Items which are reported on include: the presence of module docs, which functions don't have docs, and which functions don't have type specs. You can generate a `.doctor.exs` config file to specify what thresholds are acceptable for your project. If documentation coverage drops below your specified thresholds, the `mix doctor` task will return a non zero exit status.
The primary motivation with this tool is to have something simple which can be hooked up into CI to ensure that project documentation standards are respected.
## Installation
[Available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `doctor` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:doctor, "~> 0.1.0"}
]
end
```
Documentation can be found at [https://hexdocs.pm/doctor](https://hexdocs.pm/doctor).
## Usage
Doctor comes with 2 mix tasks. One to run the documentation coverage report, and another to generate a `.doctor.exs` config file.
To run the doctor mix task and generate a report run: `mix doctor`
To generate a `.doctor.exs` config file with defaults, run: `mix doctor.gen.config`
## Sample report
```bash
Doctor file found. Loading configuration.
-----------------------------------------------------------------------------------------------------------------
DOC_COV SPEC_COV FILE FUNCTIONS MISSED_DOCS MISSED_SPECS MODULE_DOC
0% 0% lib/cli/cli.ex 1 1 1 YES
0% 0% lib/config.ex 3 3 3 NO
0% 0% lib/docs.ex 1 1 1 YES
NA NA lib/doctor.ex 0 0 0 YES
0% 0% lib/mix/tasks/doctor.ex 1 1 1 NO
0% 0% lib/mix/tasks/doctor.gen.config.ex 1 1 1 NO
33% 0% lib/module_information.ex 3 2 3 YES
0% 0% lib/module_report.ex 1 1 1 NO
NA NA lib/reporter.ex 0 0 0 NO
0% 0% lib/reporters/full.ex 1 1 1 NO
0% 0% lib/reporters/summary.ex 1 1 1 NO
0% 0% lib/specs.ex 1 1 1 YES
-----------------------------------------------------------------------------------------------------------------
Summary:
Passed Modules: 1
Failed Modules: 11
Total Doc Coverage: 2.8%
Total Spec Coverage: 0.0%
Doctor validation has failed!
```