4.0 KiB
Spell Checking Workflows
ResInsight uses automated spell checking to maintain code quality and catch typos in code, comments, and documentation.
Two Workflows
1. spell-check.yml (Full Repository Check)
When it runs: On every push to any branch
What it does:
- Checks all code in four directories:
ApplicationExeCode/ApplicationLibCode/Fwk/AppFwk/GrpcInterface/
- Uses
codespellto find and suggest fixes for typos - Automatically creates a PR with fixes if typos are found
- PR will be created on a branch named
spell-check-patches-*
Use case: Regular maintenance and keeping the entire codebase clean
2. spell-check-pr.yml (PR Review Check)
When it runs: On pull requests that modify files in the target directories
What it does:
- Only checks files that were changed in the PR
- Uses
codespellfor spell checking - Checks these file types:
.cpp,.h,.inl,.py,.md,.txt,.cmake,.yml,.yaml - Skips binary files:
.svg,.xml,.json - Fails the PR check if typos are found (must be fixed before merge)
Use case: Preventing new typos from being introduced in PRs
Configuration Files
.codespellrc
Central configuration file for codespell that defines:
- Files to skip (e.g., SVG, JSON, XML files)
- Ignore words file location
- Default directories to check
- File types to include
- Output formatting options
This configuration is automatically used by both GitHub workflows and local runs.
.codespell-ignore
Used by codespell (both workflows). Contains domain-specific terms that should not be flagged:
- Petroleum engineering terms:
perm,porosity,wellbore,facies - Eclipse file formats:
EGRID,INIT,UNRST,SMSPEC - Simulation tools:
Abaqus,ODB,VTK - Common abbreviations:
API,GUI,RGB,CSV - Units:
ft,mD,bbl,psi
To add a word: Simply add it to .codespell-ignore (one word per line, comments start with #)
How to Fix Typos
From Full Repository Check
When the spell-check workflow creates a PR:
- Review the PR created by the workflow
- Check if the suggested changes are correct
- If correct: merge the PR
- If incorrect: close the PR and add the word to
.codespell-ignore
From PR Review Check
When your PR fails the spell check:
- Read the error message to see which words are flagged
- Fix the typos in your code OR
- If the word is correct (domain-specific term), add it to
.codespell-ignore - Push the changes to your PR
- The check will run again automatically
Common Domain Terms Already Whitelisted
The following are already in the whitelist:
- Reservoir simulation:
perm,permeability,porosity,geomech,seismic - Eclipse formats:
EGRID,GRID,INIT,UNRST,SMSPEC,ESMRY - Tools:
Abaqus,ODB,VTK,OSDU,FMU,VFP - Abbreviations:
Md,Tvd,Rkb,Rft,Plt - Organizations:
ResInsight,Equinor,Ceetron,OPM
Testing Locally
You can run spell checks locally before pushing:
Using codespell (recommended for quick checks)
# Install codespell
pip install codespell
# Check specific files (uses .codespellrc automatically)
codespell myfile.cpp
# Check a directory (uses .codespellrc automatically)
codespell ApplicationLibCode/
# Check all default directories (defined in .codespellrc)
codespell
# Apply fixes automatically (use with caution)
codespell --write-changes
# Override config file settings if needed
codespell --ignore-words=custom-ignore.txt --skip="*.log,*.tmp" myfile.cpp
Troubleshooting
False Positives
If a word is flagged but is correct:
- Add it to
.codespell-ignore
Words That Should Be Fixed
If the spell checker suggests a change that seems wrong, check:
- Is the word used correctly in context?
- Is it a technical term that should be in the whitelist?
- Is there a better/clearer word to use?
Workflow Not Running
- Check that your changes touch files in the monitored directories
- Check that the file extensions are supported
- Look at the GitHub Actions tab for error messages