parameters:
  universalObjectCratesClasses:
    - Illuminate\Database\Eloquent\Model
  # TODO: slowly remove these parameters and fix the issues found.
  reportUnmatchedIgnoredErrors: false
  checkGenericClassInNonGenericObjectType: false  # remove this rule when all other issues are solved.
  ignoreErrors:
  # TODO: slowly remove these exceptions and fix the issues found.
    - '#Dynamic call to static method#' # all the Laravel ORM things depend on this.
    - '#Control structures using switch should not be used.#' # switch is fine in some cases.
    - '#with no value type specified in iterable type array#' # remove this rule when all other issues are solved.
    - '#has no value type specified in iterable type array#' # remove this rule when all other issues are solved.
    - '#is not allowed to extend#'
    - '#switch is forbidden to use#'
    - '#is neither abstract nor final#'
    - '#on left side of \?\?\= always exists and is not nullable#'
    - '#has a nullable return type declaration#' # perhaps throw errors instead?
    - '#with a nullable type declaration#' # decide what action should be if param is null.
    - '#with null as default value#'
    -
        message: '#Constructor in [a-zA-Z0-9\\_]+ has parameter \$[a-zA-Z0-9\\_]+ with default value#'
        paths:
            - ../app/Exceptions/IntervalException.php
            - ../app/Support/Navigation.php
    -
        message: '#but containers should not be injected#'
        paths:
            - ../app/Support/Authentication/RemoteUserGuard.php
    -
        message: '#Function compact\(\) should not be used#' # too useful in template rendering.
        paths:
            - ../app/Generator/Report/Account/MonthReportGenerator.php
            - ../app/Generator/Report/Audit/MonthReportGenerator.php
            - ../app/Generator/Report/Budget/MonthReportGenerator.php
            - ../app/Generator/Report/Category/MonthReportGenerator.php
            - ../app/Generator/Report/Standard/MonthReportGenerator.php
            - ../app/Generator/Report/Standard/MultiYearReportGenerator.php
            - ../app/Generator/Report/Standard/YearReportGenerator.php
            - ../app/Generator/Report/Tag/MonthReportGenerator.php
            - ../app/Http/Controllers/Account/*.php
            - ../app/Http/Controllers/Admin/*.php
            - ../app/Http/Controllers/*.php
            - ../app/Support/ExpandedForm.php
            - ../app/Support/Form/AccountForm.php
            - ../app/Support/Form/CurrencyForm.php
            - ../app/Support/Form/FormSupport.php
    -
        message: '#Either catch a more specific exception#'
        paths:
            - ../app/Support/Form/FormSupport.php
  paths:
    - ../app
    - ../database
    - ../routes
    - ../config
    - ../bootstrap/app.php

  # The level 8 is the highest level. original was 5
  # 7 is more than enough, higher just leaves NULL things.
  level: 7

