chore: workflow and package updates, linting (#59)

* chore(deps): update composer packages

* chore(ci): update workflows

* chore(lint): fix codeql language, composer lint:fix

* chore: set php version 8.2, update pre-commit hooks, linting
This commit is contained in:
2025-12-01 11:18:44 +02:00
committed by GitHub
parent e293587296
commit c3d6b8b1c6
15 changed files with 445 additions and 446 deletions

View File

@@ -1,44 +0,0 @@
version: 2
updates:
# Composer dependencies
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "09:00"
open-pull-requests-limit: 10
reviewers:
- "ivuorinen"
assignees:
- "ivuorinen"
commit-message:
prefix: "deps"
prefix-development: "deps-dev"
include: "scope"
labels:
- "dependencies"
- "php"
ignore:
# Ignore major version updates for now
- dependency-name: "*"
update-types: ["version-update:semver-major"]
# GitHub Actions dependencies
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "09:00"
open-pull-requests-limit: 5
reviewers:
- "ivuorinen"
assignees:
- "ivuorinen"
commit-message:
prefix: "ci"
include: "scope"
labels:
- "dependencies"
- "github-actions"

View File

@@ -21,10 +21,10 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- name: Setup PHP
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # 2.35.5
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # 2.36.0
with:
php-version: ${{ matrix.php-version }}
extensions: mbstring, xml, ctype, iconv, intl, json
@@ -66,10 +66,10 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- name: Setup PHP
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # 2.35.5
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # 2.36.0
with:
php-version: "8.2"
extensions: mbstring, xml, ctype, iconv, intl, json
@@ -95,10 +95,10 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- name: Setup PHP
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # 2.35.5
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # 2.36.0
with:
php-version: "8.2"
extensions: mbstring, xml, ctype, iconv, intl, json

View File

@@ -1,14 +1,14 @@
---
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: 'CodeQL'
name: "CodeQL"
on:
push:
branches: ['main']
branches: ["main"]
pull_request:
branches: ['main']
branches: ["main"]
schedule:
- cron: '30 1 * * 0' # Run at 1:30 AM UTC every Sunday
- cron: "30 1 * * 0" # Run at 1:30 AM UTC every Sunday
merge_group:
permissions:
@@ -25,22 +25,22 @@ jobs:
strategy:
fail-fast: false
matrix:
language: ['javascript'] # Add languages used in your actions
language: ["actions"] # Add languages used in your actions
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- name: Initialize CodeQL
uses: github/codeql-action/init@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
uses: github/codeql-action/init@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5
with:
languages: ${{ matrix.language }}
queries: security-and-quality
- name: Autobuild
uses: github/codeql-action/autobuild@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
uses: github/codeql-action/autobuild@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
uses: github/codeql-action/analyze@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5
with:
category: '/language:${{matrix.language}}'
category: "/language:${{matrix.language}}"

View File

@@ -15,8 +15,10 @@ jobs:
contents: read
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # 2.35.5
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # 2.36.0
with:
php-version: "8.2"
- name: Install dependencies
run: composer install --no-interaction --prefer-dist
- name: Run PHP_CodeSniffer (PSR-12)

View File

@@ -20,14 +20,14 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
statuses: write
contents: write
packages: read
issues: write
pull-requests: write
actions: write
contents: write
issues: write
packages: read
pull-requests: write
statuses: write
steps:
- name: Run PR Lint
# https://github.com/ivuorinen/actions
uses: ivuorinen/actions/pr-lint@4a3c30ccebee01186fd6a6e7e7b6e1fb07b81289 # 25.9.21
uses: ivuorinen/actions/pr-lint@fbbb487332f2b01379192eecb73f7252f1cc54d4 # v2025.11.30

View File

@@ -17,12 +17,12 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
fetch-depth: 0
- name: Setup PHP
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # 2.35.5
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # 2.36.0
with:
php-version: "8.2"
extensions: mbstring, xml, ctype, iconv, intl, json

View File

@@ -4,7 +4,7 @@ name: Stale
on:
schedule:
- cron: '0 8 * * *' # Every day at 08:00
- cron: "0 8 * * *" # Every day at 08:00
workflow_call:
workflow_dispatch:
@@ -23,4 +23,4 @@ jobs:
issues: write
pull-requests: write
steps:
- uses: ivuorinen/actions/stale@4a3c30ccebee01186fd6a6e7e7b6e1fb07b81289 # 25.9.21
- uses: ivuorinen/actions/stale@fbbb487332f2b01379192eecb73f7252f1cc54d4 # v2025.11.30

View File

@@ -8,10 +8,10 @@ on:
- main
- master
paths:
- '.github/labels.yml'
- '.github/workflows/sync-labels.yml'
- ".github/labels.yml"
- ".github/workflows/sync-labels.yml"
schedule:
- cron: '34 5 * * *' # Run every day at 05:34 AM UTC
- cron: "34 5 * * *" # Run every day at 05:34 AM UTC
workflow_call:
workflow_dispatch:
merge_group:
@@ -34,8 +34,8 @@ jobs:
steps:
- name: ⤵️ Checkout Repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: ⤵️ Sync Latest Labels Definitions
uses: ivuorinen/actions/sync-labels@4a3c30ccebee01186fd6a6e7e7b6e1fb07b81289 # 25.9.21
uses: ivuorinen/actions/sync-labels@fbbb487332f2b01379192eecb73f7252f1cc54d4 # v2025.11.30

View File

@@ -19,12 +19,13 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- name: Setup PHP
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # 2.35.5
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # 2.36.0
with:
coverage: pcov
php-version: "8.2"
- name: Install dependencies
run: composer install --no-interaction --prefer-dist

View File

@@ -3,7 +3,6 @@ repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: requirements-txt-fixer
- id: detect-private-key
- id: trailing-whitespace
args: [--markdown-linebreak-ext=md]
@@ -23,7 +22,7 @@ repos:
args: [--autofix, --no-sort-keys]
- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.45.0
rev: v0.46.0
hooks:
- id: markdownlint
args: [-c, .markdownlint.json, --fix]
@@ -34,7 +33,7 @@ repos:
- id: yamllint
- repo: https://github.com/scop/pre-commit-shfmt
rev: v3.11.0-1
rev: v3.12.0-2
hooks:
- id: shfmt
@@ -42,22 +41,22 @@ repos:
rev: v0.11.0
hooks:
- id: shellcheck
args: ['--severity=warning']
args: ["--severity=warning"]
- repo: https://github.com/rhysd/actionlint
rev: v1.7.8
rev: v1.7.9
hooks:
- id: actionlint
args: ['-shellcheck=']
args: ["-shellcheck="]
- repo: https://github.com/renovatebot/pre-commit-hooks
rev: 42.2.0
rev: 42.27.1
hooks:
- id: renovate-config-validator
- repo: https://github.com/bridgecrewio/checkov.git
rev: '3.2.489'
rev: "3.2.495"
hooks:
- id: checkov
args:
- '--quiet'
- "--quiet"

View File

@@ -163,8 +163,16 @@ foreach ($phpFiles as $filePath) {
// Skip very generic values that would produce too many false positives
$skipGeneric = [
'test', 'value', 'field', 'path', 'key',
'data', 'name', 'id', 'type', 'error'
'test',
'value',
'field',
'path',
'key',
'data',
'name',
'id',
'type',
'error'
];
if (
in_array(strtolower($constantValue), $skipGeneric)
@@ -177,8 +185,17 @@ foreach ($phpFiles as $filePath) {
if (!$isTestFile) {
// In src/ files, skip values commonly used as array keys or internal identifiers
$srcSkipValues = [
'masked', 'original', 'remove', 'message', 'password', 'email',
'user_id', 'sensitive_data', 'audit', 'security', 'application',
'masked',
'original',
'remove',
'message',
'password',
'email',
'user_id',
'sensitive_data',
'audit',
'security',
'application',
'Cannot be null or empty for REPLACE type',
'Rate limiting key cannot be empty',
'Test message'

726
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -228,7 +228,7 @@ class RateLimiter
public static function getMemoryStats(): array
{
$totalKeys = count(self::$requests);
$totalTimestamps = array_sum(array_map('count', self::$requests));
$totalTimestamps = array_sum(array_map(count(...), self::$requests));
$estimatedMemory = $totalKeys * 50 + $totalTimestamps * 8; // Rough estimate
return [

View File

@@ -338,7 +338,7 @@ final class InputValidatorTest extends TestCase
{
InputValidator::validateConditionalRules([
'rule1' => fn($value): bool => $value > 100,
'rule2' => fn($value): bool => is_string($value),
'rule2' => is_string(...),
]);
$this->assertTrue(true);

View File

@@ -519,7 +519,7 @@ class MaskingStrategiesTest extends TestCase
$this->assertCount(3, $strategies);
// Check that we have the expected strategy types
$classNames = array_map('get_class', $strategies);
$classNames = array_map(get_class(...), $strategies);
$this->assertContains(RegexMaskingStrategy::class, $classNames);
$this->assertContains(FieldPathMaskingStrategy::class, $classNames);
$this->assertContains(DataTypeMaskingStrategy::class, $classNames);