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
