From adeec9b36d645da61b322552f984b3e3d24b3f6e Mon Sep 17 00:00:00 2001 From: CarterPerez-dev Date: Fri, 8 May 2026 05:40:04 -0400 Subject: [PATCH] fix: resolve CI lint failures across frontend and Go projects Node.js bumped to 22 in lint workflow (pnpm 11.x requires >=22.13). Extract goconst-flagged string literals in secrets-scanner to named constants. Carry along monitor-dashboard docker/package fixes. --- .github/workflows/lint.yml | 2 +- .../conf/docker/dev/vite.docker | 2 +- .../conf/docker/prod/vite.docker | 4 +- .../frontend/.npmrc | 1 + .../frontend/package.json | 6 +- .../internal/engine/detector.go | 4 +- .../secrets-scanner/internal/engine/filter.go | 1430 +++++++++-------- .../internal/engine/filter_test.go | 4 +- .../secrets-scanner/internal/rules/entropy.go | 12 +- .../internal/rules/entropy_test.go | 12 +- 10 files changed, 744 insertions(+), 733 deletions(-) create mode 100644 PROJECTS/advanced/monitor-the-situation-dashboard/frontend/.npmrc diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index f8845ecd..2afbb055 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -123,7 +123,7 @@ jobs: if: matrix.type == 'biome' uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '22' - name: Setup pnpm if: matrix.type == 'biome' diff --git a/PROJECTS/advanced/monitor-the-situation-dashboard/conf/docker/dev/vite.docker b/PROJECTS/advanced/monitor-the-situation-dashboard/conf/docker/dev/vite.docker index 4c09838b..53c80b7f 100644 --- a/PROJECTS/advanced/monitor-the-situation-dashboard/conf/docker/dev/vite.docker +++ b/PROJECTS/advanced/monitor-the-situation-dashboard/conf/docker/dev/vite.docker @@ -3,7 +3,7 @@ FROM node:24-alpine -RUN corepack enable && corepack prepare pnpm@latest --activate +RUN corepack enable && corepack prepare pnpm@10.29.1 --activate WORKDIR /app diff --git a/PROJECTS/advanced/monitor-the-situation-dashboard/conf/docker/prod/vite.docker b/PROJECTS/advanced/monitor-the-situation-dashboard/conf/docker/prod/vite.docker index 9d5bf2b5..f838e8ee 100644 --- a/PROJECTS/advanced/monitor-the-situation-dashboard/conf/docker/prod/vite.docker +++ b/PROJECTS/advanced/monitor-the-situation-dashboard/conf/docker/prod/vite.docker @@ -3,11 +3,11 @@ FROM node:24-alpine AS build -RUN corepack enable && corepack prepare pnpm@latest --activate +RUN corepack enable && corepack prepare pnpm@10.29.1 --activate WORKDIR /app -COPY frontend/package.json frontend/pnpm-lock.yaml* ./ +COPY frontend/package.json frontend/pnpm-lock.yaml* frontend/.npmrc* ./ RUN pnpm install --frozen-lockfile || pnpm install diff --git a/PROJECTS/advanced/monitor-the-situation-dashboard/frontend/.npmrc b/PROJECTS/advanced/monitor-the-situation-dashboard/frontend/.npmrc new file mode 100644 index 00000000..1a99418b --- /dev/null +++ b/PROJECTS/advanced/monitor-the-situation-dashboard/frontend/.npmrc @@ -0,0 +1 @@ +strict-dep-builds=false diff --git a/PROJECTS/advanced/monitor-the-situation-dashboard/frontend/package.json b/PROJECTS/advanced/monitor-the-situation-dashboard/frontend/package.json index 8a919405..911bfbd1 100644 --- a/PROJECTS/advanced/monitor-the-situation-dashboard/frontend/package.json +++ b/PROJECTS/advanced/monitor-the-situation-dashboard/frontend/package.json @@ -59,6 +59,10 @@ "pnpm": { "overrides": { "vite": "npm:rolldown-vite@7.2.5" - } + }, + "onlyBuiltDependencies": [ + "@parcel/watcher", + "esbuild" + ] } } diff --git a/PROJECTS/intermediate/secrets-scanner/internal/engine/detector.go b/PROJECTS/intermediate/secrets-scanner/internal/engine/detector.go index 79fb5fd0..15ea8cba 100644 --- a/PROJECTS/intermediate/secrets-scanner/internal/engine/detector.go +++ b/PROJECTS/intermediate/secrets-scanner/internal/engine/detector.go @@ -78,9 +78,9 @@ func (d *Detector) Detect(chunk types.Chunk) []types.Finding { //nolint:gocognit charset := rules.DetectCharset(secret) var charsetStr string switch charset { - case "hex": + case rules.CharsetNameHex: charsetStr = rules.HexCharset - case "base64": + case rules.CharsetNameBase64: charsetStr = rules.Base64Charset default: charsetStr = rules.AlphanumericCharset diff --git a/PROJECTS/intermediate/secrets-scanner/internal/engine/filter.go b/PROJECTS/intermediate/secrets-scanner/internal/engine/filter.go index 7d48ffa9..3fb2b261 100644 --- a/PROJECTS/intermediate/secrets-scanner/internal/engine/filter.go +++ b/PROJECTS/intermediate/secrets-scanner/internal/engine/filter.go @@ -32,6 +32,8 @@ import ( "github.com/CarterPerez-dev/portia/pkg/types" ) +const stopwordPlaceholder = "placeholder" + var templatePatterns = []*regexp.Regexp{ regexp.MustCompile(`^\$\{.+\}$`), regexp.MustCompile(`^\{\{.+\}\}$`), @@ -151,718 +153,718 @@ func FilterFinding( } var stopwords = map[string]bool{ - "abstract": true, - "account": true, - "action": true, - "active": true, - "activity": true, - "adapter": true, - "admin": true, - "after": true, - "agent": true, - "algorithm": true, - "alias": true, - "allow": true, - "alpha": true, - "analytics": true, - "android": true, - "angular": true, - "annotation": true, - "anonymous": true, - "apache": true, - "application": true, - "archive": true, - "array": true, - "article": true, - "asset": true, - "assign": true, - "async": true, - "attribute": true, - "audit": true, - "authenticate": true, - "author": true, - "automate": true, - "avatar": true, - "backend": true, - "backup": true, - "badge": true, - "balance": true, - "banner": true, - "baseline": true, - "batch": true, - "before": true, - "benchmark": true, - "binary": true, - "binding": true, - "block": true, - "board": true, - "body": true, - "boolean": true, - "border": true, - "branch": true, - "bridge": true, - "broadcast": true, - "browser": true, - "bucket": true, - "buffer": true, - "build": true, - "builder": true, - "bundle": true, - "button": true, - "cache": true, - "calendar": true, - "callback": true, - "campaign": true, - "cancel": true, - "candidate": true, - "canvas": true, - "capture": true, - "catalog": true, - "category": true, - "certificate": true, - "chain": true, - "channel": true, - "chapter": true, - "character": true, - "chart": true, - "check": true, - "checkpoint": true, - "child": true, - "chrome": true, - "cipher": true, - "circuit": true, - "class": true, - "clean": true, - "clear": true, - "click": true, - "client": true, - "clipboard": true, - "clone": true, - "close": true, - "cloud": true, - "cluster": true, - "codec": true, - "collection": true, - "color": true, - "column": true, - "command": true, - "comment": true, - "commit": true, - "common": true, - "community": true, - "compact": true, - "compare": true, - "compatibility": true, - "compile": true, - "complete": true, - "component": true, - "compose": true, - "compress": true, - "compute": true, - "condition": true, - "config": true, - "configure": true, - "confirm": true, - "connect": true, - "connection": true, - "connector": true, - "console": true, - "constant": true, - "constraint": true, - "construct": true, - "consumer": true, - "contact": true, - "container": true, - "content": true, - "context": true, - "continue": true, - "contract": true, - "control": true, - "controller": true, - "convert": true, - "cookie": true, - "coordinate": true, - "copy": true, - "counter": true, - "coverage": true, - "create": true, - "credential": true, - "criteria": true, - "currency": true, - "current": true, - "cursor": true, - "custom": true, - "customer": true, - "daemon": true, - "dashboard": true, - "data": true, - "database": true, - "dataset": true, - "debug": true, - "decimal": true, - "declare": true, - "decode": true, - "decoding": true, - "decorator": true, - "default": true, - "define": true, - "definition": true, - "delegate": true, - "delete": true, - "deliver": true, - "delta": true, - "demo": true, - "dependency": true, - "deploy": true, - "describe": true, - "description": true, - "design": true, - "desktop": true, - "destroy": true, - "detail": true, - "detect": true, - "develop": true, - "developer": true, - "device": true, - "dialog": true, - "dictionary": true, - "digest": true, - "dimension": true, - "direct": true, - "directory": true, - "disable": true, - "discover": true, - "dispatch": true, - "display": true, - "distance": true, - "docker": true, - "document": true, - "domain": true, - "download": true, - "draft": true, - "driver": true, - "duration": true, - "dynamic": true, - "editor": true, - "element": true, - "email": true, - "embedded": true, - "empty": true, - "enable": true, - "encode": true, - "encoding": true, - "encrypted": true, - "endpoint": true, - "engine": true, - "enterprise": true, - "entity": true, - "entry": true, - "environment": true, - "error": true, - "escape": true, - "event": true, - "example": true, - "exception": true, - "exchange": true, - "exclude": true, - "execute": true, - "exist": true, - "expand": true, - "expect": true, - "experiment": true, - "expire": true, - "explicit": true, - "export": true, - "express": true, - "extend": true, - "extension": true, - "external": true, - "extract": true, - "factory": true, - "fallback": true, - "feature": true, - "fetch": true, - "field": true, - "file": true, - "filename": true, - "filter": true, - "final": true, - "firebase": true, - "fixture": true, - "flag": true, - "float": true, - "flush": true, - "folder": true, - "follow": true, - "footer": true, - "force": true, - "foreign": true, - "format": true, - "forward": true, - "fragment": true, - "frame": true, - "framework": true, - "frequency": true, - "frontend": true, - "function": true, - "gateway": true, - "general": true, - "generate": true, - "generic": true, - "github": true, - "global": true, - "google": true, - "gradient": true, - "graph": true, - "group": true, - "guard": true, - "guide": true, - "handle": true, - "handler": true, - "hash": true, - "hashing": true, - "header": true, - "health": true, - "helper": true, - "hidden": true, - "history": true, - "hook": true, - "host": true, - "hover": true, - "http": true, - "https": true, - "icon": true, - "identifier": true, - "ignore": true, - "image": true, - "implement": true, - "import": true, - "include": true, - "increment": true, - "index": true, - "indicator": true, - "info": true, - "infrastructure": true, - "inherit": true, - "initial": true, - "initialize": true, - "inject": true, - "inline": true, - "inner": true, - "input": true, - "insert": true, - "install": true, - "instance": true, - "integer": true, - "integrate": true, - "integration": true, - "interface": true, - "internal": true, - "interval": true, - "invalid": true, - "invoke": true, - "issue": true, - "item": true, - "iterate": true, - "iterator": true, - "javascript": true, - "journal": true, - "kernel": true, - "label": true, - "lambda": true, - "language": true, - "launch": true, - "layer": true, - "layout": true, - "leader": true, - "length": true, - "level": true, - "library": true, - "license": true, - "lifecycle": true, - "limit": true, - "line": true, - "link": true, - "linux": true, - "list": true, - "listen": true, - "literal": true, - "load": true, - "loader": true, - "local": true, - "locale": true, - "location": true, - "lock": true, - "logger": true, - "logic": true, - "login": true, - "lookup": true, - "loop": true, - "machine": true, - "macro": true, - "main": true, - "manage": true, - "manager": true, - "manifest": true, - "manual": true, - "mapper": true, - "margin": true, - "marker": true, - "markup": true, - "masked": true, - "master": true, - "match": true, - "matrix": true, - "maximum": true, - "media": true, - "member": true, - "memory": true, - "menu": true, - "merge": true, - "message": true, - "metadata": true, - "method": true, - "metric": true, - "micro": true, - "middleware": true, - "migrate": true, - "minimum": true, - "minor": true, - "mobile": true, - "mock": true, - "model": true, - "modify": true, - "module": true, - "monitor": true, - "mount": true, - "multi": true, - "mutex": true, - "name": true, - "namespace": true, - "native": true, - "navigate": true, - "network": true, - "node": true, - "normal": true, - "nothing": true, - "notice": true, - "notification": true, - "null": true, - "number": true, - "object": true, - "observe": true, - "offset": true, - "open": true, - "operate": true, - "operation": true, - "operator": true, - "option": true, - "oracle": true, - "order": true, - "origin": true, - "original": true, - "output": true, - "overflow": true, - "overlay": true, - "override": true, - "owner": true, - "package": true, - "packet": true, - "padding": true, - "page": true, - "panel": true, - "parallel": true, - "parameter": true, - "parent": true, - "parse": true, - "parser": true, - "partial": true, - "partition": true, - "password_hash": true, - "password_reset": true, - "patch": true, - "path": true, - "pattern": true, - "payload": true, - "pending": true, - "percent": true, - "perform": true, - "period": true, - "permission": true, - "persist": true, - "pipeline": true, - "pixel": true, - "placeholder": true, - "platform": true, - "player": true, - "plugin": true, - "point": true, - "pointer": true, - "policy": true, - "pool": true, - "port": true, - "portal": true, - "position": true, - "postgres": true, - "prefix": true, - "prepare": true, - "present": true, - "preview": true, - "previous": true, - "primary": true, - "print": true, - "priority": true, - "private": true, - "process": true, - "producer": true, - "product": true, - "profile": true, - "program": true, - "progress": true, - "project": true, - "promise": true, - "promote": true, - "prompt": true, - "property": true, - "protect": true, - "protocol": true, - "provide": true, - "provider": true, - "proxy": true, - "public": true, - "publish": true, - "pull": true, - "push": true, - "python": true, - "query": true, - "queue": true, - "random": true, - "range": true, - "rate": true, - "react": true, - "read": true, - "reader": true, - "receive": true, - "record": true, - "recover": true, - "redirect": true, - "reduce": true, - "reference": true, - "reflect": true, - "refresh": true, - "region": true, - "register": true, - "registry": true, - "reject": true, - "relate": true, - "release": true, - "reload": true, - "remote": true, - "remove": true, - "render": true, - "replace": true, - "replica": true, - "report": true, - "repository": true, - "request": true, - "require": true, - "reserve": true, - "reset": true, - "resize": true, - "resolve": true, - "resource": true, - "response": true, - "restore": true, - "restrict": true, - "result": true, - "retry": true, - "return": true, - "reverse": true, - "review": true, - "revision": true, - "role": true, - "rollback": true, - "root": true, - "rotate": true, - "route": true, - "router": true, - "routine": true, - "rule": true, - "runtime": true, - "sample": true, - "sandbox": true, - "scale": true, - "scan": true, - "schedule": true, - "schema": true, - "scope": true, - "screen": true, - "script": true, - "scroll": true, - "search": true, - "section": true, - "secure": true, - "security": true, - "seed": true, - "segment": true, - "select": true, - "selector": true, - "send": true, - "sender": true, - "sequence": true, - "serial": true, - "serialize": true, - "server": true, - "service": true, - "session": true, - "setting": true, - "setup": true, - "shadow": true, - "shared": true, - "shell": true, - "shift": true, - "short": true, - "shutdown": true, - "sidebar": true, - "signal": true, - "signature": true, - "signing": true, - "simple": true, - "simulate": true, - "single": true, - "size": true, - "skeleton": true, - "skip": true, - "slice": true, - "slider": true, - "snapshot": true, - "socket": true, - "software": true, - "solution": true, - "sort": true, - "source": true, - "space": true, - "span": true, - "spec": true, - "special": true, - "split": true, - "spring": true, - "stack": true, - "stage": true, - "standard": true, - "start": true, - "state": true, - "static": true, - "status": true, - "step": true, - "stop": true, - "storage": true, - "store": true, - "strategy": true, - "stream": true, - "strict": true, - "string": true, - "struct": true, - "structure": true, - "style": true, - "subject": true, - "submit": true, - "subscribe": true, - "suffix": true, - "suggest": true, - "suite": true, - "summary": true, - "super": true, - "supply": true, - "support": true, - "surface": true, - "suspend": true, - "switch": true, - "symbol": true, - "sync": true, - "syntax": true, - "system": true, - "table": true, - "tablet": true, - "target": true, - "task": true, - "team": true, - "template": true, - "temporary": true, - "tenant": true, - "terminal": true, - "test": true, - "text": true, - "theme": true, - "thread": true, - "threshold": true, - "throw": true, - "ticket": true, - "timeout": true, - "timestamp": true, - "title": true, - "toggle": true, - "toolbar": true, - "tooltip": true, - "topic": true, - "total": true, - "trace": true, - "track": true, - "traffic": true, - "transaction": true, - "transfer": true, - "transform": true, - "transition": true, - "translate": true, - "transport": true, - "tree": true, - "trigger": true, - "truncate": true, - "tunnel": true, - "type": true, - "undefined": true, - "union": true, - "unique": true, - "unit": true, - "universal": true, - "unknown": true, - "unpack": true, - "update": true, - "upgrade": true, - "upload": true, - "upstream": true, - "user": true, - "utility": true, - "valid": true, - "validate": true, - "value": true, - "variable": true, - "variant": true, - "vendor": true, - "verbose": true, - "verify": true, - "version": true, - "vertex": true, - "vertical": true, - "video": true, - "view": true, - "viewport": true, - "virtual": true, - "visible": true, - "visit": true, - "volume": true, - "watch": true, - "webhook": true, - "weight": true, - "widget": true, - "width": true, - "window": true, - "wizard": true, - "worker": true, - "workflow": true, - "workspace": true, - "wrapper": true, - "write": true, - "writer": true, - "zone": true, + "abstract": true, + "account": true, + "action": true, + "active": true, + "activity": true, + "adapter": true, + "admin": true, + "after": true, + "agent": true, + "algorithm": true, + "alias": true, + "allow": true, + "alpha": true, + "analytics": true, + "android": true, + "angular": true, + "annotation": true, + "anonymous": true, + "apache": true, + "application": true, + "archive": true, + "array": true, + "article": true, + "asset": true, + "assign": true, + "async": true, + "attribute": true, + "audit": true, + "authenticate": true, + "author": true, + "automate": true, + "avatar": true, + "backend": true, + "backup": true, + "badge": true, + "balance": true, + "banner": true, + "baseline": true, + "batch": true, + "before": true, + "benchmark": true, + "binary": true, + "binding": true, + "block": true, + "board": true, + "body": true, + "boolean": true, + "border": true, + "branch": true, + "bridge": true, + "broadcast": true, + "browser": true, + "bucket": true, + "buffer": true, + "build": true, + "builder": true, + "bundle": true, + "button": true, + "cache": true, + "calendar": true, + "callback": true, + "campaign": true, + "cancel": true, + "candidate": true, + "canvas": true, + "capture": true, + "catalog": true, + "category": true, + "certificate": true, + "chain": true, + "channel": true, + "chapter": true, + "character": true, + "chart": true, + "check": true, + "checkpoint": true, + "child": true, + "chrome": true, + "cipher": true, + "circuit": true, + "class": true, + "clean": true, + "clear": true, + "click": true, + "client": true, + "clipboard": true, + "clone": true, + "close": true, + "cloud": true, + "cluster": true, + "codec": true, + "collection": true, + "color": true, + "column": true, + "command": true, + "comment": true, + "commit": true, + "common": true, + "community": true, + "compact": true, + "compare": true, + "compatibility": true, + "compile": true, + "complete": true, + "component": true, + "compose": true, + "compress": true, + "compute": true, + "condition": true, + "config": true, + "configure": true, + "confirm": true, + "connect": true, + "connection": true, + "connector": true, + "console": true, + "constant": true, + "constraint": true, + "construct": true, + "consumer": true, + "contact": true, + "container": true, + "content": true, + "context": true, + "continue": true, + "contract": true, + "control": true, + "controller": true, + "convert": true, + "cookie": true, + "coordinate": true, + "copy": true, + "counter": true, + "coverage": true, + "create": true, + "credential": true, + "criteria": true, + "currency": true, + "current": true, + "cursor": true, + "custom": true, + "customer": true, + "daemon": true, + "dashboard": true, + "data": true, + "database": true, + "dataset": true, + "debug": true, + "decimal": true, + "declare": true, + "decode": true, + "decoding": true, + "decorator": true, + "default": true, + "define": true, + "definition": true, + "delegate": true, + "delete": true, + "deliver": true, + "delta": true, + "demo": true, + "dependency": true, + "deploy": true, + "describe": true, + "description": true, + "design": true, + "desktop": true, + "destroy": true, + "detail": true, + "detect": true, + "develop": true, + "developer": true, + "device": true, + "dialog": true, + "dictionary": true, + "digest": true, + "dimension": true, + "direct": true, + "directory": true, + "disable": true, + "discover": true, + "dispatch": true, + "display": true, + "distance": true, + "docker": true, + "document": true, + "domain": true, + "download": true, + "draft": true, + "driver": true, + "duration": true, + "dynamic": true, + "editor": true, + "element": true, + "email": true, + "embedded": true, + "empty": true, + "enable": true, + "encode": true, + "encoding": true, + "encrypted": true, + "endpoint": true, + "engine": true, + "enterprise": true, + "entity": true, + "entry": true, + "environment": true, + "error": true, + "escape": true, + "event": true, + "example": true, + "exception": true, + "exchange": true, + "exclude": true, + "execute": true, + "exist": true, + "expand": true, + "expect": true, + "experiment": true, + "expire": true, + "explicit": true, + "export": true, + "express": true, + "extend": true, + "extension": true, + "external": true, + "extract": true, + "factory": true, + "fallback": true, + "feature": true, + "fetch": true, + "field": true, + "file": true, + "filename": true, + "filter": true, + "final": true, + "firebase": true, + "fixture": true, + "flag": true, + "float": true, + "flush": true, + "folder": true, + "follow": true, + "footer": true, + "force": true, + "foreign": true, + "format": true, + "forward": true, + "fragment": true, + "frame": true, + "framework": true, + "frequency": true, + "frontend": true, + "function": true, + "gateway": true, + "general": true, + "generate": true, + "generic": true, + "github": true, + "global": true, + "google": true, + "gradient": true, + "graph": true, + "group": true, + "guard": true, + "guide": true, + "handle": true, + "handler": true, + "hash": true, + "hashing": true, + "header": true, + "health": true, + "helper": true, + "hidden": true, + "history": true, + "hook": true, + "host": true, + "hover": true, + "http": true, + "https": true, + "icon": true, + "identifier": true, + "ignore": true, + "image": true, + "implement": true, + "import": true, + "include": true, + "increment": true, + "index": true, + "indicator": true, + "info": true, + "infrastructure": true, + "inherit": true, + "initial": true, + "initialize": true, + "inject": true, + "inline": true, + "inner": true, + "input": true, + "insert": true, + "install": true, + "instance": true, + "integer": true, + "integrate": true, + "integration": true, + "interface": true, + "internal": true, + "interval": true, + "invalid": true, + "invoke": true, + "issue": true, + "item": true, + "iterate": true, + "iterator": true, + "javascript": true, + "journal": true, + "kernel": true, + "label": true, + "lambda": true, + "language": true, + "launch": true, + "layer": true, + "layout": true, + "leader": true, + "length": true, + "level": true, + "library": true, + "license": true, + "lifecycle": true, + "limit": true, + "line": true, + "link": true, + "linux": true, + "list": true, + "listen": true, + "literal": true, + "load": true, + "loader": true, + "local": true, + "locale": true, + "location": true, + "lock": true, + "logger": true, + "logic": true, + "login": true, + "lookup": true, + "loop": true, + "machine": true, + "macro": true, + "main": true, + "manage": true, + "manager": true, + "manifest": true, + "manual": true, + "mapper": true, + "margin": true, + "marker": true, + "markup": true, + "masked": true, + "master": true, + "match": true, + "matrix": true, + "maximum": true, + "media": true, + "member": true, + "memory": true, + "menu": true, + "merge": true, + "message": true, + "metadata": true, + "method": true, + "metric": true, + "micro": true, + "middleware": true, + "migrate": true, + "minimum": true, + "minor": true, + "mobile": true, + "mock": true, + "model": true, + "modify": true, + "module": true, + "monitor": true, + "mount": true, + "multi": true, + "mutex": true, + "name": true, + "namespace": true, + "native": true, + "navigate": true, + "network": true, + "node": true, + "normal": true, + "nothing": true, + "notice": true, + "notification": true, + "null": true, + "number": true, + "object": true, + "observe": true, + "offset": true, + "open": true, + "operate": true, + "operation": true, + "operator": true, + "option": true, + "oracle": true, + "order": true, + "origin": true, + "original": true, + "output": true, + "overflow": true, + "overlay": true, + "override": true, + "owner": true, + "package": true, + "packet": true, + "padding": true, + "page": true, + "panel": true, + "parallel": true, + "parameter": true, + "parent": true, + "parse": true, + "parser": true, + "partial": true, + "partition": true, + "password_hash": true, + "password_reset": true, + "patch": true, + "path": true, + "pattern": true, + "payload": true, + "pending": true, + "percent": true, + "perform": true, + "period": true, + "permission": true, + "persist": true, + "pipeline": true, + "pixel": true, + stopwordPlaceholder: true, + "platform": true, + "player": true, + "plugin": true, + "point": true, + "pointer": true, + "policy": true, + "pool": true, + "port": true, + "portal": true, + "position": true, + "postgres": true, + "prefix": true, + "prepare": true, + "present": true, + "preview": true, + "previous": true, + "primary": true, + "print": true, + "priority": true, + "private": true, + "process": true, + "producer": true, + "product": true, + "profile": true, + "program": true, + "progress": true, + "project": true, + "promise": true, + "promote": true, + "prompt": true, + "property": true, + "protect": true, + "protocol": true, + "provide": true, + "provider": true, + "proxy": true, + "public": true, + "publish": true, + "pull": true, + "push": true, + "python": true, + "query": true, + "queue": true, + "random": true, + "range": true, + "rate": true, + "react": true, + "read": true, + "reader": true, + "receive": true, + "record": true, + "recover": true, + "redirect": true, + "reduce": true, + "reference": true, + "reflect": true, + "refresh": true, + "region": true, + "register": true, + "registry": true, + "reject": true, + "relate": true, + "release": true, + "reload": true, + "remote": true, + "remove": true, + "render": true, + "replace": true, + "replica": true, + "report": true, + "repository": true, + "request": true, + "require": true, + "reserve": true, + "reset": true, + "resize": true, + "resolve": true, + "resource": true, + "response": true, + "restore": true, + "restrict": true, + "result": true, + "retry": true, + "return": true, + "reverse": true, + "review": true, + "revision": true, + "role": true, + "rollback": true, + "root": true, + "rotate": true, + "route": true, + "router": true, + "routine": true, + "rule": true, + "runtime": true, + "sample": true, + "sandbox": true, + "scale": true, + "scan": true, + "schedule": true, + "schema": true, + "scope": true, + "screen": true, + "script": true, + "scroll": true, + "search": true, + "section": true, + "secure": true, + "security": true, + "seed": true, + "segment": true, + "select": true, + "selector": true, + "send": true, + "sender": true, + "sequence": true, + "serial": true, + "serialize": true, + "server": true, + "service": true, + "session": true, + "setting": true, + "setup": true, + "shadow": true, + "shared": true, + "shell": true, + "shift": true, + "short": true, + "shutdown": true, + "sidebar": true, + "signal": true, + "signature": true, + "signing": true, + "simple": true, + "simulate": true, + "single": true, + "size": true, + "skeleton": true, + "skip": true, + "slice": true, + "slider": true, + "snapshot": true, + "socket": true, + "software": true, + "solution": true, + "sort": true, + "source": true, + "space": true, + "span": true, + "spec": true, + "special": true, + "split": true, + "spring": true, + "stack": true, + "stage": true, + "standard": true, + "start": true, + "state": true, + "static": true, + "status": true, + "step": true, + "stop": true, + "storage": true, + "store": true, + "strategy": true, + "stream": true, + "strict": true, + "string": true, + "struct": true, + "structure": true, + "style": true, + "subject": true, + "submit": true, + "subscribe": true, + "suffix": true, + "suggest": true, + "suite": true, + "summary": true, + "super": true, + "supply": true, + "support": true, + "surface": true, + "suspend": true, + "switch": true, + "symbol": true, + "sync": true, + "syntax": true, + "system": true, + "table": true, + "tablet": true, + "target": true, + "task": true, + "team": true, + "template": true, + "temporary": true, + "tenant": true, + "terminal": true, + "test": true, + "text": true, + "theme": true, + "thread": true, + "threshold": true, + "throw": true, + "ticket": true, + "timeout": true, + "timestamp": true, + "title": true, + "toggle": true, + "toolbar": true, + "tooltip": true, + "topic": true, + "total": true, + "trace": true, + "track": true, + "traffic": true, + "transaction": true, + "transfer": true, + "transform": true, + "transition": true, + "translate": true, + "transport": true, + "tree": true, + "trigger": true, + "truncate": true, + "tunnel": true, + "type": true, + "undefined": true, + "union": true, + "unique": true, + "unit": true, + "universal": true, + "unknown": true, + "unpack": true, + "update": true, + "upgrade": true, + "upload": true, + "upstream": true, + "user": true, + "utility": true, + "valid": true, + "validate": true, + "value": true, + "variable": true, + "variant": true, + "vendor": true, + "verbose": true, + "verify": true, + "version": true, + "vertex": true, + "vertical": true, + "video": true, + "view": true, + "viewport": true, + "virtual": true, + "visible": true, + "visit": true, + "volume": true, + "watch": true, + "webhook": true, + "weight": true, + "widget": true, + "width": true, + "window": true, + "wizard": true, + "worker": true, + "workflow": true, + "workspace": true, + "wrapper": true, + "write": true, + "writer": true, + "zone": true, } diff --git a/PROJECTS/intermediate/secrets-scanner/internal/engine/filter_test.go b/PROJECTS/intermediate/secrets-scanner/internal/engine/filter_test.go index d3e87e3e..09425025 100644 --- a/PROJECTS/intermediate/secrets-scanner/internal/engine/filter_test.go +++ b/PROJECTS/intermediate/secrets-scanner/internal/engine/filter_test.go @@ -84,8 +84,8 @@ func TestIsPlaceholder(t *testing.T) { //nolint:dupl secret: "your-api-key", want: true, }, - "placeholder": { - secret: "placeholder", + stopwordPlaceholder: { + secret: stopwordPlaceholder, want: true, }, "xxxx pattern": { diff --git a/PROJECTS/intermediate/secrets-scanner/internal/rules/entropy.go b/PROJECTS/intermediate/secrets-scanner/internal/rules/entropy.go index 18db9c47..46403902 100644 --- a/PROJECTS/intermediate/secrets-scanner/internal/rules/entropy.go +++ b/PROJECTS/intermediate/secrets-scanner/internal/rules/entropy.go @@ -32,6 +32,10 @@ const ( Base64Charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=-_" HexCharset = "0123456789abcdefABCDEF" AlphanumericCharset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" + + CharsetNameHex = "hex" + CharsetNameBase64 = "base64" + CharsetNameAlphanumeric = "alphanumeric" ) var ( @@ -98,19 +102,19 @@ func DetectCharset(s string) string { } if total == 0 { - return "alphanumeric" + return CharsetNameAlphanumeric } hexRatio := float64(hexCount) / float64(total) b64Ratio := float64(b64Count) / float64(total) if hexRatio == 1.0 && isAllHexChars(s) { - return "hex" + return CharsetNameHex } if b64Ratio >= 0.95 { - return "base64" + return CharsetNameBase64 } - return "alphanumeric" + return CharsetNameAlphanumeric } func ExtractHighEntropyTokens( diff --git a/PROJECTS/intermediate/secrets-scanner/internal/rules/entropy_test.go b/PROJECTS/intermediate/secrets-scanner/internal/rules/entropy_test.go index 9d2492df..d75cfa91 100644 --- a/PROJECTS/intermediate/secrets-scanner/internal/rules/entropy_test.go +++ b/PROJECTS/intermediate/secrets-scanner/internal/rules/entropy_test.go @@ -128,27 +128,27 @@ func TestDetectCharset(t *testing.T) { }{ "hex string": { input: "a1b2c3d4e5f6", - want: "hex", + want: CharsetNameHex, }, "base64 with special chars": { input: "kR9mPx2vBnQ8jL5w+/YzTf==", - want: "base64", + want: CharsetNameBase64, }, "pure alphanumeric": { input: "HelloWorld123XYZ", - want: "base64", + want: CharsetNameBase64, }, "mixed with symbols": { input: "hello@world#foo$bar", - want: "alphanumeric", + want: CharsetNameAlphanumeric, }, "empty string": { input: "", - want: "alphanumeric", + want: CharsetNameAlphanumeric, }, "only hex digits": { input: "deadbeef0123456789", - want: "hex", + want: CharsetNameHex, }, }