s_string does not spell-check the prose in dist/*.py, hiding typos in generated API docs

XMLWordPrintableJSON

    • 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:

      1. 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.
      2. 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.

            Assignee:
            Etienne Petrel
            Reporter:
            Etienne Petrel
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: