mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-15 03:07:56 +01:00
## Summary of the Pull Request - #39572 updated check-spelling but ignored: > 🐣 Breaking Changes [Code Scanning action requires a Code Scanning Ruleset](https://github.com/check-spelling/check-spelling/wiki/Breaking-Change:-Code-Scanning-action-requires-a-Code-Scanning-Ruleset) If you use SARIF reporting, then instead of the workflow yielding an ❌ when it fails, it will rely on [github-advanced-security 🤖](https://github.com/apps/github-advanced-security) to report the failure. You will need to adjust your checks for PRs. This means that check-spelling hasn't been properly doing its job 😦. I'm sorry, I should have pushed a thing to this repo earlier,... Anyway, as with most refreshes, this comes with a number of fixes, some are fixes for typos that snuck in before the 0.0.25 upgrade, some are for things that snuck in after, some are based on new rules in spell-check-this, and some are hand written patterns based on running through this repository a few times. About the 🐣 **breaking change**: someone needs to create a ruleset for this repository (see [Code Scanning action requires a Code Scanning Ruleset: Sample ruleset ](https://github.com/check-spelling/check-spelling/wiki/Breaking-Change:-Code-Scanning-action-requires-a-Code-Scanning-Ruleset#sample-ruleset)). The alternative to adding a ruleset is to change the condition to not use sarif for this repository. In general, I think the github integration from sarif is prettier/more helpful, so I think that it's the better choice. You can see an example of it working in: - https://github.com/check-spelling-sandbox/PowerToys/pull/23 --------- Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> Co-authored-by: Mike Griese <migrie@microsoft.com> Co-authored-by: Dustin L. Howett <dustin@howett.net>
785 lines
21 KiB
Plaintext
785 lines
21 KiB
Plaintext
# D2D
|
|
#D?2D
|
|
|
|
# Repeated letters
|
|
\b([a-z])\g{-1}{2,}\b
|
|
|
|
# marker to ignore all code on line
|
|
^.*/\* #no-spell-check-line \*/.*$
|
|
# marker to ignore all code on line
|
|
^.*\bno-spell-check(?:-line|)(?:\s.*|)$
|
|
|
|
# https://cspell.org/configuration/document-settings/
|
|
# cspell inline
|
|
^.*\b[Cc][Ss][Pp][Ee][Ll]{2}:\s*[Dd][Ii][Ss][Aa][Bb][Ll][Ee]-[Ll][Ii][Nn][Ee]\b
|
|
|
|
# copyright
|
|
Copyright (?:\([Cc]\)|)(?:[-\d, ]|and)+(?: [A-Z][a-z]+ [A-Z][a-z]+,?)+
|
|
|
|
# patch hunk comments
|
|
^@@ -\d+(?:,\d+|) \+\d+(?:,\d+|) @@ .*
|
|
# git index header
|
|
index (?:[0-9a-z]{7,40},|)[0-9a-z]{7,40}\.\.[0-9a-z]{7,40}
|
|
|
|
# file permissions
|
|
['"`\s][-bcdLlpsw](?:[-r][-w][-Ssx]){2}[-r][-w][-SsTtx]\+?['"`\s]
|
|
|
|
# css fonts
|
|
\bfont(?:-family|):[^;}]+
|
|
|
|
# css url wrappings
|
|
\burl\([^)]+\)
|
|
|
|
# cid urls
|
|
(['"])cid:.*?\g{-1}
|
|
|
|
# data url in parens
|
|
\(data:(?:[^) ][^)]*?|)(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})[^)]*\)
|
|
# data url in quotes
|
|
([`'"])data:(?:[^ `'"].*?|)(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1}
|
|
# data url
|
|
\bdata:[-a-zA-Z=;:/0-9+_]*,\S*
|
|
|
|
# https/http/file urls
|
|
#(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/*%?=~_|!:,.;]+[-A-Za-z0-9+&@#/*%=~_|]
|
|
|
|
# mailto urls
|
|
#mailto:[-a-zA-Z=;:/?%&0-9+@._]{3,}
|
|
|
|
# magnet urls
|
|
magnet:[?=:\w]+
|
|
|
|
# magnet urls
|
|
"magnet:[^"]+"
|
|
|
|
# obs:
|
|
"obs:[^"]*"
|
|
|
|
# The `\b` here means a break, it's the fancy way to handle urls, but it makes things harder to read
|
|
# In this examples content, I'm using a number of different ways to match things to show various approaches
|
|
# asciinema
|
|
\basciinema\.org/a/[0-9a-zA-Z]+
|
|
|
|
# asciinema v2
|
|
^\[\d+\.\d+, "[io]", ".*"\]$
|
|
|
|
# apple
|
|
\bdeveloper\.apple\.com/[-\w?=/]+
|
|
# Apple music
|
|
\bembed\.music\.apple\.com/fr/playlist/usr-share/[-\w.]+
|
|
|
|
# appveyor api
|
|
\bci\.appveyor\.com/api/projects/status/[0-9a-z]+
|
|
# appveyor project
|
|
\bci\.appveyor\.com/project/(?:[^/\s"]*/){2}builds?/\d+/job/[0-9a-z]+
|
|
|
|
# Amazon
|
|
|
|
# Amazon
|
|
\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
|
|
# AWS ARN
|
|
arn:aws:[-/:\w]+
|
|
# AWS S3
|
|
\b\w*\.s3[^.]*\.amazonaws\.com/[-\w/&#%_?:=]*
|
|
# AWS execute-api
|
|
\b[0-9a-z]{10}\.execute-api\.[-0-9a-z]+\.amazonaws\.com\b
|
|
# AWS ELB
|
|
\b\w+\.[-0-9a-z]+\.elb\.amazonaws\.com\b
|
|
# AWS SNS
|
|
\bsns\.[-0-9a-z]+.amazonaws\.com/[-\w/&#%_?:=]*
|
|
# AWS VPC
|
|
vpc-\w+
|
|
|
|
# While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there
|
|
# YouTube url
|
|
\b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]*
|
|
# YouTube music
|
|
\bmusic\.youtube\.com/youtubei/v1/browse(?:[?&]\w+=[-a-zA-Z0-9?&=_]*)
|
|
# YouTube tag
|
|
<\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"]
|
|
# YouTube image
|
|
\bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]*
|
|
# Google Accounts
|
|
\baccounts.google.com/[-_/?=.:;+%&0-9a-zA-Z]*
|
|
# Google Analytics
|
|
\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]*
|
|
# Google APIs
|
|
\bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+
|
|
# Google Artifact Registry
|
|
\.pkg\.dev(?:/[-\w]+)+(?::[-\w]+|)
|
|
# Google Storage
|
|
\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|)
|
|
# Google Calendar
|
|
\bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+
|
|
\w+\@group\.calendar\.google\.com\b
|
|
# Google DataStudio
|
|
\bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|)
|
|
# The leading `/` here is as opposed to the `\b` above
|
|
# ... a short way to match `https://` or `http://` since most urls have one of those prefixes
|
|
# Google Docs
|
|
/docs\.google\.com/[a-z]+/(?:ccc\?key=\w+|(?:u/\d+|d/(?:e/|)[0-9a-zA-Z_-]+/)?(?:edit\?[-\w=#.]*|/\?[\w=&]*|))
|
|
# Google Drive
|
|
\bdrive\.google\.com/(?:file/d/|open)[-0-9a-zA-Z_?=]*
|
|
# Google Groups
|
|
\bgroups\.google\.com(?:/[a-z]+/(?:#!|)[^/\s"]+)*
|
|
# Google Maps
|
|
\bmaps\.google\.com/maps\?[\w&;=]*
|
|
# Google themes
|
|
themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+.
|
|
# Google CDN
|
|
\bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]*
|
|
# Goo.gl
|
|
/goo\.gl/[a-zA-Z0-9]+
|
|
# Google Chrome Store
|
|
\bchrome\.google\.com/webstore/detail/[-\w]*(?:/\w*|)
|
|
# Google Books
|
|
\bgoogle\.(?:\w{2,4})/books(?:/\w+)*\?[-\w\d=&#.]*
|
|
# Google Fonts
|
|
\bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]*
|
|
# Google Forms
|
|
\bforms\.gle/\w+
|
|
# Google Scholar
|
|
\bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+
|
|
# Google Colab Research Drive
|
|
\bcolab\.research\.google\.com/drive/[-0-9a-zA-Z_?=]*
|
|
# Google Cloud regions
|
|
(?:us|(?:north|south)america|europe|asia|australia|me|africa)-(?:north|south|east|west|central){1,2}\d+
|
|
|
|
# GitHub SHAs (api)
|
|
\bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b
|
|
# GitHub SHAs (markdown)
|
|
(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
|
|
# GitHub SHAs
|
|
\bgithub\.com(?:/[^/\s"]+){2}[@#][0-9a-f]+\b
|
|
# GitHub SHA refs
|
|
\[([0-9a-f]+)\]\(https://(?:www\.|)github.com/[-\w]+/[-\w]+/commit/\g{-1}[0-9a-f]*
|
|
# GitHub wiki
|
|
\bgithub\.com/(?:[^/]+/){2}wiki/(?:(?:[^/]+/|)_history|[^/]+(?:/_compare|)/[0-9a-f.]{40,})\b
|
|
# githubusercontent
|
|
/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
|
|
# githubassets
|
|
\bgithubassets.com/[0-9a-f]+(?:[-/\w.]+)
|
|
# gist github
|
|
\bgist\.github\.com/[^/\s"]+/[0-9a-f]+
|
|
# git.io
|
|
\bgit\.io/[0-9a-zA-Z]+
|
|
# GitHub JSON
|
|
"node_id": "[-a-zA-Z=;:/0-9+_]*"
|
|
# Contributor
|
|
\[[^\]]+\]\(https://github\.com/[^/\s"]+/?\)
|
|
# GHSA
|
|
GHSA(?:-[0-9a-z]{4}){3}
|
|
|
|
# GitHub actions
|
|
\buses:\s+[-\w.]+/[-\w./]+@[-\w.]+
|
|
|
|
# GitLab commit
|
|
\bgitlab\.[^/\s"]*/\S+/\S+/commit/[0-9a-f]{7,16}#[0-9a-f]{40}\b
|
|
# GitLab merge requests
|
|
\bgitlab\.[^/\s"]*/\S+/\S+/-/merge_requests/\d+/diffs#[0-9a-f]{40}\b
|
|
# GitLab uploads
|
|
\bgitlab\.[^/\s"]*/uploads/[-a-zA-Z=;:/0-9+]*
|
|
# GitLab commits
|
|
\bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b
|
|
|
|
# #includes
|
|
^\s*#include\s*(?:<.*?>|".*?")
|
|
|
|
# #pragma lib
|
|
^\s*#pragma comment\(lib, ".*?"\)
|
|
|
|
# binance
|
|
accounts\.binance\.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]*
|
|
|
|
# bitbucket diff
|
|
\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}diff(?:stat|)(?:/[^/\s"]+){2}:[0-9a-f]+
|
|
# bitbucket repositories commits
|
|
\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
|
|
# bitbucket commits
|
|
\bbitbucket\.org/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
|
|
|
|
# bit.ly
|
|
\bbit\.ly/\w+
|
|
|
|
# bitrise
|
|
\bapp\.bitrise\.io/app/[0-9a-f]*/[\w.?=&]*
|
|
|
|
# bootstrapcdn.com
|
|
\bbootstrapcdn\.com/[-./\w]+
|
|
|
|
# cdn.cloudflare.com
|
|
\bcdnjs\.cloudflare\.com/[./\w]+
|
|
|
|
# circleci
|
|
\bcircleci\.com/gh(?:/[^/\s"]+){1,5}.[a-z]+\?[-0-9a-zA-Z=&]+
|
|
|
|
# gitter
|
|
\bgitter\.im(?:/[^/\s"]+){2}\?at=[0-9a-f]+
|
|
|
|
# gravatar
|
|
\bgravatar\.com/avatar/[0-9a-f]+
|
|
|
|
# ibm
|
|
[a-z.]*ibm\.com/[-_#=:%!?~.\\/\d\w]*
|
|
|
|
# imgur
|
|
\bimgur\.com/[^.]+
|
|
|
|
# Internet Archive
|
|
\barchive\.org/web/\d+/(?:[-\w.?,'/\\+&%$#_:]*)
|
|
|
|
# discord
|
|
/discord(?:app\.com|\.gg)/(?:invite/)?[a-zA-Z0-9]{7,}
|
|
|
|
# Disqus
|
|
\bdisqus\.com/[-\w/%.()!?&=_]*
|
|
|
|
# medium link
|
|
\blink\.medium\.com/[a-zA-Z0-9]+
|
|
# medium
|
|
\bmedium\.com/@?[^/\s"]+/[-\w]+
|
|
|
|
# microsoft
|
|
\b(?:https?://|)(?:(?:(?:blogs|download\.visualstudio|docs|msdn2?|research)\.|)microsoft|blogs\.msdn)\.co(?:m|\.\w\w)/[-_a-zA-Z0-9()=./%]*
|
|
# powerbi
|
|
\bapp\.powerbi\.com/reportEmbed/[^"' ]*
|
|
# vs devops
|
|
\bvisualstudio.com(?::443|)/[-\w/?=%&.]*
|
|
# microsoft store
|
|
\bmicrosoft\.com/store/apps/\w+
|
|
|
|
# mvnrepository.com
|
|
\bmvnrepository\.com/[-0-9a-z./]+
|
|
|
|
# now.sh
|
|
/[0-9a-z-.]+\.now\.sh\b
|
|
|
|
# oracle
|
|
\bdocs\.oracle\.com/[-0-9a-zA-Z./_?#&=]*
|
|
|
|
# chromatic.com
|
|
/\S+.chromatic.com\S*[")]
|
|
|
|
# codacy
|
|
\bapi\.codacy\.com/project/badge/Grade/[0-9a-f]+
|
|
|
|
# compai
|
|
\bcompai\.pub/v1/png/[0-9a-f]+
|
|
|
|
# mailgun api
|
|
\.api\.mailgun\.net/v3/domains/[0-9a-z]+\.mailgun.org/messages/[0-9a-zA-Z=@]*
|
|
# mailgun
|
|
\b[0-9a-z]+.mailgun.org
|
|
|
|
# /message-id/
|
|
/message-id/[-\w@./%]+
|
|
|
|
# Reddit
|
|
\breddit\.com/r/[/\w_]*
|
|
|
|
# requestb.in
|
|
\brequestb\.in/[0-9a-z]+
|
|
|
|
# sched
|
|
\b[a-z0-9]+\.sched\.com\b
|
|
|
|
# Slack url
|
|
slack://[a-zA-Z0-9?&=]+
|
|
# Slack
|
|
\bslack\.com/[-0-9a-zA-Z/_~?&=.]*
|
|
# Slack edge
|
|
\bslack-edge\.com/[-a-zA-Z0-9?&=%./]+
|
|
# Slack images
|
|
\bslack-imgs\.com/[-a-zA-Z0-9?&=%.]+
|
|
|
|
# shields.io
|
|
\bshields\.io/[-\w/%?=&.:+;,]*
|
|
|
|
# stackexchange -- https://stackexchange.com/feeds/sites
|
|
\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/)
|
|
|
|
# Sentry
|
|
[0-9a-f]{32}\@o\d+\.ingest\.sentry\.io\b
|
|
|
|
# Twitter markdown
|
|
\[@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\)
|
|
# Twitter hashtag
|
|
\btwitter\.com/hashtag/[\w?_=&]*
|
|
# Twitter status
|
|
\btwitter\.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)
|
|
# Twitter profile images
|
|
\btwimg\.com/profile_images/[_\w./]*
|
|
# Twitter media
|
|
\btwimg\.com/media/[-_\w./?=]*
|
|
# Twitter link shortened
|
|
\bt\.co/\w+
|
|
|
|
# facebook
|
|
\bfburl\.com/[0-9a-z_]+
|
|
# facebook CDN
|
|
\bfbcdn\.net/[\w/.,]*
|
|
# facebook watch
|
|
\bfb\.watch/[0-9A-Za-z]+
|
|
|
|
# dropbox
|
|
\bdropbox\.com/sh?/[^/\s"]+/[-0-9A-Za-z_.%?=&;]+
|
|
|
|
# ipfs protocol
|
|
ipfs://[0-9a-zA-Z]{3,}
|
|
# ipfs url
|
|
/ipfs/[0-9a-zA-Z]{3,}
|
|
|
|
# w3
|
|
\bw3\.org/[-0-9a-zA-Z/#.]+
|
|
|
|
# loom
|
|
\bloom\.com/embed/[0-9a-f]+
|
|
|
|
# regex101
|
|
\bregex101\.com/r/[^/\s"]+/\d+
|
|
|
|
# figma
|
|
\bfigma\.com/file(?:/[0-9a-zA-Z]+/)+
|
|
|
|
# freecodecamp.org
|
|
\bfreecodecamp\.org/[-\w/.]+
|
|
|
|
# image.tmdb.org
|
|
\bimage\.tmdb\.org/[/\w.]+
|
|
|
|
# mermaid
|
|
\bmermaid\.ink/img/[-\w]+|\bmermaid-js\.github\.io/mermaid-live-editor/#/edit/[-\w]+
|
|
|
|
# Wikipedia
|
|
\ben\.wikipedia\.org/wiki/[-\w%.#]+
|
|
|
|
# gitweb
|
|
[^"\s]+/gitweb/\S+;h=[0-9a-f]+
|
|
|
|
# HyperKitty lists
|
|
/archives/list/[^@/]+@[^/\s"]*/message/[^/\s"]*/
|
|
|
|
# lists
|
|
/thread\.html/[^"\s]+
|
|
|
|
# list-management
|
|
\blist-manage\.com/subscribe(?:[?&](?:u|id)=[0-9a-f]+)+
|
|
|
|
# kubectl.kubernetes.io/last-applied-configuration
|
|
"kubectl.kubernetes.io/last-applied-configuration": ".*"
|
|
|
|
# pgp
|
|
\bgnupg\.net/pks/lookup[?&=0-9a-zA-Z]*
|
|
|
|
# Spotify
|
|
\bopen\.spotify\.com/embed/playlist/\w+
|
|
|
|
# Mastodon
|
|
\bmastodon\.[-a-z.]*/(?:media/|@)[?&=0-9a-zA-Z_]*
|
|
|
|
# scastie
|
|
\bscastie\.scala-lang\.org/[^/]+/\w+
|
|
|
|
# images.unsplash.com
|
|
\bimages\.unsplash\.com/(?:(?:flagged|reserve)/|)[-\w./%?=%&.;]+
|
|
|
|
# pastebin
|
|
\bpastebin\.com/[\w/]+
|
|
|
|
# heroku
|
|
\b\w+\.heroku\.com/source/archive/\w+
|
|
|
|
# quip
|
|
\b\w+\.quip\.com/\w+(?:(?:#|/issues/)\w+)?
|
|
|
|
# badgen.net
|
|
\bbadgen\.net/badge/[^")\]'\s]+
|
|
|
|
# statuspage.io
|
|
\w+\.statuspage\.io\b
|
|
|
|
# media.giphy.com
|
|
\bmedia\.giphy\.com/media/[^/]+/[\w.?&=]+
|
|
|
|
# tinyurl
|
|
\btinyurl\.com/\w+
|
|
|
|
# codepen
|
|
\bcodepen\.io/[\w/]+
|
|
|
|
# registry.npmjs.org
|
|
\bregistry\.npmjs\.org/(?:@[^/"']+/|)[^/"']+/-/[-\w@.]+
|
|
|
|
# getopts
|
|
\bgetopts\s+(?:"[^"]+"|'[^']+')
|
|
|
|
# ANSI color codes
|
|
(?:\\(?:u00|x)1[Bb]|\\03[1-7]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+)*m
|
|
|
|
# URL escaped characters
|
|
%[0-9A-F][A-F](?=[A-Za-z])
|
|
# lower URL escaped characters
|
|
%[0-9a-f][a-f](?=[a-z]{2,})
|
|
# IPv6
|
|
\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b
|
|
# c99 hex digits (not the full format, just one I've seen)
|
|
0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP]
|
|
# Punycode
|
|
\bxn--[-0-9a-z]+
|
|
# sha
|
|
sha\d+:[0-9a-f]*?[a-f]{3,}[0-9a-f]*
|
|
# sha-... -- uses a fancy capture
|
|
(\\?['"]|")[0-9a-f]{40,}\g{-1}
|
|
# hex runs
|
|
\b[0-9a-fA-F]{16,}\b
|
|
# hex in url queries
|
|
=[0-9a-fA-F]*?(?:[A-F]{3,}|[a-f]{3,})[0-9a-fA-F]*?&
|
|
# ssh
|
|
(?:ssh-\S+|-nistp256) [-a-zA-Z=;:/0-9+]{12,}
|
|
|
|
# PGP
|
|
\b(?:[0-9A-F]{4} ){9}[0-9A-F]{4}\b
|
|
# GPG keys
|
|
\b(?:[0-9A-F]{4} ){5}(?: [0-9A-F]{4}){5}\b
|
|
# Well known gpg keys
|
|
.well-known/openpgpkey/[\w./]+
|
|
|
|
# pki
|
|
-----BEGIN.*-----END
|
|
|
|
# pki (base64)
|
|
LS0tLS1CRUdJT.*
|
|
|
|
# C# includes
|
|
^\s*using [^;]+;
|
|
|
|
# uuid:
|
|
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
|
|
# hex digits including css/html color classes:
|
|
(?:[\\0][xX]|\\u\{?|[uU]\+|#x?|%23|&H)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|[iu]\d+)\b
|
|
|
|
# integrity
|
|
integrity=(['"])(?:\s*sha\d+-[-a-zA-Z=;:/0-9+]{40,})+\g{-1}
|
|
|
|
# https://www.gnu.org/software/groff/manual/groff.html
|
|
# man troff content
|
|
\\f[BCIPR]
|
|
# '/"
|
|
\\\([ad]q
|
|
|
|
# .desktop mime types
|
|
^MimeTypes?=.*$
|
|
# .desktop localized entries
|
|
^[A-Z][a-z]+\[[a-z]+\]=.*$
|
|
# Localized .desktop content
|
|
Name\[[^\]]+\]=.*
|
|
|
|
# IServiceProvider / isAThing
|
|
(?:(?:\b|_|(?<=[a-z]))I|(?:\b|_)(?:nsI|isA))(?=(?:[A-Z][a-z]{2,})+(?:[A-Z\d]|\b))
|
|
|
|
# python
|
|
#\b(?i)py(?!gments|gmy|lon|ramid|ro|th)(?=[a-z]{2,})
|
|
|
|
# crypt
|
|
(['"])\$2[ayb]\$.{56}\g{-1}
|
|
|
|
# apache/old crypt
|
|
(['"]|)\$+(?:apr|)1\$+.{8}\$+.{22}\g{-1}
|
|
|
|
# sha1 hash
|
|
\{SHA\}[-a-zA-Z=;:/0-9+]{3,}
|
|
|
|
# machine learning (?)
|
|
#\b(?i)ml(?=[a-z]{2,})
|
|
|
|
# scrypt / argon
|
|
\$(?:scrypt|argon\d+[di]*)\$\S+
|
|
|
|
# go.sum
|
|
\bh1:\S+
|
|
|
|
# imports
|
|
^import\s+(?:(?:static|type)\s+|)(?:[\w.]|\{\s*\w*?(?:,\s*(?:\w*|\*))+\s*\})+
|
|
|
|
# scala modules
|
|
#("[^"]+"\s*%%?\s*){2,3}"[^"]+"
|
|
|
|
# container images
|
|
image: [-\w./:@]+
|
|
|
|
# Docker images
|
|
^\s*(?i)FROM\s+\S+:\S+(?:\s+AS\s+\S+|)
|
|
|
|
# `docker images` REPOSITORY TAG IMAGE ID CREATED SIZE
|
|
\s*\S+/\S+\s+\S+\s+[0-9a-f]{8,}\s+\d+\s+(?:hour|day|week)s ago\s+[\d.]+[KMGT]B
|
|
|
|
# Intel intrinsics
|
|
_mm\d*_(?!dd)\w+
|
|
|
|
# Input to GitHub JSON
|
|
content: (['"])[-a-zA-Z=;:/0-9+]*=\g{-1}
|
|
|
|
# This does not cover multiline strings, if your repository has them,
|
|
# you'll want to remove the `(?=.*?")` suffix.
|
|
# The `(?=.*?")` suffix should limit the false positives rate
|
|
# printf
|
|
#%(?:(?:(?:hh?|ll?|[jzt])?[diuoxn]|l?[cs]|L?[fega]|p)(?=[a-z]{2,})|(?:X|L?[FEGA])(?=[a-zA-Z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%)\b)(?=.*?['"])
|
|
|
|
# Alternative printf
|
|
# %s
|
|
%(?:s(?=[a-z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%[^s])\b)(?=.*?['"])
|
|
|
|
# Python string prefix / binary prefix
|
|
# Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings
|
|
(?<!['"])\b(?:B|BR|Br|F|FR|Fr|R|RB|RF|Rb|Rf|U|UR|Ur|b|bR|br|f|fR|fr|r|rB|rF|rb|rf|u|uR|ur)['"](?=[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})
|
|
|
|
# Regular expressions for (P|p)assword
|
|
\([A-Z]\|[a-z]\)[a-z]+
|
|
|
|
# JavaScript regular expressions
|
|
# javascript test regex
|
|
/.{3,}/[gim]*\.test\(
|
|
# javascript match regex
|
|
\.match\(/[^/\s"]{3,}/[gim]*\s*
|
|
# javascript match regex
|
|
\.match\(/\\[b].{3,}?/[gim]*\s*\)(?:;|$)
|
|
# javascript regex
|
|
^\s*/\\[b].{3,}?/[gim]*\s*(?:\)(?:;|$)|,$)
|
|
# javascript replace regex
|
|
\.replace\(/[^/\s"]{3,}/[gim]*\s*,
|
|
# assign regex
|
|
= /[^*].*?(?:[a-z]{3,}|[A-Z]{3,}|[A-Z][a-z]{2,}).*/[gim]*(?=\W|$)
|
|
# perl regex test
|
|
[!=]~ (?:/.*/|m\{.*?\}|m<.*?>|m([|!/@#,;']).*?\g{-1})
|
|
|
|
# perl qr regex
|
|
(?<!\$)\bqr(?:\{.*?\}|<.*?>|\(.*?\)|([|!/@#,;']).*?\g{-1})
|
|
|
|
# perl run
|
|
perl(?:\s+-[a-zA-Z]\w*)+
|
|
|
|
# C network byte conversions
|
|
#(?:\d|\bh)to(?!ken)(?=[a-z])|to(?=[adhiklpun]\()
|
|
|
|
# Go regular expressions
|
|
regexp?\.MustCompile\((?:`[^`]*`|".*"|'.*')\)
|
|
|
|
# regex choice
|
|
\(\?:[^)]+\|[^)]+\)
|
|
|
|
# proto
|
|
^\s*(\w+)\s\g{-1} =
|
|
|
|
# sed regular expressions
|
|
sed 's/(?:[^/]*?[a-zA-Z]{3,}[^/]*?/){2}
|
|
|
|
# node packages
|
|
(["'])@[^/'" ]+/[^/'" ]+\g{-1}
|
|
|
|
# go install
|
|
go install(?:\s+[a-z]+\.[-@\w/.]+)+
|
|
|
|
# pom.xml
|
|
<(?:group|artifact)Id>.*?<
|
|
|
|
# jetbrains schema https://youtrack.jetbrains.com/issue/RSRP-489571
|
|
urn:shemas-jetbrains-com
|
|
|
|
# Debian changelog severity
|
|
[-\w]+ \(.*\) (?:\w+|baseline|unstable|experimental); urgency=(?:low|medium|high|emergency|critical)\b
|
|
|
|
# kubernetes pod status lists
|
|
# https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase
|
|
\w+(?:-\w+)+\s+\d+/\d+\s+(?:Running|Pending|Succeeded|Failed|Unknown)\s+
|
|
|
|
# kubectl - pods in CrashLoopBackOff
|
|
\w+-[0-9a-f]+-\w+\s+\d+/\d+\s+CrashLoopBackOff\s+
|
|
|
|
# kubernetes applications
|
|
\.apps/[-\w]+
|
|
|
|
# kubernetes object suffix
|
|
-[0-9a-f]{10}-\w{5}\s
|
|
|
|
# kubernetes crd patterns
|
|
^\s*pattern: .*$
|
|
|
|
# posthog secrets
|
|
([`'"])phc_[^"',]+\g{-1}
|
|
|
|
# xcode
|
|
|
|
# xcodeproject scenes
|
|
(?:Controller|destination|(?:first|second)Item|ID|id)="\w{3}-\w{2}-\w{3}"
|
|
|
|
# xcode api botches
|
|
customObjectInstantitationMethod
|
|
|
|
# msvc api botches
|
|
PrependWithABINamepsace
|
|
|
|
# configure flags
|
|
.* \| --\w{2,}.*?(?=\w+\s\w+)
|
|
|
|
# font awesome classes
|
|
\.fa-[-a-z0-9]+
|
|
|
|
# bearer auth
|
|
(['"])[Bb]ear[e][r] .{3,}?\g{-1}
|
|
|
|
# bearer auth
|
|
\b[Bb]ear[e][r]:? [-a-zA-Z=;:/0-9+.]{3,}
|
|
|
|
# basic auth
|
|
(['"])[Bb]asic [-a-zA-Z=;:/0-9+]{3,}\g{-1}
|
|
|
|
# basic auth
|
|
: [Bb]asic [-a-zA-Z=;:/0-9+.]{3,}
|
|
|
|
# base64 encoded content
|
|
#([`'"])[-a-zA-Z=;:/0-9+]{3,}=\g{-1}
|
|
# base64 encoded content in xml/sgml
|
|
>[-a-zA-Z=;:/0-9+]{3,}=</
|
|
# base64 encoded content, possibly wrapped in mime
|
|
#(?:^|[\s=;:?])[-a-zA-Z=;:/0-9+]{50,}(?:[\s=;:?]|$)
|
|
# base64 encoded json
|
|
\beyJ[-a-zA-Z=;:/0-9+]+
|
|
# base64 encoded pkcs
|
|
#\bMII[-a-zA-Z=;:/0-9+]+
|
|
|
|
# uuencoded
|
|
#[!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_]{40,}
|
|
|
|
# DNS rr data
|
|
#(?:\d+\s+){3}(?:[-+/=.\w]{2,}\s*){1,2}
|
|
|
|
# encoded-word
|
|
=\?[-a-zA-Z0-9"*%]+\?[BQ]\?[^?]{0,75}\?=
|
|
|
|
# numerator
|
|
\bnumer\b(?=.*denom)
|
|
|
|
# Time Zones
|
|
\b(?:Africa|Atlantic|America|Antarctica|Arctic|Asia|Australia|Europe|Indian|Pacific)(?:/[-\w]+)+
|
|
|
|
# linux kernel info
|
|
^(?:bugs|flags|Features)\s+:.*
|
|
|
|
# systemd mode
|
|
systemd.*?running in system mode \([-+].*\)$
|
|
|
|
# Lorem
|
|
# Update Lorem based on your content (requires `ge` and `w` from https://github.com/jsoref/spelling; and `review` from https://github.com/check-spelling/check-spelling/wiki/Looking-for-items-locally )
|
|
# grep '^[^#].*lorem' .github/actions/spelling/patterns.txt|perl -pne 's/.*i..\?://;s/\).*//' |tr '|' "\n"|sort -f |xargs -n1 ge|perl -pne 's/^[^:]*://'|sort -u|w|sed -e 's/ .*//'|w|review -
|
|
# Warning, while `(?i)` is very neat and fancy, if you have some binary files that aren't proper unicode, you might run into:
|
|
# ... Operation "substitution (s///)" returns its argument for non-Unicode code point 0x1C19AE (the code point will vary).
|
|
# ... You could manually change `(?i)X...` to use `[Xx]...`
|
|
# ... or you could add the files to your `excludes` file (a version after 0.0.19 should identify the file path)
|
|
(?:(?:\w|\s|[,.])*\b(?i)(?:amet|consectetur|cursus|dolor|eros|ipsum|lacus|libero|ligula|lorem|magna|neque|nulla|suscipit|tempus)\b(?:\w|\s|[,.])*)
|
|
|
|
# Non-English
|
|
# Even repositories expecting pure English content can unintentionally have Non-English content... People will occasionally mistakenly enter [homoglyphs](https://en.wikipedia.org/wiki/Homoglyph) which are essentially typos, and using this pattern will mean check-spelling will not complain about them.
|
|
#
|
|
# If the content to be checked should be written in English and the only Non-English items will be people's names, then you can consider adding this.
|
|
#
|
|
# Alternatively, if you're using check-spelling v0.0.25+, and you would like to _check_ the Non-English content for spelling errors, you can. For information on how to do so, see:
|
|
# https://docs.check-spelling.dev/Feature:-Configurable-word-characters.html#unicode
|
|
[a-zA-Z]*[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*|[a-zA-Z]{3,}[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]|[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3,}
|
|
|
|
# highlighted letters
|
|
\[[A-Z]\][a-z]+
|
|
|
|
# French
|
|
# This corpus only had capital letters, but you probably want lowercase ones as well.
|
|
\b[LN]'+[a-z]{2,}\b
|
|
|
|
# latex (check-spelling >= 0.0.22)
|
|
\\\w{2,}\{
|
|
|
|
# American Mathematical Society (AMS) / Doxygen
|
|
TeX/AMS
|
|
|
|
# File extensions
|
|
#\*\.[+\w]+,
|
|
|
|
# eslint
|
|
"varsIgnorePattern": ".+"
|
|
|
|
# nolint
|
|
nolint:\s*[\w,]+
|
|
|
|
# Windows short paths
|
|
[/\\][^/\\]{5,6}~\d{1,2}(?=[/\\])
|
|
|
|
# Windows Resources with accelerators
|
|
\b[A-Z]&[a-z]+\b(?!;)
|
|
|
|
# signed off by
|
|
(?i)Signed-off-by: .*
|
|
|
|
# cygwin paths
|
|
/cygdrive/[a-zA-Z]/(?:Program Files(?: \(.*?\)| ?)(?:/[-+.~\\/()\w ]+)*|[-+.~\\/()\w])+
|
|
|
|
# in check-spelling@v0.0.22+, printf markers aren't automatically consumed
|
|
# printf markers
|
|
#(?<!\\)\\[nrt](?=[a-z]{2,})
|
|
# alternate printf markers if you run into latex and friends
|
|
#(?<!\\)\\[nrt](?=[a-z]{2,})(?=.*['"`])
|
|
|
|
# Markdown anchor links
|
|
\(#\S*?[a-zA-Z]\S*?\)
|
|
|
|
# apache
|
|
a2(?:en|dis)
|
|
|
|
# weak e-tag
|
|
W/"[^"]+"
|
|
|
|
# authors/credits
|
|
^\*(?: [A-Z](?:\w+|\.)){2,} (?=\[|$)
|
|
|
|
# the negative lookahead here is to allow catching 'templatesz' as a misspelling
|
|
# but to otherwise recognize a Windows path with \templates\foo.template or similar:
|
|
#\\(?:necessary|r(?:elease|eport|esolve[dr]?|esult)|t(?:arget|emplates?))(?![a-z])
|
|
# ignore long runs of a single character:
|
|
\b([A-Za-z])\g{-1}{3,}\b
|
|
|
|
# version suffix <word>v#
|
|
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
|
|
|
|
# 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,})
|
|
|
|
# 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,}))
|
|
|
|
# Compiler flags (linker)
|
|
,-B
|
|
|
|
# Library prefix
|
|
# e.g., `lib`+`archive`, `lib`+`raw`, `lib`+`unwind`
|
|
# (ignores some words that happen to start with `lib`)
|
|
(?:\b|_)[Ll]ib(?:re(?=office)|)(?!era[lt]|ero|erty|rar(?:i(?:an|es)|y))(?=[a-z])
|
|
|
|
# iSCSI iqn (approximate regex)
|
|
\biqn\.[0-9]{4}-[0-9]{2}(?:[\.-][a-z][a-z0-9]*)*\b
|
|
|
|
# WWNN/WWPN (NAA identifiers)
|
|
\b(?:0x)?10[0-9a-f]{14}\b|\b(?:0x|3)?[25][0-9a-f]{15}\b|\b(?:0x|3)?6[0-9a-f]{31}\b
|
|
|
|
# curl arguments
|
|
\b(?:\\n|)curl(?:\.exe|)(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*
|
|
# set arguments
|
|
\b(?:bash|sh|set)(?:\s+[-+][abefimouxE]{1,2})*\s+[-+][abefimouxE]{3,}(?:\s+[-+][abefimouxE]+)*
|
|
# tar arguments
|
|
\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+
|
|
# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long...
|
|
\btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b
|
|
# macOS temp folders
|
|
/var/folders/\w\w/[+\w]+/(?:T|-Caches-)/
|
|
# github runner temp folders
|
|
/home/runner/work/_temp/[-_/a-z0-9]+
|