-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Minor - P4
-
None
-
Affects Version/s: None
-
Component/s: Lint
-
None
-
Storage Engines - Foundations, Storage Engines - Persistence
-
0.349
-
None
-
None
Summary
dist/s_string never spell-checks dist/*.py, so typos in the config and statistics descriptions that feed the public API documentation slip through CI. A typo such as duriing in dist/api_data.py is invisible to s_all.
Root cause
Two independent gaps:
- The file list only sweeps dist for *.[chsy]. Python files are collected under test only, so dist/api_data.py is never handed to aspell.
- Even if it were listed, the *.py arm of run_aspell_for sets --add-context-delimiters='# \0', which checks # comments only. The prose in api_data.py lives in r'''...''' strings and is therefore skipped.
The option in question is declared undoc=True, so its description is not copied into src/include/wiredtiger.in either — the typo exists in exactly one place, and that place is unchecked.
Proposed fix
- Add find dist -name '*.py' to the file list.
- Add a dist/.py arm to run_aspell_for that also declares ''' ''' and """ """ as context delimiters. This must be matched on path, not extension: applying it to test//.py adds 979 new words (identifiers inside f-strings and code embedded in triple-quoted strings) versus 72 for dist, which would dilute s_string.ok and hide future typos.
- Strip \n/\t/\r escapes in check()'s sed, since the dist scripts embed generated C in string literals. Reduces the new-word count from 86 to 72.
Fallout
Eight real typos are surfaced and need fixing:
| Word | Location |
|---|---|
| duriing | dist/api_data.py:2205 |
| cursos | dist/api_data.py:1831 |
| Descripe | dist/api_config.py:89 |
| descpriptions | dist/stat.py:27 |
| punctation | dist/stat.py:40 |
| doens't | dist/prototypes.py:229 |
| doxgen | dist/wtperf_config.py:3 |
| paramter | dist/s_function_verbose.py:39 |
| sterror | dist/api_err.py:223 |
Roughly 64 legitimate words (doxygen, offsetof, bytecode, dhandle, ...) must be added to dist/s_string.ok. These should be added by hand in LC_ALL=C sort order rather than by running s_string -r, since the script's own header warns that regenerating the list against a single machine's aspell catalog breaks other aspell versions.
Out of scope
- Python under bench/ (58 files), tools/ (45), lang/ (6), examples/ (2) and src/ (3) is also unchecked. None of it feeds the public documentation.
- s_string exits 0 when aspell is absent, and s_all's errchk explicitly whitelists .*skipped. This is deliberate for local development, but means a CI image change would silently disable spell checking. Worth separate hardening.
Definition of done
- s_string reports the typos in dist/*.py and s_all fails on them.
- The eight typos are corrected and dist/s_string.ok is updated, in commits kept separate from the script change.
- cd dist && ./s_string produces no output on a clean tree.