跳转到主要内容

保守型交互式源代码拼写检查器。

项目描述

Build status

scspell 是一个源代码拼写检查器。这是一个非官方的分支(基于 https://launchpad.net/scspell),它可以在 Python 2 和 3 上运行。

scspell 并不试图特别聪明——它只是做了能做的最简单的事情

  1. 所有的字母数字字符串(由字母、数字和下划线组成的字符串)都是拼写检查的标记。

  2. 每个标记被分成一个或多个子标记。下划线和数字总是分隔标记,大写字母将开始新的子标记。换句话说,some_variablesomeVariable 都会生成子标记列表 {some, variable}。

  3. 所有长度超过三个字符的子标记都将与一组词典进行匹配,如果匹配失败,则提示用户操作。当与包含的英文词典进行匹配时,使用 前缀匹配;这种选择允许使用截断的单词,如 dict 作为有效的子标记。

当应用于大多数流行的编程语言编写的代码,并使用典型的命名约定时,此算法通常会捕获许多错误,同时错误率不会很令人烦恼。

为了捕获更多的拼写错误,scspell 能够针对每个文件与一组特定于该文件的词典单词进行匹配。对于任何给定的文件,可以搜索多达三个不同的子词典

  1. 自然语言词典。(默认情况下,scspell 提供美国英语词典。)

  2. 特定编程语言的词典,旨在包含该语言特有的拼写不规则的关键词和API。(scspell 为多种流行的编程语言提供小的默认词典。)

  3. 特定文件词典,旨在包含不太可能出现在多个独特文件中的不寻常字符串。

用法

要开始拼写检查,运行

$ scspell source_file1 source_file2 ...

对于每次拼写检查失败,您将看到如下类似的输出

filename.c:27: Unmatched 'someMispeldVaraible' -> {mispeld, varaible}

换句话说,标记“someMispeldVaraible”出现在 filename.c 的第27行,它包含子标记“mispeld”和“varaible”,这两个都未通过拼写检查算法。您将提示采取的操作

(i)忽略

跳到下一个不匹配的标记,不采取任何操作。

(I)忽略所有

在本次拼写检查会话的剩余时间中,每次遇到此标记时都跳过。

(r)eplace

输入一些文本作为替换此标记的文本,并仅在此处替换文件中的标记。

(R)eplace all

输入一些文本作为替换此标记的文本,并替换直到当前文件末尾的每个标记出现。

(a)dd to dictionary

将一个或多个标记添加到一个词典中(见下文)。

显示 (c)ontext

打印出一些与不匹配标记相关的上下文行。

如果您意外选择了替换操作,请输入空字符串以取消。

如果您选择了 (a)dd to dictionary 选项,那么对于每个子标记您将会有以下选项提示

(b)ack

返回上一菜单,不采取任何操作。

(i)忽略

跳到下一个子标记,不采取任何操作。

添加到 (p)rogramming language dictionary

将此子标记添加到与当前文件编程语言相关的词典中。scspell 使用文件扩展名来确定语言,因此您只会为具有扩展名的文件看到此选项。

添加到 (f)ile-specific dictionary

将此子标记添加到与当前文件相关的词典中。您只会为具有此类嵌入式ID或文件ID映射中条目的文件看到此选项。有关详细信息,请参阅 创建文件ID

添加到 (N)ew file-specific dictionary

为当前文件创建新的文件ID,记录新文件ID到文件ID映射中,并将此子标记添加到与该文件ID相关的新文件特定词典中。您只会为既没有嵌入式ID也没有文件ID映射条目的文件以及提供了 --relative-to 选项的情况看到此选项。有关详细信息,请参阅 创建文件ID

添加到 (n)atural language dictionary

将此子标记添加到自然语言词典中。

如果 scspell 没有找到未知标记,则退出状态为0。如果有未知标记,则退出状态为1。如果由于处理过的信号(例如,来自 ^C 的 SIGINT)而终止,则退出状态为2。

拼写检查选项

–report-only

此选项会导致 scspell 将其认为有错误的子令牌的报告输出到标准错误,而不是提供上述描述的交互式菜单。对于每个子令牌,报告将包括文件名、行号和完整令牌。如果发现任何错误,scspell 将以退出码 1 退出,如果运行无错误,则退出码为 0。

报告错误的格式与交互模式不同。使用 --report-only,上述报告将如下所示

filename.c:27: 'mispeld', 'varaible' were not found in the dictionary (from token 'someMispeldVaraible')
–no-c-escapes

默认情况下,scspell 会将文件视为包含 C 风格的字符转义。也就是说,给定 printf("Hello\nworld."),它将考虑令牌“hello”和“world”,而不是“nworld”。

使用 --no-c-escapes 选项会导致 scspell 不将 \ 视为特殊字符,例如在 LaTeX 文件中可能写入 \Alpha\beta\gamma\delta。如果不使用此选项,scspell 将会看到令牌“lpha”、“eta”、“amma”和“elta”。

创建文件 ID

如果您希望 scspell 能够唯一标识一个文件,从而创建特定于文件的词典,那么 scspell 必须能够找到文件 ID 来标识文件和特定于文件的词典。有两种方法可以让 scspell 找到文件 ID

  1. 文件 ID 可以直接嵌入到文件中,使用以下形式的字符串

    scspell-id: <unique ID>
  2. 文件 ID 映射文件中的一个条目将文件名与文件 ID 相关联。

唯一的 ID 必须仅由字母、数字、下划线和破折号组成。scspell 可以使用 --gen-id 选项生成合适的唯一 ID 字符串

$ scspell --gen-id
scspell-id: e497803c-523a-11de-ae42-0017f2ee0f37

(您可能希望将文件的唯一 ID 放置在源代码注释中。)

在交互式使用过程中,(a)dd to dictionary -> add to (N)ew file-specific dictionary 选项将为当前文件创建一个新的文件 ID,并将其添加到文件 ID 映射文件中。

–relative-to RELATIVE_TO

文件 ID 映射中存储的文件名是相对路径。此选项指定它们相对于什么。如果没有指定此选项,则不会咨询文件 ID 映射,并且不会提供 add to (N)ew file-specific dictionary 选项。

管理文件 ID

这些选项指导 scspell 操作文件 ID 映射。(这些都可以通过手动编辑文件 ID 映射来完成)。它们对文件中嵌入的文件 ID 没有影响。

–rename-file FROM_FILE TO_FILE

更改文件 ID 映射中映射的文件名。在重命名具有特定于文件词典和文件 ID 映射条目的文件后,可以使用此选项使条目“跟随”文件。

–delete-files

从文件 ID 映射中删除文件名。如果是给定文件 ID 的唯一文件名,则从映射中删除文件 ID,并从词典中删除其词表。

–merge-file-ids FROM_ID TO_ID

合并两个文件 ID 引用的特定于文件的词典。FROM_ID 列表中的所有单词都移动到 TO_ID 列表中。FROM_ID 文件 ID 从映射中删除,并更改使用它的任何文件以使用 TO_ID。FROM_ID 或 TO_ID 可以作为文件名给出,在这种情况下,该文件的文件 ID 用于该参数。

共享词典

在同一个源树中工作的开发团队可能希望共享一个公共字典。您可以通过执行以下操作永久设置共享字典的位置:

$ scspell --set-dictionary=/path/to/dictionary_file.txt

字典格式为简单的按行分隔的单词列表,因此如果需要,它可以很容易地由版本控制系统管理。

当前字典可以通过执行以下操作保存到文件:

$ scspell --export-dictionary=/path/to/output_file.txt

您还可以使用 --override-dictionary 选项覆盖单个拼写检查会话的字典位置

$ scspell --override-dictionary=/path/to/dictionary_file.txt source_file1 ...
–base-dict BASE_DICT

基本字典用于查找单词,但在运行时不会被修改。通过使用

$ scspell –base-dict ~/.dict –override-dictionary proj/.dict source…

在运行时添加的单词将被添加到 proj/.dict,而 ~/.dict 将保持不变。这样,proj/.dict 可能仅限于为 proj/ 添加的单词。当 proj/.dict 被提交到源控制并由许多用户共享时,这可能更为方便。

–use-builtin-base-dict

使用与 scspell 一起提供的字典文件作为基本字典。

–filter-out-base-dicts

读取由常规字典选择选项指定的字典,在此称为 项目字典。读取由 base-dict 选项指定的基本字典。从项目字典中删除基本字典中的所有单词,并将项目字典写回。

当项目字典是使用不支持基本字典的较早版本的 scspell 生成时,这可能很有用。

安装

通过 pip 安装 scspell

$ pip install scspell3k

或者,下载并解压缩源代码存档,切换到存档根目录,然后运行安装脚本

$ python setup.py install

在类 UNIX 系统上,如果您要将安装到需要 root 特权的目录,您可能需要使用 sudo

$ sudo python setup.py install

许可证

scspell 是自由软件,根据 GNU 通用公共许可证的版本 2 许可;有关详细信息,请参阅 COPYING.txt

与 scspell 一起分发的英语字典源自 SCOWL 单词列表 。有关该字典适用的各种许可证,请参阅 SCOWL-LICENSE.txt

项目详细信息


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分布

scspell3k-2.2.tar.gz (272.7 kB 查看哈希值)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面