Source code spell checker
Find a file
2021-05-28 19:07:20 -05:00
.github Upgrade to GitHub-native Dependabot 2021-04-28 22:03:08 +00:00
benches refactor(cli)!: Shift Report impls to bin 2021-05-12 19:51:41 -05:00
benchsuite perf: Re-enable large-file checks 2021-05-22 21:21:03 -05:00
crates chore: Update codespell dict 2021-05-22 21:44:56 -05:00
docs docs: Remove reference to misspell-rs 2021-05-22 21:17:37 -05:00
src fix(cli): Don't panic when finding column 2021-05-27 21:28:42 -05:00
.clog.toml fix(docs): Replace mentions of scorrect with typos 2021-01-10 23:13:38 -05:00
.gitignore Initial commit 2019-01-22 15:01:33 -07:00
.ignore feat: Support english dialects 2020-08-20 19:37:37 -05:00
azure-pipelines.yml chore(ci): Clarify step names 2021-05-15 19:03:10 -05:00
Cargo.lock chore: Release 2021-05-28 08:34:11 -05:00
Cargo.toml chore: Release 2021-05-28 08:34:11 -05:00
CHANGELOG.md chore: Release 2021-05-28 08:34:11 -05:00
committed.toml chore: Pass along improvements 2021-02-04 21:46:38 -06:00
CONTRIBUTING.md docs: Fix links 2019-10-25 09:58:24 -06:00
LICENSE-APACHE Initial commit 2019-01-22 15:01:33 -07:00
LICENSE-MIT fix(docs): Replace mentions of scorrect with typos 2021-01-10 23:13:38 -05:00
README.md docs(cli): Improve some wording 2021-05-28 19:07:20 -05:00
release.toml chore: Fix release commit message 2021-04-21 12:14:19 -05:00

typos

Source code spell checker

Finds and corrects spelling mistakes among source code:

  • Fast enough to run on monorepos
  • Low false positives so you can run on PRs

Screenshot

Build Status codecov Documentation License Crates Status

Dual-licensed under MIT or Apache 2.0

Documentation

Install

Download a pre-built binary (installable via gh-install).

Or use rust to install:

cargo install typos-cli

Getting Started

Most commonly, you'll either want to see what typos are available with

typos

Or have them fixed

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 by declaring itself as the valid spelling:

[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"

For cases like localized content, you can disable spell checking of file contents while still checking the file name:

[type.po]
extend-globs = ["*.po"]
check-file = false

(run typos --type-list to see configured file types)

If you need some more flexibility, you can completely exclude some files from consideration:

[files]
extend-exclude = ["localized/*.po"]

Integrations

typos provides several building blocks for custom integrations

  • - 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:

# 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

Debugging

You can see what the effective config looks like by running

typos --dump-config -

You can then see how typos is processing your project with

typos --files
typos --identifiers
typos -- words

If you need to dig in more, you can enable debug logging with -v