Source code spell checker
Find a file
2021-06-07 07:44:21 -05:00
.github test(action): Update test case for typos 2021-06-05 13:52:44 -05:00
benches perf(cli): Expand dict benchmark 2021-06-04 09:34:33 -05:00
benchsuite perf: Re-enable large-file checks 2021-05-22 21:21:03 -05:00
crates chore: Release 2021-06-05 14:39:37 -05:00
docker chore: Release 2021-06-05 14:37:25 -05:00
docs Fix example in github-action.md 2021-06-05 10:17:32 +02:00
src fix(cli): Don't panic 2021-06-07 07:44:21 -05:00
tests fix(cli): Don't panic 2021-06-07 07:44:21 -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
action.yml feat(ci): adding github action to use typos to check spelling (#267) 2021-05-31 19:42:45 -05:00
azure-pipelines.yml chore(ci): Clarify step names 2021-05-15 19:03:10 -05:00
Cargo.lock chore: Release 2021-06-05 14:39:37 -05:00
Cargo.toml chore: Release 2021-06-05 14:39:37 -05:00
CHANGELOG.md fix(cli): Don't panic 2021-06-07 07:44:21 -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
Dockerfile feat(ci): adding github action to use typos to check spelling (#267) 2021-05-31 19:42:45 -05: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 Fix link to github-action.md in README.md 2021-06-05 10:26:13 +02: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

Custom

typos provides several building blocks for custom native 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