typos/README.md

126 lines
3.5 KiB
Markdown
Raw Normal View History

2019-07-03 21:22:36 -04:00
# typos
2019-01-22 17:01:33 -05:00
2019-07-03 21:22:36 -04:00
> **Source code spell checker**
2019-01-22 17:01:33 -05:00
Finds and corrects spelling mistakes among source code:
- Fast enough to run on monorepos
- Low false positives so you can run on PRs
2021-05-19 20:48:33 -04:00
![Screenshot](./docs/screenshot.png)
2019-10-25 09:49:41 -04:00
[![Build Status](https://dev.azure.com/crate-ci/crate-ci/_apis/build/status/typos?branchName=master)](https://dev.azure.com/crate-ci/crate-ci/_build/latest?definitionId=11&branchName=master)
[![codecov](https://codecov.io/gh/crate-ci/typos/branch/master/graph/badge.svg)](https://codecov.io/gh/crate-ci/typos)
2019-01-22 17:01:33 -05:00
[![Documentation](https://img.shields.io/badge/docs-master-blue.svg)][Documentation]
2019-07-03 21:22:36 -04:00
![License](https://img.shields.io/crates/l/typos.svg)
[![Crates Status](https://img.shields.io/crates/v/typos.svg)](https://crates.io/crates/typos)
2019-01-22 17:01:33 -05:00
Dual-licensed under [MIT](LICENSE-MIT) or [Apache 2.0](LICENSE-APACHE)
2019-01-22 17:01:33 -05:00
## Documentation
2019-01-22 17:01:33 -05:00
- [Installation](#install)
2021-05-28 09:33:44 -04:00
- [Getting Started](#getting-started)
- [False Positives](#false-positives)
- [Integrations](#integrations)
- [GitHub Action](docs/github-action.md)
2021-05-31 20:51:03 -04:00
- [Custom](#custom)
- [Debugging](#debugging)
- [Reference](docs/reference.md)
- [Comparison with other spell checkers](docs/comparison.md)
- [Benchmarks](benchsuite/runs)
- [Design](docs/design.md)
- [Contribute](CONTRIBUTING.md)
- [CHANGELOG](CHANGELOG.md)
2019-01-22 17:01:33 -05:00
## Install
2019-01-22 17:01:33 -05:00
[Download](https://github.com/crate-ci/typos/releases) a pre-built binary
2021-05-19 20:54:51 -04:00
(installable via [gh-install](https://github.com/crate-ci/gh-install)).
2019-01-22 17:01:33 -05:00
Or use rust to install:
```bash
cargo install typos-cli
```
2021-05-28 09:33:44 -04:00
## Getting Started
Most commonly, you'll either want to see what typos are available with
```bash
typos
```
Or have them fixed
```bash
typos --write-changes
typos -w
```
If there is any ambiguity (multiple possible corrections), `typos` will just report it to the user and move on.
### False-positives
Sometimes, what looks like a typo is intentional, like with people's names, acronyms, or localized content.
To mark an identifier or word as valid, add it your [`_typos.toml`](docs/reference.md) by declaring itself as the valid spelling:
```toml
[default.extend-identifiers]
# *sigh* this just isn't worth the cost of fixing
AttributeIDSupressMenu = "AttributeIDSupressMenu"
[default.extend-words]
# Don't correct the surname "Teh"
teh = "teh"
```
2021-05-28 20:07:20 -04:00
For cases like localized content, you can disable spell checking of file contents while still checking the file name:
2021-05-28 19:42:09 -04:00
```toml
[type.po]
extend-globs = ["*.po"]
check-file = false
```
(run `typos --type-list` to see configured file types)
2021-05-28 20:07:20 -04:00
If you need some more flexibility, you can completely exclude some files from consideration:
2021-05-28 09:33:44 -04:00
```toml
[files]
extend-exclude = ["localized/*.po"]
```
### Integrations
2021-05-31 20:51:03 -04:00
- [GitHub Actions](docs/github-actions.md)
#### Custom
`typos` provides several building blocks for custom native integrations
2021-05-28 09:33:44 -04:00
- `-` reads from `stdin`, `--write-changes` will be written to `stdout`
- `--diff` to provide a diff
- `--format json` to get jsonlines with exit code 0 on no errors, code 2 on typos, anything else is an error.
Examples:
```bash
# Read file from stdin, write corrected version to stdout
typos - --write-changes
# Creates a diff of what would change
typos dir/file --diff
# Fully programmatic control
typos dir/file --format json
```
2021-05-28 19:37:01 -04:00
### Debugging
You can see what the effective config looks like by running
```bash
typos --dump-config -
```
You can then see how typos is processing your project with
```bash
typos --files
typos --identifiers
2021-05-28 20:08:24 -04:00
typos --words
2021-05-28 19:37:01 -04:00
```
If you need to dig in more, you can enable debug logging with `-v`
[Crates.io]: https://crates.io/crates/typos-cli
2019-07-03 21:22:36 -04:00
[Documentation]: https://docs.rs/typos