Skip to content

Commit

Permalink
Add check-spelling
Browse files Browse the repository at this point in the history
  • Loading branch information
jsoref committed Oct 13, 2024
1 parent 5ec246c commit 107eabb
Showing 1 changed file with 169 additions and 0 deletions.
169 changes: 169 additions & 0 deletions .github/workflows/spelling.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
name: Check Spelling

# Comment management is handled through a secondary job, for details see:
# https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions
#
# `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment
# (in odd cases, it might actually run just to collapse a comment, but that's fairly rare)
# it needs `contents: write` in order to add a comment.
#
# `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment
# or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment)
# it needs `pull-requests: write` in order to manipulate those comments.

# Updating pull request branches is managed via comment handling.
# For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list
#
# These elements work together to make it happen:
#
# `on.issue_comment`
# This event listens to comments by users asking to update the metadata.
#
# `jobs.update`
# This job runs in response to an issue_comment and will push a new commit
# to update the spelling metadata.
#
# `with.experimental_apply_changes_via_bot`
# Tells the action to support and generate messages that enable it
# to make a commit to update the spelling metadata.
#
# `with.ssh_key`
# In order to trigger workflows when the commit is made, you can provide a
# secret (typically, a write-enabled github deploy key).
#
# For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key

# SARIF reporting
#
# Access to SARIF reports is generally restricted (by GitHub) to members of the repository.
#
# Requires enabling `security-events: write`
# and configuring the action with `use_sarif: 1`
#
# For information on the feature, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-SARIF-output

# Minimal workflow structure:
#
# on:
# push:
# ...
# pull_request_target:
# ...
# jobs:
# # you only want the spelling job, all others should be omitted
# spelling:
# # remove `security-events: write` and `use_sarif: 1`
# # remove `experimental_apply_changes_via_bot: 1`
# ... otherwise adjust the `with:` as you wish

on:
push:
branches:
- "**"
tags-ignore:
- "**"
pull_request_target:
branches:
- "**"
types:
- "opened"
- "reopened"
- "synchronize"
issue_comment:
types:
- "created"

jobs:
spelling:
name: Check Spelling
permissions:
contents: read
pull-requests: read
actions: read
security-events: write
outputs:
followup: ${{ steps.spelling.outputs.followup }}
runs-on: ubuntu-latest
if: ${{ contains(github.event_name, 'pull_request') || github.event_name == 'push' }}
concurrency:
group: spelling-${{ github.event.pull_request.number || github.ref }}
# note: If you use only_check_changed_files, you do not want cancel-in-progress
cancel-in-progress: true
steps:
- name: check-spelling
id: spelling
uses: check-spelling/check-spelling@prerelease
with:
suppress_push_for_open_pull_request: ${{ github.actor != 'dependabot[bot]' && 1 }}
checkout: true
check_file_names: 1
spell_check_this: check-spelling/spell-check-this@prerelease
post_comment: 0
use_magic_file: 1
report-timing: 1
warnings: bad-regex,binary-file,deprecated-feature,ignored-expect-variant,large-file,limited-references,no-newline-at-eof,noisy-file,non-alpha-in-dictionary,token-is-substring,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration,no-files-to-check,unclosed-block-ignore-begin,unclosed-block-ignore-end
experimental_apply_changes_via_bot: 1
use_sarif: ${{ (!github.event.pull_request || (github.event.pull_request.head.repo.full_name == github.repository)) && 1 }}
extra_dictionary_limit: 20
extra_dictionaries: |
cspell:software-terms/dict/softwareTerms.txt
comment-push:
name: Report (Push)
# If your workflow isn't running on push, you can remove this job
runs-on: ubuntu-latest
needs: spelling
permissions:
actions: read
contents: write
if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push'
steps:
- name: comment
uses: check-spelling/check-spelling@prerelease
with:
checkout: true
spell_check_this: check-spelling/spell-check-this@prerelease
task: ${{ needs.spelling.outputs.followup }}

comment-pr:
name: Report (PR)
# If you workflow isn't running on pull_request*, you can remove this job
runs-on: ubuntu-latest
needs: spelling
permissions:
actions: read
contents: read
pull-requests: write
if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request')
steps:
- name: comment
uses: check-spelling/check-spelling@prerelease
with:
checkout: true
spell_check_this: check-spelling/spell-check-this@prerelease
task: ${{ needs.spelling.outputs.followup }}
experimental_apply_changes_via_bot: 1

update:
name: Update PR
permissions:
contents: write
pull-requests: write
actions: read
runs-on: ubuntu-latest
if: ${{
github.event_name == 'issue_comment' &&
github.event.issue.pull_request &&
contains(github.event.comment.body, '@check-spelling-bot apply') &&
contains(github.event.comment.body, 'https://')
}}
concurrency:
group: spelling-update-${{ github.event.issue.number }}
cancel-in-progress: false
steps:
- name: apply spelling updates
uses: check-spelling/check-spelling@prerelease
with:
experimental_apply_changes_via_bot: 1
checkout: true
ssh_key: "${{ secrets.CHECK_SPELLING }}"

1 comment on commit 107eabb

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@check-spelling-bot Report

🔴 Please review

See the 📜action log or 📝 job summary for details.

Unrecognized words (319)
AJe
ajx
algs
Allocs
anb
autobuild
AVbu
aws
AWWl
Bearo
Bigt
bitmask
Bjft
BUadm
buf
BZU
CFTMc
CLYa
cmgaoswe
cmp
codeql
compatibilty
cov
coverallsapp
covermode
coverprofile
cryptix
Ctml
CVP
cvt
CWsinv
datatracker
DBUI
DEMYi
dgrijalva
Dqacx
DQog
Dtrzmiiku
Dxb
DZq
EAPWYDh
Ebjj
ecdsa
ecf
ECrt
Errorf
EXh
EYm
Eyo
Fatalf
FCw
FOon
formtech
Fprintf
Fprintln
FQz
Fsz
FWFOEj
Gci
gcp
GFtc
giorgos
GKA
Gkq
GLw
GMmwd
GMs
gofmt
golangci
googlegroups
GPo
Gsiq
Gvnq
Gxl
HAi
Hhb
Hlw
hmac
HNKw
Hnr
hqa
HRw
HSMs
HXA
iat
IBpwha
Icjox
ietf
Iif
Iiwid
Ijoi
Ijoiam
Ijoic
Ijox
Ijp
Ikp
IKw
ilkqa
Imh
iss
issuecomment
IXa
Iyd
Iyf
Izg
javascript
Jeztah
JFRDI
JFUz
Jhb
JIUz
JKV
Jle
Jmb
JMTUW
Jod
JOddf
Jpc
Jpkv
JPLy
Jqb
JRa
jsonwebtoken
JSUz
jti
JUh
JWKS
JWS
jwt
JXqla
JYi
Jzdwznb
KAls
KAp
keyfunc
keysize
Kgfk
Khz
KIC
KJt
KMb
kms
Kwc
KWZEu
KXJV
LCJu
len
LPVG
LXcld
Lzi
Mapclaims
matelang
MBMe
MDA
MDAw
MDB
MEQCIHo
mfridman
Modf
MRXMIEg
Msh
MTkz
Mvp
mykey
mystring
Mzhl
nafter
nbefore
nbf
NCIs
NCJ
NDQ
neh
nexpecting
Nmmq
notests
NTa
NTE
Nvb
nwas
NYx
Nzg
Nzj
oauth
Ocdg
ODAs
OFC
OJg
omitempty
Onn
Onrjre
openssl
OQw
Otqw
OUVu
Ovrw
pem
PJn
PKCS
pkey
PKIX
Pkj
prehashed
Println
PRq
Prz
pss
pubout
Pwdg
Pwu
PWy
QAWg
Qbea
Qon
QVz
QYSYVK
RCTy
rdr
rfc
RILIz
RIsrp
RLock
RPZ
rsa
RSAPSS
RUnlock
RWj
RZF
Saokmw
Saq
Sfn
SIYe
SJnm
Skipf
SKzw
somedir
Sprintf
ssig
sstr
staticcheck
strconv
structs
svg
TBIBq
tcp
TFtauc
Tnj
tok
tparse
Tpp
Tpsv
TTefkpsgq
UAUi
UDekh
Ufp
uhb
UIn
uint
Ujsz
UJU
UMUMOLP
Unmarshal
verifystatus
versioned
Versioning
VFRXUz
VIQ
VLAQ
Vlf
VNFAj
VOFRc
Vopjomc
VVj
VVuldiuilz
Wce
WCwm
WDg
website
Wixh
WNWl
workaround
workflows
WWub
Wyf
xai
XBs
XDl
XEhhqt
XHh
XLz
XNfcm
XNz
XPEC
XSc
XUqgjk
XVCJ
YCm
YCy
YEaiu
Yekyr
Yij
yml
yqk
Yvckl
YXIi
YXoif
YXVk
ZCl
ZFJXT
ZIIMy
Zkv
Zlj
Zlw
Zqdejro
ZSwia
Zvyb
ZXhhb
ZXhw
ZXN
Some files were automatically ignored 🙈

These sample patterns would exclude them:

^\Qparser_test.go\E$
^\Qrsa_pss_test.go\E$
^\Qrsa_test.go\E$
^test/hmacTestKey$

You should consider adding them to:

.github/actions/spelling/excludes.txt

File matching is via Perl regular expressions.

To check these files, more of their words need to be in the dictionary than not. You can use patterns.txt to exclude portions, add items to the dictionary (e.g. by adding them to allow.txt), or fix typos.

To use the spell-check-this repository, accept these unrecognized words as correct, and update file exclusions, you could run the following commands

... in a clone of the git@github.com:check-spelling-sandbox/jwt.git repository
on the spell-check-with-spelling branch (ℹ️ how do I use this?):

curl -s -S -L 'https://github.com/raw/check-spelling/check-spelling/prerelease/apply.pl' |
perl - 'https://github.com/check-spelling-sandbox/jwt/actions/runs/11311353775/attempts/1'
Available 📚 dictionaries could cover words not in the 📘 dictionary
Dictionary Entries Covers Uniquely
cspell:golang/dict/go.txt 2099 13 4
cspell:aws/aws.txt 218 5 3
cspell:node/dict/node.txt 891 12 1
cspell:php/dict/php.txt 1689 11 2
cspell:python/src/python/python-lib.txt 2417 7 1

Consider adding them (in .github/workflows/spelling.yml) in jobs:/spelling: for uses: check-spelling/check-spelling@prerelease in its with:

      with:
        extra_dictionaries: |
          cspell:golang/dict/go.txt
          cspell:aws/aws.txt
          cspell:node/dict/node.txt
          cspell:php/dict/php.txt
          cspell:python/src/python/python-lib.txt

To stop checking additional dictionaries, add (in .github/workflows/spelling.yml) for uses: check-spelling/check-spelling@prerelease in its with:

check_extra_dictionaries: ''
Pattern suggestions ✂️ (17)

You could add these patterns to .github/actions/spelling/patterns.txt:

# Automatically suggested patterns

# hit-count: 114 file-count: 10
# base64 encoded json
\beyJ[-a-zA-Z=;:/0-9+]+

# hit-count: 71 file-count: 17
# https/http/file urls
(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/*%?=~_|!:,.;]+[-A-Za-z0-9+&@#/*%=~_|]

# hit-count: 35 file-count: 6
# version suffix <word>v#
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))

# hit-count: 26 file-count: 6
# GitHub SHAs (markdown)
(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)

# hit-count: 16 file-count: 6
# in check-spelling@v0.0.22+, printf markers aren't automatically consumed
# printf markers
(?<!\\)\\[nrt](?=[a-z]{2,})

# hit-count: 16 file-count: 6
# alternate printf markers if you run into latex and friends
(?<!\\)\\[nrt](?=[a-z]{2,})(?=.*['"`])

# hit-count: 5 file-count: 4
# bearer auth
(['"])[Bb]ear[e][r] .*?\g{-1}

# hit-count: 5 file-count: 3
# GitHub actions
\buses:\s+[-\w.]+/[-\w./]+@[-\w.]+

# hit-count: 4 file-count: 2
# bearer auth
\b[Bb]ear[e][r]:? [-a-zA-Z=;:/0-9+.]+

# hit-count: 4 file-count: 1
# basic auth
(['"])[Bb]asic [-a-zA-Z=;:/0-9+]{3,}\g{-1}

# hit-count: 3 file-count: 1
# Compiler flags (Unix, Java/Scala)
# Use if you have things like `-Pdocker` and want to treat them as `docker`
(?:^|[\t ,>"'`=(])-(?:(?:J-|)[DPWXY]|[Llf])(?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})

# hit-count: 3 file-count: 1
# Compiler flags (Windows / PowerShell)
# This is a subset of the more general compiler flags pattern.
# It avoids matching `-Path` to prevent it from being treated as `ath`
(?:^|[\t ,"'`=(])-(?:[DPL](?=[A-Z]{2,})|[WXYlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,}))

# hit-count: 2 file-count: 2
# go install
go install(?:\s+[a-z]+\.[-@\w/.]+)+

# hit-count: 2 file-count: 1
# Go regular expressions
regexp?\.MustCompile\(`[^`]*`\)

# hit-count: 1 file-count: 1
# gist github
\bgist\.github\.com/[^/\s"]+/[0-9a-f]+

# hit-count: 1 file-count: 1
# git.io
\bgit\.io/[0-9a-zA-Z]+

# hit-count: 1 file-count: 1
# hex runs
\b[0-9a-fA-F]{16,}\b

Errors (4)

See the 📜action log or 📝 job summary for details.

❌ Errors Count
⚠️ binary-file 1
ℹ️ candidate-pattern 35
❌ check-file-path 26
⚠️ noisy-file 3

See ❌ Event descriptions for more information.

Please sign in to comment.