chore: Sync MokoStandards workflows and configurations #85

Merged
jmiller-moko merged 26 commits from chore/sync-mokostandards-updates into main 2026-03-24 16:22:08 +00:00
Showing only changes of commit 4a2cf2150d - Show all commits

View File

@@ -1,37 +1,32 @@
# Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
# SPDX-License-Identifier: GPL-3.0-or-later
#
# PHPStan configuration for Joomla extension repositories.
# Extends the base MokoStandards config and adds Joomla framework class stubs
# so PHPStan can resolve Factory, CMSApplication, User, Table, etc.
# without requiring a full Joomla installation.
parameters: parameters:
level: 5 level: 5
paths: paths:
- src - src
# Exclude paths
excludePaths: excludePaths:
- src/vendor/* - vendor
- src/node_modules/* - node_modules
- src/cache/*
- src/tmp/* # Joomla framework stubs — resolved via the enterprise package from vendor/
stubFiles:
# Scan files - vendor/mokoconsulting-tech/enterprise/templates/stubs/joomla.php
scanFiles:
- src/templates/index.php # Suppress errors that are structural in Joomla's service-container architecture
- src/templates/component.php
- src/templates/error.php
- src/templates/offline.php
# Report unmatched ignored errors
reportUnmatchedIgnoredErrors: false
# Check function name case
checkFunctionNameCase: true
# Check internal classes
checkInternalClassCaseSensitivity: true
# Treat PHP version
phpVersion: 80000
# Ignore errors - adjust as needed
ignoreErrors: ignoreErrors:
# Allow dynamic properties which are common in Joomla # Joomla's service-based dependency injection returns mixed from getApplication()
- '#Access to an undefined property#' - '#Cannot call method .+ on Joomla\\CMS\\Application\\CMSApplication\|null#'
# Allow some reflection usage # Factory::getX() patterns are safe at runtime even when nullable in stubs
- '#Call to an undefined static method#' - '#Call to static method [a-zA-Z]+\(\) on an interface#'
reportUnmatchedIgnoredErrors: false
checkMissingIterableValueType: false
checkGenericClassInNonGenericObjectType: false