typos
源代码拼写检查器
查找并纠正源代码中的拼写错误:
- 速度快到足以在大型代码库中运行
- 低误报率,可以在PR中运行
双重许可:MIT或Apache 2.0
文档
安装
下载预构建的二进制文件 (可通过gh-install安装)。
或使用rust安装:
cargo install typos-cli
或使用Homebrew安装:
brew install typos-cli
或使用Conda安装:
conda install typos
或使用Pacman安装:
sudo pacman -S typos
入门
最常见的情况是,您可能想查看有哪些可用的拼写错误:
typos
或者修复它们:
typos --write-changes
typos -w
如果存在任何歧义(多个可能的纠正),typos
将只向用户报告并继续。
误报
有时,看起来像拼写错误的实际上是有意为之的,比如人名、缩写词或本地化内容。
要将单词或标识符(单词组)标记为有效,请通过在_typos.toml
中声明它自身为有效拼写来添加它:
[default]
extend-ignore-identifiers-re = [
# *叹气* 这实在不值得修复的成本
"AttributeID.*Supress.*",
]
[default.extend-identifiers]
# *叹气* 这实在不值得修复的成本
AttributeIDSupressMenu = "AttributeIDSupressMenu"
[default.extend-words]
# 不要纠正姓氏"Teh"
teh = "teh"
对于本地化内容等情况,您可以禁用文件内容的拼写检查,同时仍然检查文件名:
[type.po]
extend-glob = ["*.po"]
check-file = false
(运行typos --type-list
查看已配置的文件类型)
如果您需要更多灵活性,可以完全排除某些文件:
[files]
extend-exclude = ["localized/*.po"]
集成
自定义
typos
为自定义原生集成提供了几个构建块:
-
从stdin
读取,--write-changes
将写入stdout
--diff
提供差异--format json
获取jsonlines,无错误时退出代码为0,有拼写错误时为2,其他情况为错误。
示例:
# 从stdin读取文件,将纠正后的版本写入stdout
typos - --write-changes
# 创建更改的差异
typos dir/file --diff
# 完全程序化控制
typos dir/file --format json
调试
您可以通过运行以下命令查看有效配置的样子:
typos --dump-config -
然后,您可以使用以下命令查看typos如何处理您的项目:
typos --files
typos --identifiers
typos --words
如果需要深入挖掘,可以使用-v
启用调试日志记录。
常见问题
为什么...没有被纠正?
文件是否出现在typos --files
中?
如果没有,请使用typos --dump-config -
检查您的配置。
[files]
表控制我们如何遍历文件。
如果您使用files.extend-exclude
,
是否遇到了#593问题?
如果您使用files.ignore-vcs = true
,
文件是否在您的.gitignore
中但git仍然跟踪它?
最好明确允许文件(参见#909)。
标识符是否出现在typos --identifiers
中或单词是否出现在typos --words
中?
如果没有,它可能受到typos的一些启发式方法的影响,
这些方法用于检测非单词(如哈希)或
明确的单词(如\
转义后的单词)。
如果它出现了,可能是typos
还不知道它。
typos
维护一个已知拼写错误纠正列表,以保持低误报率,从而可以安全地无人值守运行。
这与大多数人使用的拼写检查界面不同,后者通常有一个已知的有效单词列表。在这种情况下,拼写检查器试图通过找到最接近的单词来猜测您的意图。然后,当一个单词不够接近时,它会假设您知道得最清楚。用户有机会验证这些纠正并明确允许或拒绝它们。
有关这些方法的权衡的更多信息,请参阅设计。