Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for codespell checking #1864

Closed
2 tasks done
bartlettroscoe opened this issue Nov 13, 2023 · 11 comments
Closed
2 tasks done

Add support for codespell checking #1864

bartlettroscoe opened this issue Nov 13, 2023 · 11 comments
Assignees

Comments

@bartlettroscoe
Copy link
Member

bartlettroscoe commented Nov 13, 2023

@betterscientificsoftware/bssw-editorial-board

Related Issues:

Description

As I mentioned in #334 (comment), I have some experience with the tool codespell. It checks for commonly misspelled words and is pretty easy to work with. I am looking at setting it up for the bssw.io Git repo with the config file .codespellrc

[codespell]
check-filenames =
check-hidden =
# Disable warnings about binary files
quiet-level = 2
skip = */.git,*/*.pdf
#ignore-words-list =

and it seems to be showing a lot of misspellings that we have missed shown below (as of the commit 392d0c3):

codespell run on bssw.io repo as of commit 392d0c3 (click to expand)
Used config files:
    1: .codespellrc
./.github/PULL_REQUEST_TEMPLATE.md:5: recieved ==> received
./.github/ISSUE_TEMPLATE/blog-article.md:11: recieved ==> received
./.github/ISSUE_TEMPLATE/event.md:13: refered ==> referred
./.github/ISSUE_TEMPLATE/other.md:10: recieved ==> received
./Articles/Blog/10-new-hacks.md:4: Nam ==> Name
./Articles/Blog/10-new-hacks.md:4: Nam ==> Name
./Articles/Blog/2018-11-messer-porting.md:45: programing ==> programming
./Articles/Blog/2020-03-rate-your-project_UNPUB.md:2: incase ==> in case
./Articles/Blog/2020-03-rate-your-project_UNPUB.md:6: somes ==> some, sums
./Articles/Blog/2020-11-PSIP4HDF5.md:14: aways ==> always, away
./Articles/Blog/2020-12-2021BSSwFellowshipAnnouncement.md:3: Nam ==> Name
./Articles/Blog/2020-12-2021BSSwFellowshipAnnouncement.md:3: Nam ==> Name
./Articles/Blog/2020-12-2021BSSwFellowshipAnnouncement.md:104: Nam ==> Name
./Articles/Blog/2021-03-2021BSSwFellowshipNSFAnnouncement.md:3: Nam ==> Name
./Articles/Blog/2021-03-2021BSSwFellowshipNSFAnnouncement.md:3: Nam ==> Name
./Articles/Blog/2021-03-2021BSSwFellowshipNSFAnnouncement.md:67: Nam ==> Name
./Articles/Blog/2021-03-siam-cse21-retrospective.md:35: Nam ==> Name
./Articles/Blog/2021-03-siam-cse21-retrospective.md:43: Nam ==> Name
./Articles/Blog/2021-03-useful-practices-for-SEoMsDSP.md:41: IDAES ==> IDEAS
./Articles/Blog/2021-03-useful-practices-for-SEoMsDSP.md:41: idaes ==> ideas
./Articles/Blog/2021-03-useful-practices-for-SEoMsDSP.md:45: IDAES ==> IDEAS
./Articles/Blog/2021-03-useful-practices-for-SEoMsDSP.md:49: primarly ==> primarily
./Articles/Blog/2021-03-useful-practices-for-SEoMsDSP.md:53: IDAES ==> IDEAS
./Articles/Blog/2021-03-useful-practices-for-SEoMsDSP.md:55: IDAES ==> IDEAS
./Articles/Blog/2021-03-useful-practices-for-SEoMsDSP.md:60: IDAES ==> IDEAS
./Articles/Blog/2021-07-BSSwFellows21.md:8: Nam ==> Name
./Articles/Blog/2021-07-BSSwFellows21.md:8: Nam ==> Name
./Articles/Blog/2021-07-BSSwFellows21.md:87: encompases ==> encompasses
./Articles/Blog/2021-07-BSSwFellows21.md:97: Nam ==> Name
./Articles/Blog/2021-11-HPCAndTheLabManager.md:58: theses ==> these, thesis
./Articles/Blog/2022-01-2022BSSwFellowshipAnnounce.md:3: Nam ==> Name
./Articles/Blog/2022-01-2022BSSwFellowshipAnnounce.md:3: Nam ==> Name
./Articles/Blog/2022-01-2022BSSwFellowshipAnnounce.md:174: Nam ==> Name
./Articles/Blog/2022-02-precice-testing.md:14: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:18: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:18: precice ==> precise
./Articles/Blog/2022-02-precice-testing.md:22: precice ==> precise
./Articles/Blog/2022-02-precice-testing.md:22: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:28: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:43: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:47: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:47: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:47: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:48: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:51: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:52: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:53: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:59: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:60: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:60: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:60: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:81: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:85: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:117: unsed ==> unused, unset, used
./Articles/Blog/2022-02-precice-testing.md:178: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:224: precice ==> precise
./Articles/Blog/2022-02-precice-testing.md:228: precice ==> precise
./Articles/Blog/2022-02-precice-testing.md:230: precice ==> precise
./Articles/Blog/2022-02-precice-testing.md:232: precice ==> precise
./Articles/Blog/2022-02-precice-testing.md:234: precice ==> precise
./Articles/Blog/2022-02-precice-testing.md:269: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:269: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:272: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:273: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:275: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:278: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:289: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:290: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:290: precice ==> precise
./Articles/Blog/2022-02-precice-testing.md:290: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:294: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:294: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:294: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:294: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:296: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:298: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:298: preCICE ==> precise
./Articles/Blog/2022-02-precice-testing.md:300: preCICE ==> precise
./Articles/Blog/2022-02-sc21-correctness-workshop.md:107: programing ==> programming
./Articles/Blog/2022-05-trusted-cyberinfrastructure.md:73: Wil ==> Will, Well
./Articles/Blog/2022-07-BSSwFellows2021.md:7: Nam ==> Name
./Articles/Blog/2022-07-BSSwFellows2021.md:7: Nam ==> Name
./Articles/Blog/2022-07-BSSwFellows2021.md:141: Nam ==> Name
./Articles/Blog/2022-07-vive-la-difference-rse.md:35: NWO ==> NOW
./Articles/Blog/2022-08-BSSwFellowsOpen2022.md:3: Nam ==> Name
./Articles/Blog/2022-08-BSSwFellowsOpen2022.md:3: Nam ==> Name
./Articles/Blog/2022-08-BSSwFellowsOpen2022.md:50: Nam ==> Name
./Articles/Blog/2022-09-peer-code-review.md:58: Hass ==> Hash
./Articles/Blog/2022-11-visual-git.md:34: re-use ==> reuse
./Articles/Blog/2022-12-2023BSSwFellowshipAnnounce.md:3: Nam ==> Name
./Articles/Blog/2022-12-2023BSSwFellowshipAnnounce.md:3: Nam ==> Name
./Articles/Blog/2022-12-2023BSSwFellowshipAnnounce.md:61: Hart ==> Heart, Harm
./Articles/Blog/2022-12-2023BSSwFellowshipAnnounce.md:174: Nam ==> Name
./Articles/Blog/2023-02-anatomy-rse-team.md:32: heterogenous ==> heterogeneous
./Articles/Blog/2023-03-Julia_for_BSSw.md:50: RCall ==> recall
./Articles/Blog/2023-03-Julia_for_BSSw.md:50: RCall ==> recall
./Articles/Blog/2023-05-cise-rse-issues.md:7: Nam ==> Name
./Articles/Blog/2023-05-cise-rse-issues.md:39: Nam ==> Name
./Articles/Blog/2023-05-cise-rse-issues.md:39: Nam ==> Name
./Articles/Blog/2023-08-containers-workflows.md:38: submiting ==> submitting
./Articles/Blog/2023-08-Software-Gardening.md:33: algebraical ==> algebraic
./Articles/Blog/2023-08-Software-Gardening.md:57: unsecure ==> insecure
./Articles/Blog/2023-08-Software-Gardening.md:321: Commun ==> Commune, Common
./Articles/Blog/2023-08-Software-Gardening.md:368: Commun ==> Commune, Common
./Articles/Blog/ApolloGuidanceComputerPart3.md:181: AGS ==> TAGS, AGES
./Articles/Blog/ApolloGuidanceComputerPart3.md:210: AGS ==> TAGS, AGES
./Articles/Blog/ApolloGuidanceComputerPart3.md:219: AGS ==> TAGS, AGES
./Articles/Blog/ApolloGuidanceComputerPart3.md:287: AGS ==> TAGS, AGES
./Articles/Blog/ApolloGuidanceComputerPart3.md:315: AGS ==> TAGS, AGES
./Articles/Blog/ApolloGuidanceComputerPart3.md:345: AGS ==> TAGS, AGES
./Articles/Blog/BetterScienceThroughSoftwareTesting.md:70: contruction ==> construction
./Articles/Blog/BSSwFellowshipAnnouncement2020.md:3: Nam ==> Name
./Articles/Blog/BSSwFellowshipAnnouncement2020.md:3: Nam ==> Name
./Articles/Blog/BSSwFellowshipAnnouncement2020.md:104: Nam ==> Name
./Articles/Blog/BSSwFellowshipApplicationsOpen2019.md:4: Nam ==> Name
./Articles/Blog/BSSwFellowshipApplicationsOpen2019.md:4: Nam ==> Name
./Articles/Blog/BSSwFellowshipApplicationsOpen2019.md:38: Nam ==> Name
./Articles/Blog/BSSwFellowshipApplicationsOpen2020.md:3: Nam ==> Name
./Articles/Blog/BSSwFellowshipApplicationsOpen2020.md:3: Nam ==> Name
./Articles/Blog/BSSwFellowshipApplicationsOpen2020.md:50: Nam ==> Name
./Articles/Blog/BSSwFellowshipApplicationsOpen2021.md:3: Nam ==> Name
./Articles/Blog/BSSwFellowshipApplicationsOpen2021.md:3: Nam ==> Name
./Articles/Blog/BSSwFellowshipApplicationsOpen2021.md:49: Nam ==> Name
./Articles/Blog/BSSwHighlights2019.md:47: Nam ==> Name
./Articles/Blog/BSSwHighlights2020.md:54: Nam ==> Name
./Articles/Blog/BSSwHighlights2021.md:52: Nam ==> Name
./Articles/Blog/BSSwHighlights2021.md:56: Nam ==> Name
./Articles/Blog/comment-test.md:21: becasuse ==> because
./Articles/Blog/Fellows2018Contributions.md:4: Nam ==> Name
./Articles/Blog/Fellows2018Contributions.md:4: Nam ==> Name
./Articles/Blog/Fellows2018Contributions.md:64: Nam ==> Name
./Articles/Blog/Fellows2019Contributions.md:8: Nam ==> Name
./Articles/Blog/Fellows2019Contributions.md:8: Nam ==> Name
./Articles/Blog/Fellows2019Contributions.md:106: Nam ==> Name
./Articles/Blog/Kitchen-sink-TEST-blog.md:45: Unorderd ==> Unordered
./Articles/Blog/Kitchen-sink-TEST-blog.md:46: Unorderd ==> Unordered
./Articles/Blog/Kitchen-sink-TEST-blog.md:47: Unorderd ==> Unordered
./Articles/Blog/Kitchen-sink-TEST-blog.md:59: Unorderd ==> Unordered
./Articles/Blog/Kitchen-sink-TEST-blog.md:60: Unorderd ==> Unordered
./Articles/Blog/Kitchen-sink-TEST-blog.md:61: Unorderd ==> Unordered
./Articles/Blog/Kitchen-sink-TEST-blog.md:199: becasuse ==> because
./Articles/Blog/PortingToHIP.md:20: eample ==> example
./Articles/Blog/PortingToHIP.md:42: seperated ==> separated
./Articles/Blog/PortingToHIP.md:48: COO ==> COUP
./Articles/Blog/TestingNondeterministicResearchSoftware.md:51: Nam ==> Name
./Articles/Blog/VisionFitnessForSoftwareProductivity.md:30: opthalmology ==> ophthalmology
./Articles/Blog/wikize_refs.py:196: downlading ==> downloading
./Articles/Blog/wikize_refs.py:381: occuring ==> occurring
./Articles/ShortArticles/Part5-PerformingRequirementsEngineeringREVISE.md:19: ore ==> or
./Articles/ShortArticles/TelecomToolsForRemoteWork.md:87: Parial ==> Partial
./Articles/ShortArticles/TelecomToolsForRemoteWork.md:94: wont ==> won't
./Articles/ShortArticles/TheDeveloperCertificateOfOrigin.md:22: appraoches ==> approaches
./Articles/ShortArticles/WhatPerfPortabilityToolsAreCompatible.md:12: compability ==> compatibility
./Articles/WhatIs/WhatAreCseSwDevptTools.md:15: likelyhood ==> likelihood
./Articles/WhatIs/WhatAreCseSwRequirements.md:23: Requiements ==> Requirements
./CuratedContent/2023-02-Inclusivescientificmeetings.md:5: successfuly ==> successfully
./CuratedContent/ChanZuckInitiative.md:5: initated ==> initiated, imitated
./CuratedContent/CodedBiasMovie.md:28: tendancy ==> tendency
./CuratedContent/DocumentationTools.Doxygen.md:6: Damon ==> Daemon, Demon
./CuratedContent/DocumentationTools.md:7: Damon ==> Daemon, Demon
./CuratedContent/DocumentationTools.ReadTheDocs.md:7: Damon ==> Daemon, Demon
./CuratedContent/DocumentationTools.Sphinx.md:6: Damon ==> Daemon, Demon
./CuratedContent/DocumentationTools.Sphinx.md:18: hierachy ==> hierarchy
./CuratedContent/ExecutableEnvironments.md:17: Rebuliding ==> Rebuilding
./CuratedContent/FinalizingAJuliaPackage.md:17: compatability ==> compatibility
./CuratedContent/FORCE11SoftwareCitationImplementationWorkingGroup.md:35: Leary ==> Leery
./CuratedContent/FSFLicensingAndComplianceTeam.md:16: chosing ==> choosing
./CuratedContent/GitHub.md:15: grapical ==> graphical
./CuratedContent/hpcbp-webinars-cc.md:160: preCICE ==> precise
./CuratedContent/IDEsForScientificSoftware.md:3: commericial ==> commercial
./CuratedContent/kitchen-sink-TEST.md:44: Unorderd ==> Unordered
./CuratedContent/kitchen-sink-TEST.md:45: Unorderd ==> Unordered
./CuratedContent/kitchen-sink-TEST.md:46: Unorderd ==> Unordered
./CuratedContent/kitchen-sink-TEST.md:58: Unorderd ==> Unordered
./CuratedContent/kitchen-sink-TEST.md:59: Unorderd ==> Unordered
./CuratedContent/kitchen-sink-TEST.md:60: Unorderd ==> Unordered
./CuratedContent/kitchen-sink-TEST.md:144: becasuse ==> because
./CuratedContent/LanguageReferenceOnLine.md:12: implementors ==> implementers
./CuratedContent/MakingSoftwareWhatReallyWorksAndWhyWeBelieveIt.md:37: inital ==> initial
./CuratedContent/MethodsAndToolsEditor.md:16: occsionally ==> occasionally
./CuratedContent/OnlineLearningTLF.Git.md:33: scavanger ==> scavenger
./CuratedContent/PersistentCodeIdentifiers.md:29: Digitial ==> Digital
./CuratedContent/PSIPPublication.md:3: targetted ==> targeted
./CuratedContent/ResourceTemplate.AggregateBase.md:17: bulletted ==> bulleted
./CuratedContent/swr-panels-cc.md:46: Nam ==> Name
./CuratedContent/SwTestingTutorials.Cse.md:14: inport ==> import
./CuratedContent/TeamOfTeamsUNPUB.md:25: Disccussion ==> Discussion
./CuratedContent/UnderstandingHPCFromSwEngineeringPerspective.md:14: Cruzes ==> Cruises
./CuratedContent/WorseIsBetter.md:39: Futhermore ==> Furthermore
./CuratedContent/Zenodo.md:3: thats ==> that's
./docs/Gemfile:6: publich ==> publish, public
./docs/_config.yml:47: rouge ==> rogue
./docs/_config.yml:55: rouge ==> rogue
./docs/js/jquery.shuffle.min.js:223: Overrideable ==> Overridable
./docs/js/jquery.shuffle.min.js:232: delimeter ==> delimiter
./docs/js/jquery.shuffle.min.js:232: delimeted ==> delimited
./docs/js/jquery.shuffle.min.js:232: delimeter ==> delimiter
./docs/js/jquery.shuffle.min.js:242: overrideable ==> overridable
./docs/js/jquery.shuffle.min.js:578: delimeter ==> delimiter
./docs/js/jquery.shuffle.min.js:579: delimeter ==> delimiter
./docs/js/jquery.shuffle.min.js:604: specifiy ==> specify
./docs/js/jquery.shuffle.min.js:804: layed ==> laid
./docs/js/jquery.shuffle.min.js:930: represeting ==> representing
./docs/js/jquery.shuffle.min.js:1036: layed ==> laid
./docs/pages/bssw/bssw_content_highlighting.md:63: annoucements ==> announcements
./docs/pages/bssw/bssw_content_highlighting.md:72: annoucement ==> announcement
./docs/pages/bssw/bssw_content_highlighting.md:72: annoucement ==> announcement
./docs/pages/bssw/bssw_content_highlighting.md:75: annoucements ==> announcements
./docs/pages/bssw/bssw_content_metadata.md:171: bulletted ==> bulleted
./docs/pages/bssw/bssw_intdocs_pr_checklist.md:2: Checlist ==> Checklist
./docs/pages/bssw/bssw_pr_preview_branch.md:59: preveiw ==> preview
./docs/pages/bssw/bssw_styling_common.md:46: straighforward ==> straightforward
./docs/pages/bssw/bssw_styling_common.md:48: Conjuctions ==> Conjunctions
./docs/pages/bssw/bssw_styling_common.md:71: refered ==> referred
./docs/pages/bssw/bssw_styling_common.md:103: heros ==> heroes
./docs/pages/bssw/bssw_styling_common.md:193: siginificant ==> significant
./docs/pages/bssw/bssw_styling_event.md:39: submisison ==> submission
./docs/pages/bssw/bssw_teamresponsibilites.md:2: Responsibilites ==> Responsibilities
./Events/2021-02-siam-cse21.md:13: Nam ==> Name
./Events/2021-02-siam-cse21.md:13: Nam ==> Name
./Events/2021-02-siam-cse21.md:34: Sucessful ==> Successful
./Events/2021-06-P-RECS21.md:14: conjuction ==> conjunction
./Events/2021-06-P-RECS21.md:17: Submisson ==> Submission
./Events/2021-06-P-RECS21.md:20: submissons ==> submissions
./Events/2022-05-ECP22-BOF.md:24: acivities ==> activities
./Events/2022-11-Correctness-HPC.md:29: Programing ==> Programming
./Events/2023-06-rep-conf.md:38: re-use ==> reuse
./Events/2023-06-rep-conf.md:65: re-use ==> reuse
./Events/Conference.SIAM-CSE17.md:26: Damon ==> Daemon, Demon
./Events/eScienceTutorial.md:18: conjuction ==> conjunction
./Events/hpcbp-034-FPAnalysis.md:72: programing ==> programming
./Events/hpcbp-065-precice-ecosystem.md:1: preCICE ==> precise
./Events/hpcbp-065-precice-ecosystem.md:16: preCICE ==> precise
./Events/hpcbp-065-precice-ecosystem.md:24: preCICE ==> precise
./Events/hpcbp-065-precice-ecosystem.md:24: preCICE ==> precise
./Events/hpcbp-065-precice-ecosystem.md:24: preCICE ==> precise
./Events/hpcbp-065-precice-ecosystem.md:29: preCICE ==> precise
./Events/hpcbp-065-precice-ecosystem.md:29: preCICE ==> precise
./Events/hpcbp-065-precice-ecosystem.md:29: preCICE ==> precise
./Events/hpcbp-067-softwarepackaging.md:24: re-use ==> reuse
./Events/SC19-sw-events.md:23: 3nd ==> 3rd
./Events/SSIFellowship2021.md:5: hhttps ==> https
./Events/SSIFellowship2021.md:14: hhttps ==> https
./Events/swr-005-teamproductivity.md:31: heterogenous ==> heterogeneous
./Events/swr-006-hybrid.md:17: Nam ==> Name
./Events/swr-006-hybrid.md:42: Nam ==> Name
./Events/URSSI-survey.md:5: nd ==> and, 2nd
./Events/URSSI-survey.md:10: nd ==> and, 2nd
./Events/Webinar.BSSw22.QA.md:6: Scientifc ==> Scientific
./Events/Webinar.BSSw23.QA.md:6: Scientifc ==> Scientific
./Events/Workshop.SE4Science18.md:5: Gothenberg ==> Gothenburg
./Events/WSSSPE5.2.md:16: conjuction ==> conjunction
./Events/WSSSPE6.1.md:15: conjuction ==> conjunction
./HowTos/HowToVersionControlwithGit.md:13: coverted ==> converted, covered, coveted
./Site/ContentTypes.md:102: finaly ==> finally, finale
./Site/HowToContribute.md:19: Submisson ==> Submission
./Site/QuestionsAboutContributing.md:10: additonal ==> additional
./Site/BSSwFellowshipProgram/FellowsFAQ.md:56: recommdation ==> recommendation
./Site/BSSwFellowshipProgram/People/HartWilliam2023.md:3: Hart ==> Heart, Harm
./Site/BSSwFellowshipProgram/People/HartWilliam2023.md:18: Hart ==> Heart, Harm
./Site/BSSwFellowshipProgram/People/HartWilliam2023.md:20: Hart ==> Heart, Harm
./Site/BSSwFellowshipProgram/People/LagunaIg.md:21: programing ==> programming
./Site/Communities/SupercomputerFacilities.md:5: wtih ==> with
./utils/wikize_refs.py:196: downlading ==> downloading
./utils/wikize_refs.py:381: occuring ==> occurring
./utils/build_tests/tests/wikize_refs_in_place_and_explicit_out_fail/test_wikizer.md:20: Nam ==> Name
./utils/build_tests/tests/wikize_refs_in_place_and_explicit_out_fail/test_wikizer.md:30: Nam ==> Name
./utils/build_tests/tests/wikize_refs_in_place_and_explicit_out_fail/test_wikizer.md:30: Nam ==> Name
./utils/build_tests/tests/wikize_refs_in_place_and_explicit_out_fail/test_wikizer.md:30: varius ==> various
./utils/build_tests/tests/wikize_refs_in_place_and_explicit_out_fail/test_wikizer.md:30: Nam ==> Name
./utils/build_tests/tests/wikize_refs_no_args_pass/test_wikizer-wikized.md:20: Nam ==> Name
./utils/build_tests/tests/wikize_refs_no_args_pass/test_wikizer-wikized.md:30: Nam ==> Name
./utils/build_tests/tests/wikize_refs_no_args_pass/test_wikizer-wikized.md:30: Nam ==> Name
./utils/build_tests/tests/wikize_refs_no_args_pass/test_wikizer-wikized.md:30: varius ==> various
./utils/build_tests/tests/wikize_refs_no_args_pass/test_wikizer-wikized.md:30: Nam ==> Name
./utils/build_tests/tests/wikize_refs_no_args_pass/test_wikizer.md:20: Nam ==> Name
./utils/build_tests/tests/wikize_refs_no_args_pass/test_wikizer.md:30: Nam ==> Name
./utils/build_tests/tests/wikize_refs_no_args_pass/test_wikizer.md:30: Nam ==> Name
./utils/build_tests/tests/wikize_refs_no_args_pass/test_wikizer.md:30: varius ==> various
./utils/build_tests/tests/wikize_refs_no_args_pass/test_wikizer.md:30: Nam ==> Name
./utils/tests/run_wikize_ref_diff_test.cmake:30: orginal ==> original
./utils/tests/test_badlinks-wikized.md:20: Nam ==> Name
./utils/tests/test_badlinks-wikized.md:30: Nam ==> Name
./utils/tests/test_badlinks-wikized.md:30: Nam ==> Name
./utils/tests/test_badlinks-wikized.md:30: varius ==> various
./utils/tests/test_badlinks-wikized.md:30: Nam ==> Name
./utils/tests/test_badlinks.md:20: Nam ==> Name
./utils/tests/test_badlinks.md:30: Nam ==> Name
./utils/tests/test_badlinks.md:30: Nam ==> Name
./utils/tests/test_badlinks.md:30: varius ==> various
./utils/tests/test_badlinks.md:30: Nam ==> Name
./utils/tests/test_goodlinks-wikized.md:20: Nam ==> Name
./utils/tests/test_goodlinks-wikized.md:30: Nam ==> Name
./utils/tests/test_goodlinks-wikized.md:30: Nam ==> Name
./utils/tests/test_goodlinks-wikized.md:30: varius ==> various
./utils/tests/test_goodlinks-wikized.md:30: Nam ==> Name
./utils/tests/test_goodlinks.md:20: Nam ==> Name
./utils/tests/test_goodlinks.md:30: Nam ==> Name
./utils/tests/test_goodlinks.md:30: Nam ==> Name
./utils/tests/test_goodlinks.md:30: varius ==> various
./utils/tests/test_goodlinks.md:30: Nam ==> Name
./utils/tests/test_wikizer-wikized.md:20: Nam ==> Name
./utils/tests/test_wikizer-wikized.md:30: Nam ==> Name
./utils/tests/test_wikizer-wikized.md:30: Nam ==> Name
./utils/tests/test_wikizer-wikized.md:30: varius ==> various
./utils/tests/test_wikizer-wikized.md:30: Nam ==> Name
./utils/tests/test_wikizer.md:20: Nam ==> Name
./utils/tests/test_wikizer.md:30: Nam ==> Name
./utils/tests/test_wikizer.md:30: Nam ==> Name
./utils/tests/test_wikizer.md:30: varius ==> various
./utils/tests/test_wikizer.md:30: Nam ==> Name

Some of those are proper names like "Nam" (from "Hai Ah Nam") but many others look to be misspellings.

Tasks

@bartlettroscoe
Copy link
Member Author

Note that you can also have codespell check you commit messages by using the commit hook .git/hooks/commit-msg:

which codespell >> /dev/null
which_codespell_rtn=$?

if [[ "${which_codespell_rtn}" == "0" ]] ; then
  codespell $1
fi

That has caught many a misspelled work in my commit messages :-)

@bartlettroscoe
Copy link
Member Author

@betterscientificsoftware/bssw-editorial-board, if no one has an objection, I will post a PR that adds support for .codespell and fixes the misspellings it shows. This does not mean we have to commit to use code-spell. It just means that a local developer (e.g. me) can use codespell on the repo.

But note that there is a codespelll GitHub action:

bartlettroscoe added a commit to bartlettroscoe/bssw.io that referenced this issue Nov 17, 2023
bartlettroscoe added a commit to bartlettroscoe/bssw.io that referenced this issue Nov 18, 2023
bartlettroscoe added a commit to bartlettroscoe/bssw.io that referenced this issue Nov 18, 2023
bartlettroscoe added a commit to bartlettroscoe/bssw.io that referenced this issue Nov 18, 2023
bartlettroscoe added a commit to bartlettroscoe/bssw.io that referenced this issue Nov 20, 2023
bartlettroscoe added a commit to bartlettroscoe/bssw.io that referenced this issue Nov 22, 2023
I fixed a bunch of misspellings and typos found by codespell.

Look at how few words I had to list on 'ignore-words-list' in the .codespellrc
file.
@bartlettroscoe
Copy link
Member Author

@betterscientificsoftware/bssw-editorial-board,

I just added the PR:

that allows codespell to run on the bssw.io repo clean (i.e. by fixing a bunch of spelling errors flagged by the tool and adding some ignored words and files).

Without objection, can I merge this?

Then we can add a GitHub Action to run codespell on all PRs so this stays clean.

bartlettroscoe added a commit that referenced this issue Nov 22, 2023
I copied this from the TriBITS repo which was provided by Kyle Edwards from
Kitware (this is what they use for CMake).
bartlettroscoe added a commit that referenced this issue Nov 22, 2023
I was using codespell 2.2.6 locally and it has a slightly different word list.
No big deal.
@bartlettroscoe
Copy link
Member Author

FYI: PR:

adds the GHA to run codespell on both the files and the commit messages.

Once that PR is merged, then this issue can be closed.

bartlettroscoe added a commit that referenced this issue Dec 5, 2023
I copied this from the TriBITS repo which was provided by Kyle Edwards from
Kitware (this is what they use for CMake).
bartlettroscoe added a commit that referenced this issue Dec 5, 2023
I was using codespell 2.2.6 locally and it has a slightly different word list.
No big deal.
@bartlettroscoe
Copy link
Member Author

bartlettroscoe commented Dec 7, 2023

CC: @betterscientificsoftware/bssw-editorial-board

@bernhold and @markcmiller86,

I have been looking a little bit for an alternative for codespell but so far the only reasonable alternatives are:

  • cspell:
    • Pro: Allows custom list of words to ignore in the file being checked
    • Pro: Large user base
    • Pro: Still actively developed (most recent commit is 11 hours ago)
    • Con: Compares all words against a dictionary of known words (and therefore more work to maintain list of words)
    • Con: Requires installation through npm
  • misspell:
    • Pro: Large user base.
    • Con: Compares all words against a dictionary of known words (and therefore more work to maintain list of words)
    • Con: Does not support in-file ignore lists
    • Con: Has not changed since 2018

Compare the above to codespell:

  • codespell:
    • Pro: Checks for common misspellings (not full list of all words)
    • Pro: Installs with pip (even on cygwin)
    • Pro: Large user base.
    • Pro: Still actively developed (most recent comment is 13 hours ago)
    • Con: Does not support in-file ignore lists

There really is not much out there that is cross platform and can run as a command (i.e. MS Code Spell Check is out).

So there is no advantage of misspell over codespell for us since it does not support in-file ignore lists either (and it is not actively developed and has a smaller code base). So the only tool to seriously take a look at is cspell which does support in-file ignore lists but it would take a lot of work to adopt because it checks the spelling of all words and that would require a lot of custom ignore lists for many files.

At this point, I see a few options:

  • Option-0: Do nothing, no automated spell checking of any kind (the current status):

    • Pro: Nothing needs to be done (i.e. this is free)
    • Con: Easy to catch misspellings will not be caught
  • Option-1: Go with codespell as is and just add more words to the global ignore list as needed:

  • Option-2: Implement a custom driver for codespell (called something like codesspellplus?) that supports in-file ignore lists:

    • Pro: Better, more targeted spell checking by allowing ignored words on a file-by-file basis
    • Pro: Avoid merge conflicts when two files in two different PRs need to add to the global ignore word list.
    • Con: Requires a new (small?) tool to be developed and maintained
  • Option-3: Do an evaluation of cspell:

    • Pro: Native support for in-file ignores
    • Con: Will require a lot of work to add ignores for all of the existing *.md and other files
    • Con: Will require more work to add new *.md files since almost every one will require a custom set of words to be ignored.

Given that I don't have a lot of funding left, my vote would be to go with option-1 and see how that goes. (Otherwise, the default is option-0 which has lead to a lot of easy-to-catch misspellings to get into published articles on bssw.io.)

Opinions?

@bernhold
Copy link
Member

bernhold commented Dec 7, 2023

@bartlettroscoe thanks for investigating.

I agree that option 1 is probably the best path forward at present. Let's see how it works.

Just to add my own perspective on things...

  • I don't really care about local installation. I use VS Code for nearly all of my editing and spell check there.
  • I think the action is useful because it isn't safe to assume that all of our contributors are diligently spell-checking in whatever editor they're using
  • I think option 2 is a pretty small step
  • If there's a way to make the spell check action report its results, but not prevent the merge, that might be a useful option to consider. That's my strategy for URL checking, for example.
  • Please don't try to spell-check issues or PRs.

@markcmiller86
Copy link
Member

markcmiller86 commented Dec 7, 2023

Yeah, lets go with option 1 but with a caveat if practical...when we add words to the global list, can we adopt a practice of associating what file(s) the words appear in so that if we move to option 2, we can refactor the word list easily?

@bernhold
Copy link
Member

bernhold commented Dec 7, 2023

Does the codespell ignore list file have any concept of comments? If not, we'd probably need to encourage people to put them in the PR comments.

@bartlettroscoe
Copy link
Member Author

If there's a way to make the spell check action report its results, but not prevent the merge, that might be a useful option to consider. That's my strategy for URL checking, for example.

Currently, no PR checks have to pass to allow the merge of a PR in the bssw.io GitHub repo. The checks are only for informational purposes. (Of course you can change the settings in the GitHub project to require some or all GHA actions to pass before a PR is allowed to merge.)

Does the codespell ignore list file have any concept of comments? If not, we'd probably need to encourage people to put them in the PR comments.

You can add comments to the .codespellrc file. You can see where I did that here:

bssw.io/.codespellrc

Lines 6 to 7 in 054dd1b

# Ignore Words List: Formal names, acronyms, other words
ignore-words-list = nam,hass,hart,wil,damon,leary,cruzes,nwo,idaes,precice,rcall,ags,coo,theses,nd,ba,algebraical,unsecure,commun,ore,re-use

if practical...when we add words to the global list, can we adopt a practice of associating what file(s) the words appear in so that if we move to option 2, we can refactor the word list easily?

Those comments can be added. But that is not really needed because you can find out what files have certain words automatically by just removing the ignored word from the list ignore-words-list and run codespell and it will show the hits in the different files. For example, I just locally removed the ignored word wil as shown in the diff:

$ git diff --word-diff-regex=.
diff --git a/.codespellrc b/.codespellrc
index 63c74d67..1ea50931 100644
--- a/.codespellrc
+++ b/.codespellrc
@@ -4,5 +4,5 @@ check-hidden =
# Disable warnings about binary files
quiet-level = 2
# Ignore Words List: Formal names, acronyms, other words
ignore-words-list = nam,hass,hart,[-wil,-]damon,leary,cruzes,nwo,idaes,precice,rcall,ags,coo,theses,nd,ba,algebraical,unsecure,commun,ore,re-use
skip = */.git,*/*.pdf,*/_config.yml,*/jquery.shuffle.min.js,*/build_tests/*,*/utils/tests/*.md

and ran codespell locally on my Windows 11 laptop under cygwin:

$ codespell
Used config files:
    1: .codespellrc
./Articles/Blog/2022-05-trusted-cyberinfrastructure.md:73: Wil ==> Will, Well

And that can't be wrong when comments can be wrong. For that reason, I would not bother to comment what words come from what files. (And that will not be correct if new files are added that contain those words.)

It will be a lot easier to switch to per-file ignores (if we move to that in option-2 above) using this approach than it was fixing all of the spelling errors in PR #1873😊

Please don't try to spell-check issues or PRs.

There was no suggestion to check the comments in GitHub Issues or PRs.

I don't really care about local installation.

Generally, I hate working with systems where it is difficult/impossible to reproduce the online automated checks. It is just more efficient to run whatever subset of checks makes sense on your local development machine before you push to when you are trying to reproduce and verify the fix for an online check failure. That greatly reduces the wall-clock time to address failures in the online automated checks.

@bartlettroscoe
Copy link
Member Author

I just merge PR:

Let's see how option-1 above goes.

@rinkug rinkug closed this as completed Jan 9, 2024
@bartlettroscoe
Copy link
Member Author

FYI: I just added new issue #2074 to take advantage of new inline ignores for codespell.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

No branches or pull requests

4 participants