fix(comment-scope): 色碼不再被當成議題編號
寫一份含樣式表的網頁檔時,註解範圍守門連著兩次擋下來,說有議題編號,指 的其實是樣式表裡宣告墨色的那一行自訂屬性。 錯在兩層。一是註解行判定:SQL 的行首註解是兩個減號,樣式表的自訂屬性開 頭也是兩個減號,判定不管後面接什麼,整份樣式表的變數宣告就被當註解送去 比對。二是議題編號那條樣式咬的是井號接數字,色碼開頭剛好是數字,於是指 著色碼喊編號。 兩層各補一刀。行首兩個減號要求後面接空白:真的註解都留那個空白,自訂屬 性沒有,判定就分得開。白名單再多剪一條,把井號後面含十六進位字母的色碼 先剪掉;議題編號是純十進位,這一刀剪不到真的編號。剪而不是整行放行,維 持原本「同一行可能一半合規、一半違規」的處理方式。 驗過三種情形:含色碼宣告的樣式表不再命中;樣式表註解裡寫井號接兩位數字 照舊命中;SQL 註解裡夾議題編號照舊命中。語法檢查也過。 影響提交前那道註解範圍掃描。吃虧最深的是前端與資料庫這兩類檔案——之前它 們一碰色碼就得靠人判斷是不是誤報,現在守門擋下來的都值得看一眼。 三份 manifest 同步升到 0.5.2,跳過已在別處佔用的版號,避免撞號。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "jsc-hooks",
|
"name": "jsc-hooks",
|
||||||
"version": "0.5.0",
|
"version": "0.5.2",
|
||||||
"description": "跨 CLI hooks:STE100 語言強制、工時計時、技能用量記錄、SDLC 模型鎖、版本前置檢查、註解範圍守門、繁中編碼守門、部署後強制重啟、寫入與提交閘門",
|
"description": "跨 CLI hooks:STE100 語言強制、工時計時、技能用量記錄、SDLC 模型鎖、版本前置檢查、註解範圍守門、繁中編碼守門、部署後強制重啟、寫入與提交閘門",
|
||||||
"skills": "./skills",
|
"skills": "./skills",
|
||||||
"author": {
|
"author": {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"hooks": "./hooks/codex-hooks.json",
|
"hooks": "./hooks/codex-hooks.json",
|
||||||
"name": "jsc-hooks",
|
"name": "jsc-hooks",
|
||||||
"version": "0.5.0",
|
"version": "0.5.2",
|
||||||
"description": "跨 CLI hooks:STE100 語言強制、工時計時、技能用量記錄、SDLC 模型鎖、版本前置檢查、註解範圍守門、繁中編碼守門、部署後強制重啟、寫入與提交閘門",
|
"description": "跨 CLI hooks:STE100 語言強制、工時計時、技能用量記錄、SDLC 模型鎖、版本前置檢查、註解範圍守門、繁中編碼守門、部署後強制重啟、寫入與提交閘門",
|
||||||
"skills": "./skills",
|
"skills": "./skills",
|
||||||
"jsc": {
|
"jsc": {
|
||||||
|
|||||||
@@ -65,10 +65,14 @@ scan_file() { # $1=檔案路徑;命中就把報告印到 stdout 並回傳 1,
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# 只留註解行:行首註解符號,或行中出現 // 與 # 的行尾註解。
|
# 只留註解行:行首註解符號,或行中出現 // 與 # 的行尾註解。
|
||||||
comments=$(printf '%s\n' "$lines" | grep -E '^[[:space:]]*(//|#|--|\*|/\*|<!--|;|%)|[[:space:]](//|#)[[:space:]]' || true)
|
# `--` 後面一定要接空白:CSS 自訂屬性也是 `--` 開頭(`--ink: #121a1d;`),
|
||||||
|
# 不要求空白就會把整份樣式表的變數宣告當成 SQL 註解送去比對,色碼再被咬成議題編號。
|
||||||
|
comments=$(printf '%s\n' "$lines" | grep -E '^[[:space:]]*(//|#|--[[:space:]]|\*|/\*|<!--|;|%)|[[:space:]](//|#)[[:space:]]' || true)
|
||||||
[ -n "$comments" ] || return 0
|
[ -n "$comments" ] || return 0
|
||||||
|
|
||||||
# 白名單先剪掉,再比對禁止樣式。剪掉而不是整行放行——同一行可能一半合規、一半違規。
|
# 白名單先剪掉,再比對禁止樣式。剪掉而不是整行放行——同一行可能一半合規、一半違規。
|
||||||
|
# 最後一條剪的是十六進位色碼:註解裡提到 `#e9eef0` 這種寫法,議題編號那一條會咬到開頭的
|
||||||
|
# 數字。只剪含十六進位字母的那些——議題編號是純十進位,所以剪不到真的編號。
|
||||||
cleaned=$(printf '%s\n' "$comments" | sed -E \
|
cleaned=$(printf '%s\n' "$comments" | sed -E \
|
||||||
-e 's#SPDX-License-Identifier:[^[:space:]]*##g' \
|
-e 's#SPDX-License-Identifier:[^[:space:]]*##g' \
|
||||||
-e 's#CVE-[0-9]{4}-[0-9]+##g' \
|
-e 's#CVE-[0-9]{4}-[0-9]+##g' \
|
||||||
@@ -76,7 +80,8 @@ scan_file() { # $1=檔案路徑;命中就把報告印到 stdout 並回傳 1,
|
|||||||
-e 's#@(deprecated|since|param|returns?|throws|type|typedef|example|see|link|inheritdoc|override|nullable|internal)##g' \
|
-e 's#@(deprecated|since|param|returns?|throws|type|typedef|example|see|link|inheritdoc|override|nullable|internal)##g' \
|
||||||
-e 's#https?://(github|gitlab|bitbucket)\.com/[^[:space:]]*##g' \
|
-e 's#https?://(github|gitlab|bitbucket)\.com/[^[:space:]]*##g' \
|
||||||
-e 's#https?://[^[:space:]]*[{<][^[:space:]]*##g' \
|
-e 's#https?://[^[:space:]]*[{<][^[:space:]]*##g' \
|
||||||
-e 's#[0-9]{4}[-/][0-9]{1,2}[-/][0-9]{1,2}##g')
|
-e 's#[0-9]{4}[-/][0-9]{1,2}[-/][0-9]{1,2}##g' \
|
||||||
|
-e 's/(^|[^0-9A-Za-z_])#[0-9a-fA-F]*[a-fA-F][0-9a-fA-F]*([^0-9A-Za-z_]|$)/\1\2/g')
|
||||||
|
|
||||||
out=$(
|
out=$(
|
||||||
hit '(^|[^[:alnum:]_/])#[0-9]+' '議題編號(#123)'
|
hit '(^|[^[:alnum:]_/])#[0-9]+' '議題編號(#123)'
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "jsc-hooks",
|
"name": "jsc-hooks",
|
||||||
"version": "0.5.0",
|
"version": "0.5.2",
|
||||||
"description": "跨 CLI hooks:STE100 語言強制、工時計時、技能用量記錄、SDLC 模型鎖、版本前置檢查、註解範圍守門、繁中編碼守門、部署後強制重啟、寫入與提交閘門",
|
"description": "跨 CLI hooks:STE100 語言強制、工時計時、技能用量記錄、SDLC 模型鎖、版本前置檢查、註解範圍守門、繁中編碼守門、部署後強制重啟、寫入與提交閘門",
|
||||||
"skills": "./skills/",
|
"skills": "./skills/",
|
||||||
"jsc": {
|
"jsc": {
|
||||||
|
|||||||
Reference in New Issue
Block a user