mirror of
https://github.com/crate-ci/typos.git
synced 2024-11-22 00:51:11 -05:00
33 lines
1.2 KiB
Markdown
33 lines
1.2 KiB
Markdown
|
# Design
|
||
|
|
||
|
## Requirements
|
||
|
|
||
|
Spell checks source code:
|
||
|
- Requires special word-splitting logic to handle situations like hex (`0xDEADBEEF`), `c\nescapes`, `snake_case`, `CamelCase`, `SCREAMING_CASE`, and maybe `arrow-case`.
|
||
|
- Each programming language has its own quirks, like abbreviations, lack of word separator (`copysign`), etc
|
||
|
- Backwards compatibility might require keeping misspelled words.
|
||
|
- Case for proper nouns is irrelevant.
|
||
|
|
||
|
Checking for errors in a CI:
|
||
|
- No false-positives.
|
||
|
- On spelling errors, sets the exit code to fail the CI.
|
||
|
|
||
|
Quick feedback and resolution for developer:
|
||
|
- Fix errors for the user.
|
||
|
- Integration into other programs, like editors:
|
||
|
- `fork`: easy to call into and provides a stable API, including output format
|
||
|
- linking: either in the language of choice or bindings can be made to language of choice.
|
||
|
|
||
|
## Trade Offs
|
||
|
|
||
|
### typos uses a blacklist
|
||
|
|
||
|
Blacklist: Known typos that map to their corresponding word
|
||
|
- Ignores unknown typos
|
||
|
- Ignores typos that follow c-escapes if they aren't handled correctly
|
||
|
|
||
|
Whitelist: A confidence rating is given for how close a word is to one in the whitelist
|
||
|
- Sensitive to false positives due to hex numbers and c-escapes
|
||
|
- Traditional spell checkers use a whitelist.
|
||
|
|