cargo-todox 0.2.4

Ensure source files in a cargo project do not contain TODOX issues.
# cargo-todox

[![Verify pushed commit](https://github.com/orenbenkiki/cargo-todox/actions/workflows/on_push.yml/badge.svg)](https://github.com/orenbenkiki/cargo-todox/actions/workflows/on_push.yml) [![Monthly audit](https://github.com/orenbenkiki/cargo-todox/actions/workflows/monthly_audit.yml/badge.svg)](https://github.com/orenbenkiki/cargo-todox/actions/workflows/on_updated_dependencies.yml) [![codecov](https://codecov.io/gh/orenbenkiki/cargo-todox/branch/master/graph/badge.svg)](https://codecov.io/gh/orenbenkiki/cargo-todox) [![Api Docs](https://docs.rs/cargo-todox/badge.svg)](https://docs.rs/crate/cargo-todox)

Ensure source files in a cargo project do not contain `TODOX` issues.

## Installing

To install:

```console
cargo install cargo-todox
```

## Running

To run on a cargo project in the current working directory:

```console
cargo todox
```

This will list all (case insensitive) occurrences of the string `TODOX` _anywhere_ in _any_ of the project source files
(taken from `git ls-files`). It will succeed if and only if there are no such occurrences.

Supported command line flags are:
* Run `cargo todox DIRECTORY` to only check files in a specific directory.
* Run `cargo todox --output FILE` to redirect the output to a file.
* Run `cargo todox --version` to report the version number.
* Run `cargo todox --help` to get a help message listing the options.

## Why use TODOX?

Using `TODOX` allows making temporary changes to the code which must be addressed before checking the code in. This can
for any of several reasons: debugging, getting something quick-and-dirty running, investigating alternatives, or just
noting an issue which must be addressed.

Whatever the reason, using `TODOX` allows marking the issue and moving on without having to worry about it. Before
completing the work, all such markers need to be removed, either by converting them into a `TODO` for later work or by
fixing the issue. This is where `cargo todox` comes in - it emits a nicely formatted list of all the locations of this
marker anywhere in the project, and only exits with a zero status only if no such markers are found. It is therefore
easy to include `cargo todox` in the pre-commit checks, and/or in CI builds.

This is a generalization of using `report_fixme = "Always"` in `rustfmt`, a feature which seems on its way to be
[removed](https://github.com/rust-lang/rustfmt/issues/5102). The differences between `report_fixme` and `cargo todox`
are:

* It looks _everywhere_ in _all_ source files, rather than only in comments in `.rs` files. This allows using `todox` as
  a part of the name of a variable, inside comments, inside printed debugging messages, inside `.toml` files, inside
  `.yaml` files, in the `README` files, etc. In contrast, `FIXME` is only detected in comments in rust files, which
  allows for most, but not all, of the useful cases for such a marker.

* It allows for exempting lines by saying `ALLOW TODOX` (typically in a comment). This allows configuration files to
  specify running `cargo todox` without being reported themselved.

* It looks for the (case insensitive) string `TODOX`, rather than the string `FIXME`.

## License

`cargo-todox` is distributed under the GNU General Public License (Version 3.0). See the [LICENSE](LICENSE.txt) for
details.