version: "1.0" linter: jetbrains/qodana-php:2026.1 profile: name: qodana.recommended php: version: "8.2" bootstrap: |+ set -eu composer --working-dir=services/nginx/app install --no-interaction --prefer-dist --no-progress --ignore-platform-reqs composer --working-dir=services/nginx/app/modules/washcertificates install --no-interaction --prefer-dist --no-progress --ignore-platform-reqs npm --prefix services/edge-agent ci --ignore-scripts npm --prefix services/edge-broker ci --ignore-scripts exclude: # This application is intentionally Composer-classmapped and keeps legacy snake_case # classes plus multiple local test doubles in single files; PSR path rules do not apply. - name: PhpIllegalPsrClassPathInspection paths: - services/nginx/app # Unit-test doubles intentionally bypass integration-heavy parent constructors. - name: PhpMissingParentConstructorInspection paths: - services/nginx/app/tests # These focused tests configure doubles through public fields before invoking behavior. - name: PhpObjectFieldsAreOnlyWrittenInspection paths: - services/nginx/app/tests/Unit/Bird/BirdGateCallFlowTest.php - services/nginx/app/tests/Unit/Invoicing/EconomicCustomersDiscountFallbackTest.php - services/nginx/app/tests/Unit/Selfserve/SelfserveCustomerLaneAccessTest.php # API coverage markers are intentional statement-style calls in the Pest DSL. # Their return value is irrelevant; the call records route/scenario coverage. - name: PhpExpressionResultUnusedInspection paths: - services/nginx/app/tests/Api - name: All paths: - services/nginx/app/vendor - services/nginx/app/modules/washcertificates/vendor - services/nginx/app/build - services/nginx/app/.phpunit.cache - services/nginx/app/tests/Legacy - services/edge-agent/node_modules - services/edge-broker/node_modules - services/edge-agent/dist - documentation/generated - documentation/topics/generated - documentation/_build - documentation/_site_rebuild_20260317 - docs_bird_voice_calls.html - .tmp - .openclaw