diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7f4018a..bd3d31b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,6 +52,43 @@ jobs: - name: Lancer la suite de tests run: php artisan test + static-analysis: + name: Analyse statique (PHPStan) + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Configurer PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + extensions: pdo_sqlite, sqlite3, mbstring, zip, gd, intl, bcmath + coverage: none + + # `.env` doit exister AVANT composer install : le script post-autoload-dump + # (`package:discover`) boote l'application. + - name: Préparer l'environnement + run: | + cp .env.example .env + touch database/database.sqlite + + - name: Cache des dépendances Composer + uses: actions/cache@v4 + with: + path: vendor + key: composer-${{ hashFiles('composer.lock') }} + restore-keys: composer- + + - name: Installer les dépendances + run: composer install --no-interaction --prefer-dist --no-progress + + - name: Générer la clé applicative + run: php artisan key:generate + + - name: Lancer PHPStan + run: composer analyse + frontend: name: Front (types & build) runs-on: ubuntu-latest diff --git a/composer.json b/composer.json index 838e5ff..78d8bc4 100644 --- a/composer.json +++ b/composer.json @@ -23,6 +23,7 @@ }, "require-dev": { "fakerphp/faker": "^1.23", + "larastan/larastan": "^3.0", "laravel/boost": "2.0", "laravel/pail": "^1.2.2", "laravel/pint": "^1.24", @@ -67,6 +68,9 @@ "test:lint": [ "pint --parallel --test" ], + "analyse": [ + "phpstan analyse --memory-limit=512M" + ], "test": [ "@php artisan config:clear --ansi", "@test:lint", diff --git a/composer.lock b/composer.lock index de56ded..002d131 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f057d51d47393d2a1f68d2624b5e1a0e", + "content-hash": "9e9a62c96d36c6725325c0f71f5c8a79", "packages": [ { "name": "bacon/bacon-qr-code", @@ -8468,6 +8468,136 @@ }, "time": "2025-04-30T06:54:44+00:00" }, + { + "name": "iamcal/sql-parser", + "version": "v0.7", + "source": { + "type": "git", + "url": "https://github.com/iamcal/SQLParser.git", + "reference": "610392f38de49a44dab08dc1659960a29874c4b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/iamcal/SQLParser/zipball/610392f38de49a44dab08dc1659960a29874c4b8", + "reference": "610392f38de49a44dab08dc1659960a29874c4b8", + "shasum": "" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^1.0", + "phpunit/phpunit": "^5|^6|^7|^8|^9" + }, + "type": "library", + "autoload": { + "psr-4": { + "iamcal\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cal Henderson", + "email": "cal@iamcal.com" + } + ], + "description": "MySQL schema parser", + "support": { + "issues": "https://github.com/iamcal/SQLParser/issues", + "source": "https://github.com/iamcal/SQLParser/tree/v0.7" + }, + "time": "2026-01-28T22:20:33+00:00" + }, + { + "name": "larastan/larastan", + "version": "v3.15.0", + "source": { + "type": "git", + "url": "https://github.com/larastan/larastan.git", + "reference": "ffb29680700b7e56000183ddacd68fab991f690b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/larastan/larastan/zipball/ffb29680700b7e56000183ddacd68fab991f690b", + "reference": "ffb29680700b7e56000183ddacd68fab991f690b", + "shasum": "" + }, + "require": { + "iamcal/sql-parser": "^0.7.0", + "illuminate/console": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/container": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/contracts": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/database": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/http": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/pipeline": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/support": "^11.44.2 || ^12.4.1 || ^13", + "php": "^8.2", + "phpstan/phpstan": "^2.3.5" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "laravel/framework": "^11.44.2 || ^12.7.2 || ^13", + "mockery/mockery": "^1.6.12", + "nikic/php-parser": "^5.6", + "orchestra/canvas": "^v9.2.2 || ^10.0.1 || ^11", + "orchestra/testbench-core": "^9.12.0 || ^10.1 || ^11", + "phpstan/phpstan-deprecation-rules": "^2.0.1", + "phpunit/phpunit": "^10.5.35 || ^11.5.15 || ^12.5.8 || ^13.3.0" + }, + "suggest": { + "orchestra/testbench": "Using Larastan for analysing a package needs Testbench", + "phpmyadmin/sql-parser": "Install to enable Larastan's optional phpMyAdmin-based SQL parser automatically" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Larastan\\Larastan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Can Vural", + "email": "can9119@gmail.com" + } + ], + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel", + "keywords": [ + "PHPStan", + "code analyse", + "code analysis", + "larastan", + "laravel", + "package", + "php", + "static analysis" + ], + "support": { + "issues": "https://github.com/larastan/larastan/issues", + "source": "https://github.com/larastan/larastan/tree/v3.15.0" + }, + "funding": [ + { + "url": "https://github.com/canvural", + "type": "github" + } + ], + "time": "2026-11-11T15:06:29+00:00" + }, { "name": "laravel/boost", "version": "v2.0.0", @@ -9236,6 +9366,70 @@ }, "time": "2022-02-21T01:04:05+00:00" }, + { + "name": "phpstan/phpstan", + "version": "2.3.5", + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/645a1bd6bead15fc1b8474137467961d0fa30a79", + "reference": "645a1bd6bead15fc1b8474137467961d0fa30a79", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ondřej Mirtes" + }, + { + "name": "Markus Staab" + }, + { + "name": "Vincent Langlet" + } + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2026-11-03T12:14:22+00:00" + }, { "name": "phpunit/php-code-coverage", "version": "11.0.12", diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 0000000..ceedc4a --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,2059 @@ +parameters: + ignoreErrors: + - + message: '#^Access to an undefined property App\\Models\\Student\:\:\$registration_number\.$#' + identifier: property.notFound + count: 2 + path: app/Console/Commands/GenerateStudentMatricule.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$natricule\.$#' + identifier: property.notFound + count: 2 + path: app/Console/Commands/GenerateStudentMatricule.php + + - + message: '#^Call to an undefined method App\\Models\\Student\:\:generateRegistrationNumber\(\)\.$#' + identifier: method.notFound + count: 2 + path: app/Console/Commands/GenerateStudentMatricule.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:generateMatricule\(\)\.$#' + identifier: method.notFound + count: 2 + path: app/Console/Commands/GenerateStudentMatricule.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$firstname\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Administration/AuditLogController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$lastname\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Administration/AuditLogController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$firstname\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Administration/GuardianController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$lastname\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Administration/GuardianController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$matricule\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Administration/GuardianController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Administration/GuardianController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Administration/SubjectAssignmentController.php + + - + message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 4 + path: app/Http/Controllers/Administration/SubjectAssignmentController.php + + - + message: '#^Using nullsafe property access "\?\-\>year" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Administration/SubjectAssignmentController.php + + - + message: '#^Instanceof between App\\Models\\User\|null and App\\Models\\Guardian will always evaluate to false\.$#' + identifier: instanceof.alwaysFalse + count: 2 + path: app/Http/Controllers/Api/ApiController.php + + - + message: '#^Instanceof between App\\Models\\User\|null and App\\Models\\Student will always evaluate to false\.$#' + identifier: instanceof.alwaysFalse + count: 2 + path: app/Http/Controllers/Api/ApiController.php + + - + message: '#^Parameter \#1 \$value of function collect contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Api/ApiController.php + + - + message: '#^Call to an undefined method App\\Models\\User\:\:currentAccessToken\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Http/Controllers/Api/V1/AuthController.php + + - + message: '#^Instanceof between App\\Models\\User\|null and App\\Models\\Guardian will always evaluate to false\.$#' + identifier: instanceof.alwaysFalse + count: 1 + path: app/Http/Controllers/Api/V1/AuthController.php + + - + message: '#^Parameter \#1 \$user of method App\\Http\\Controllers\\Api\\V1\\AuthController\:\:profile\(\) expects App\\Models\\Guardian\|App\\Models\\Student, App\\Models\\User\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Api/V1/AuthController.php + + - + message: '#^Instanceof between App\\Models\\User\|null and App\\Models\\Student will always evaluate to false\.$#' + identifier: instanceof.alwaysFalse + count: 1 + path: app/Http/Controllers/Api/V1/ChildrenController.php + + - + message: '#^Parameter \#1 \$value of function collect contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Api/V1/ChildrenController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$classroom_type_id\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Api/V1/DashboardController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Api/V1/DashboardController.php + + - + message: '#^Parameter \#1 \$class of method App\\Services\\GradingService\:\:classRanking\(\) expects App\\Models\\Classroom, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Api/V1/DashboardController.php + + - + message: '#^Using nullsafe method call on non\-nullable type Carbon\\CarbonImmutable\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Api/V1/DashboardController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$classroom_type_id\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Api/V1/GradeController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$comments\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Api/V1/GradeController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Api/V1/GradeController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$score\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Api/V1/GradeController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Api/V1/GradeController.php + + - + message: '#^Parameter \#1 \$class of method App\\Services\\GradingService\:\:classRanking\(\) expects App\\Models\\Classroom, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Api/V1/GradeController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$color\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Archives/ArchiveController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Archives/ArchiveController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 4 + path: app/Http/Controllers/Archives/ArchiveController.php + + - + message: '#^Constant App\\Http\\Controllers\\Archives\\ArchiveController\:\:TYPES is unused\.$#' + identifier: classConstant.unused + count: 1 + path: app/Http/Controllers/Archives/ArchiveController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Archives/ArchiveController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Pagination\\AbstractPaginator\\:\:through\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Archives/ArchiveController.php + + - + message: '#^Using nullsafe method call on non\-nullable type Carbon\\CarbonImmutable\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/CalendarEventController.php + + - + message: '#^Method Illuminate\\Database\\Eloquent\\Builder\\:\:withSum\(\) invoked with 3 parameters, 2 required\.$#' + identifier: arguments.count + count: 1 + path: app/Http/Controllers/Comptabilite/CashAccountController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$amount\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Comptabilite/InvoiceController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$currency\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Comptabilite/InvoiceController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$enrollment\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Comptabilite/InvoiceController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$invoice\.$#' + identifier: property.notFound + count: 4 + path: app/Http/Controllers/Comptabilite/InvoiceController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$paid_at\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Comptabilite/InvoiceController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$total\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Comptabilite/InvoiceController.php + + - + message: '#^Parameter \#1 \$invoice of method App\\Services\\InvoiceService\:\:recordPayment\(\) expects App\\Models\\Invoice, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Comptabilite/InvoiceController.php + + - + message: '#^Parameter \#1 \$school of method App\\Http\\Controllers\\Comptabilite\\InvoiceController\:\:officialHeader\(\) expects App\\Models\\School\|null, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Comptabilite/InvoiceController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$amount_paid\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$amount_remaining\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$firstname\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$invoice_number\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$lastname\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$matricule\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$status\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$total\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Using nullsafe property access "\?\-\>amount_paid" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 2 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Using nullsafe property access "\?\-\>amount_remaining" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 2 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Using nullsafe property access "\?\-\>firstname" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Using nullsafe property access "\?\-\>invoice_number" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Using nullsafe property access "\?\-\>lastname" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Using nullsafe property access "\?\-\>matricule" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Using nullsafe property access "\?\-\>status" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Using nullsafe property access "\?\-\>total" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 2 + path: app/Http/Controllers/Comptabilite/SituationController.php + + - + message: '#^Access to an undefined property App\\Models\\ReportCard\:\:\$avg_general\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$class\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$code\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$enrollment\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$firstname\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$lastname\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$matricule\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 8 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$subject\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Using nullsafe method call on non\-nullable type Carbon\\CarbonImmutable\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 4 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Using nullsafe property access "\?\-\>code" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 2 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 9 + path: app/Http/Controllers/Dashboard/DashboardController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$billed\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/EnrollmentController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$collected\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/EnrollmentController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$remaining\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/EnrollmentController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$unpaid_amount\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/EnrollmentController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$unpaid_count\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/EnrollmentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$amount_paid\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/EnrollmentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$amount_remaining\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/EnrollmentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$status\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/EnrollmentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$total\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/EnrollmentController.php + + - + message: '#^Parameter \#1 \$school of method App\\Services\\DocumentRenderer\:\:headerHtml\(\) expects App\\Models\\School, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Eleves/EnrollmentController.php + + - + message: '#^Parameter \#1 \$school of method App\\Services\\DocumentRenderer\:\:resolveVariables\(\) expects App\\Models\\School, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Eleves/EnrollmentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$firstname\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/PromotionController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$lastname\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Eleves/PromotionController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$matricule\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/PromotionController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Eleves/PromotionController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$firstname\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/RosterController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$gender\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/RosterController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$lastname\.$#' + identifier: property.notFound + count: 3 + path: app/Http/Controllers/Eleves/RosterController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$matricule\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/RosterController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$status\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/RosterController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Eleves/RosterController.php + + - + message: '#^Using nullsafe property access "\?\-\>id" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Eleves/RosterController.php + + - + message: '#^Using nullsafe property access "\?\-\>status" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Eleves/RosterController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$code\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$created_at\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$mime\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 6 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$original_name\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$size\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$status\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$uploadedBy\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$year\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Parameter \#1 \$boolean of function abort_unless expects bool, App\\Models\\AcademicYear\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Parameter \#1 \$boolean of function abort_unless expects bool, App\\Models\\Enrollment\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Using nullsafe method call on non\-nullable type Carbon\\CarbonImmutable\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 2 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Using nullsafe property access "\?\-\>status" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Using nullsafe property access on non\-nullable type App\\Models\\AcademicYear\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Eleves/StudentController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$birth_date\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentStatsController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$capacity\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentStatsController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$cycle\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentStatsController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$expected_age\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentStatsController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$female\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentStatsController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$label\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentStatsController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$level\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentStatsController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$male\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentStatsController.php + + - + message: '#^Access to an undefined property App\\Models\\Enrollment\:\:\$total\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentStatsController.php + + - + message: '#^Access to an undefined property App\\Models\\Student\:\:\$count\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Eleves/StudentStatsController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Eleves/StudentStatsController.php + + - + message: '#^Access to an undefined property App\\Models\\User\:\:\$name\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Eleves/TimetableController.php + + - + message: '#^Access to an undefined property App\\Models\\User\|Illuminate\\Database\\Eloquent\\Collection\\:\:\$name\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Eleves/TimetableController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Eleves/TimetableController.php + + - + message: '#^Method App\\Http\\Controllers\\Eleves\\TimetableController\:\:buildScheduleGrid\(\) should return array\{timeRanges\: Illuminate\\Support\\Collection\, grid\: array\\>\} but returns array\{timeRanges\: Illuminate\\Support\\Collection\, grid\: array\, App\\Models\\TimetableSlot\>\>\}\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/Eleves/TimetableController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Eleves/TimetableController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Eleves/TimetableController.php + + - + message: '#^Using nullsafe property access "\?\-\>year" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Eleves/TimetableController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$class_id\.$#' + identifier: property.notFound + count: 3 + path: app/Http/Controllers/Examens/MarkController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$max_score\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Examens/MarkController.php + + - + message: '#^Using nullsafe property access "\?\-\>absent" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Examens/MarkController.php + + - + message: '#^Using nullsafe property access "\?\-\>max_score" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Examens/MarkController.php + + - + message: '#^Access to an undefined property App\\Models\\OfficialExam\:\:\$admis_count\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Examens/OfficialExamController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$average\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Examens/OfficialExamController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Examens/OfficialExamController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$mention\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Examens/OfficialExamController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Examens/OfficialExamController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$registration_number\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Examens/OfficialExamController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$serie\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Examens/OfficialExamController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$status\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Examens/OfficialExamController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$student\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Examens/OfficialExamController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$student_id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Examens/OfficialExamController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Examens/OfficialExamController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Examens/OfficialExamController.php + + - + message: '#^Using nullsafe property access "\?\-\>id" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Examens/OfficialExamController.php + + - + message: '#^Parameter \#1 \$rows of method App\\Services\\GradingService\:\:rank\(\) expects Illuminate\\Support\\Collection\, Illuminate\\Support\\Collection\ given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Notes/BulletinController.php + + - + message: '#^Parameter \#2 \$type of static method App\\Models\\GradingConfig\:\:resolveOrDefault\(\) expects App\\Models\\ClassroomType\|null, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Notes/BulletinController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$classroom_type_id\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Notes/GradeController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$comments\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Notes/GradeController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$score\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Notes/GradeController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Notes/GradeController.php + + - + message: '#^Parameter \#1 \$class of method App\\Services\\GradingService\:\:classRanking\(\) expects App\\Models\\Classroom, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Notes/GradeController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$template\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Notes/NoteReclamationController.php + + - + message: '#^Method App\\Http\\Controllers\\Notes\\NoteReclamationController\:\:create\(\) should return Inertia\\Response but returns Illuminate\\Http\\RedirectResponse\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/Notes/NoteReclamationController.php + + - + message: '#^Using nullsafe property access "\?\-\>max_score" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Notes/NoteReclamationController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$reference\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Paie/PayslipController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Parametres/BackupController.php + + - + message: '#^Offset ''media'' on array\{format\: string, tables\: int, rows\?\: int\} in isset\(\) does not exist\.$#' + identifier: isset.offset + count: 1 + path: app/Http/Controllers/Parametres/BackupController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Parametres/BackupController.php + + - + message: '#^Parameter \#1 \$boolean of function abort_unless expects bool, App\\Models\\School\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Parametres/BulletinTemplateController.php + + - + message: '#^Using nullsafe property access "\?\-\>columns" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Parametres/BulletinTemplateController.php + + - + message: '#^Using nullsafe property access "\?\-\>options" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Parametres/BulletinTemplateController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$academicYear\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Parametres/ClassroomController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$coefficient\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Parametres/ClassroomController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Parametres/ClassroomController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$subject\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Parametres/ClassroomController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\<\(int\|string\),Illuminate\\Database\\Eloquent\\Collection\\>\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Parametres/ClassroomController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Parametres/ClassroomController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$layout\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Parametres/DocumentHeaderController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$preset\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Parametres/DocumentHeaderController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$watermark\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Parametres/DocumentHeaderController.php + + - + message: '#^Parameter \#1 \$boolean of function abort_unless expects bool, App\\Models\\School\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Parametres/DocumentHeaderController.php + + - + message: '#^Using nullsafe property access "\?\-\>preset" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Parametres/DocumentHeaderController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$firstname\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Parametres/DocumentTemplateController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$lastname\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Parametres/DocumentTemplateController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$matricule\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Parametres/DocumentTemplateController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/Parametres/DocumentTemplateController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Pagination\\AbstractPaginator\\:\:through\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Parametres/DocumentTemplateController.php + + - + message: '#^Parameter \#1 \$school of method App\\Services\\DocumentRenderer\:\:resolveVariables\(\) expects App\\Models\\School, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 2 + path: app/Http/Controllers/Parametres/DocumentTemplateController.php + + - + message: '#^Using nullsafe method call on non\-nullable type Carbon\\CarbonImmutable\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Parametres/DocumentTemplateController.php + + - + message: '#^Access to an undefined property App\\Models\\FeeStructure\:\:\$installments\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Parametres/FeeStructureController.php + + - + message: '#^Relation ''installments'' is not found in App\\Models\\FeeStructure model\.$#' + identifier: larastan.relationExistence + count: 2 + path: app/Http/Controllers/Parametres/FeeStructureController.php + + - + message: '#^Using nullsafe property access "\?\-\>status" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Controllers/Presences/AttendanceController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Rh/EmployeeAllowanceController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Rh/SalaryGradeController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Rh/SalaryGradeController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Rh/SalaryGradeController.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Support\\Collection\\|string\|null\>\>\:\:sortBy\(\) contains unresolvable type\.$#' + identifier: argument.unresolvableType + count: 1 + path: app/Http/Controllers/Rh/SalaryGradeController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$employee_number\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Rh/UserPayrollController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/Rh/UserPayrollController.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:payslips\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Http/Controllers/Rh/UserPayrollController.php + + - + message: '#^Using nullsafe property access "\?\-\>locale" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Http/Middleware/SetLocale.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\CalendarEventResource\:\:\$all_day\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/CalendarEventResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\CalendarEventResource\:\:\$end_date\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/CalendarEventResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\CalendarEventResource\:\:\$end_time\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/CalendarEventResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\CalendarEventResource\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/CalendarEventResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\CalendarEventResource\:\:\$start_date\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/CalendarEventResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\CalendarEventResource\:\:\$start_time\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/CalendarEventResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\CalendarEventResource\:\:\$title\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/CalendarEventResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\CalendarEventResource\:\:\$type\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/CalendarEventResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\ReportCardResource\:\:\$average\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/ReportCardResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\ReportCardResource\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/ReportCardResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\ReportCardResource\:\:\$locked_at\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/ReportCardResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\ReportCardResource\:\:\$mention\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/ReportCardResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\ReportCardResource\:\:\$rank\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/ReportCardResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\ReportCardResource\:\:\$reference\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/ReportCardResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\StudentResource\:\:\$enrollments\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/StudentResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\StudentResource\:\:\$firstname\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/StudentResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\StudentResource\:\:\$gender\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/StudentResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\StudentResource\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/StudentResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\StudentResource\:\:\$lastname\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/StudentResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\StudentResource\:\:\$matricule\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/StudentResource.php + + - + message: '#^Access to an undefined property App\\Http\\Resources\\Api\\StudentResource\:\:\$pivot\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Resources/Api/StudentResource.php + + - + message: '#^Call to an undefined method App\\Http\\Resources\\Api\\StudentResource\:\:relationLoaded\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Http/Resources/Api/StudentResource.php + + - + message: '#^Method App\\Models\\AcademicPeriod\:\:forClassType\(\) should return Illuminate\\Support\\Collection\ but returns Illuminate\\Database\\Eloquent\\Collection\\.$#' + identifier: return.type + count: 2 + path: app/Models/AcademicPeriod.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:auditExcluded\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Models/CalendarEvent.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:auditableAttributes\(\)\.$#' + identifier: method.notFound + count: 2 + path: app/Models/CalendarEvent.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:recordAudit\(\)\.$#' + identifier: method.notFound + count: 3 + path: app/Models/CalendarEvent.php + + - + message: '#^Match arm comparison between ''BANK'' and ''BANK'' is always true\.$#' + identifier: match.alwaysTrue + count: 1 + path: app/Models/CashAccount.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$marks\.$#' + identifier: property.notFound + count: 1 + path: app/Models/ClassSubject.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$template\.$#' + identifier: property.notFound + count: 1 + path: app/Models/ClassSubject.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$base_amount\.$#' + identifier: property.notFound + count: 1 + path: app/Models/EmployeeProfile.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$firstname\.$#' + identifier: property.notFound + count: 1 + path: app/Models/EmployeeProfile.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$lastname\.$#' + identifier: property.notFound + count: 1 + path: app/Models/EmployeeProfile.php + + - + message: '#^Using nullsafe property access "\?\-\>base_amount" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Models/EmployeeProfile.php + + - + message: '#^Using nullsafe property access "\?\-\>firstname" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Models/EmployeeProfile.php + + - + message: '#^Using nullsafe property access "\?\-\>lastname" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Models/EmployeeProfile.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:auditExcluded\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Models/Enrollment.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:auditableAttributes\(\)\.$#' + identifier: method.notFound + count: 2 + path: app/Models/Enrollment.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:recordAudit\(\)\.$#' + identifier: method.notFound + count: 3 + path: app/Models/Enrollment.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:auditExcluded\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Models/Grade.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:auditableAttributes\(\)\.$#' + identifier: method.notFound + count: 2 + path: app/Models/Grade.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:recordAudit\(\)\.$#' + identifier: method.notFound + count: 3 + path: app/Models/Grade.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:auditExcluded\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Models/ReportCard.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:auditableAttributes\(\)\.$#' + identifier: method.notFound + count: 2 + path: app/Models/ReportCard.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:recordAudit\(\)\.$#' + identifier: method.notFound + count: 3 + path: app/Models/ReportCard.php + + - + message: '#^Method App\\Models\\School\:\:activeGradingConfig\(\) should return App\\Models\\GradingConfig\|null but returns Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: return.type + count: 1 + path: app/Models/School.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:auditExcluded\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Models/Student.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:auditableAttributes\(\)\.$#' + identifier: method.notFound + count: 2 + path: app/Models/Student.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:recordAudit\(\)\.$#' + identifier: method.notFound + count: 3 + path: app/Models/Student.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 1 + path: app/Models/User.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:auditExcluded\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Models/User.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:auditableAttributes\(\)\.$#' + identifier: method.notFound + count: 2 + path: app/Models/User.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:recordAudit\(\)\.$#' + identifier: method.notFound + count: 3 + path: app/Models/User.php + + - + message: '#^Cannot access property \$natricule on class\-string\|object\.$#' + identifier: property.nonObject + count: 1 + path: app/Models/User.php + + - + message: '#^Using nullsafe method call on non\-nullable type Illuminate\\Database\\Eloquent\\Collection\\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Models/User.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 1 + path: app/Observers/UserObserver.php + + - + message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Observers/UserObserver.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$class_id\.$#' + identifier: property.notFound + count: 1 + path: app/Policies/EvaluationPolicy.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$subject_id\.$#' + identifier: property.notFound + count: 1 + path: app/Policies/EvaluationPolicy.php + + - + message: '#^Result of && is always false\.$#' + identifier: booleanAnd.alwaysFalse + count: 1 + path: app/Rules/UniqueMatricule.php + + - + message: '#^Strict comparison using \=\=\= between string and int\|null will always evaluate to false\.$#' + identifier: identical.alwaysFalse + count: 1 + path: app/Rules/UniqueMatricule.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$enrollment\.$#' + identifier: property.notFound + count: 2 + path: app/Services/AccountingService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$firstname\.$#' + identifier: property.notFound + count: 1 + path: app/Services/AccountingService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$lastname\.$#' + identifier: property.notFound + count: 1 + path: app/Services/AccountingService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 1 + path: app/Services/AccountingService.php + + - + message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Services/AccountingService.php + + - + message: '#^Offset 1 on array\{list\, list\\} on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Services/BackupService.php + + - + message: '#^Parameter &\$temps by\-ref type of method App\\Services\\BackupService\:\:addDiskToZip\(\) expects array\, array\ given\.$#' + identifier: parameterByRef.type + count: 1 + path: app/Services/BackupService.php + + - + message: '#^Variable \$chunk in empty\(\) always exists and is not falsy\.$#' + identifier: empty.variable + count: 1 + path: app/Services/BackupService.php + + - + message: '#^Parameter \#2 \$student of method App\\Services\\DocumentRenderer\:\:resolveVariables\(\) expects App\\Models\\Student\|null, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Services/BulletinRenderer.php + + - + message: '#^Strict comparison using \!\=\= between mixed and null will always evaluate to true\.$#' + identifier: notIdentical.alwaysTrue + count: 1 + path: app/Services/BulletinRenderer.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$documentHeader\.$#' + identifier: property.notFound + count: 1 + path: app/Services/DocumentRenderer.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$watermark\.$#' + identifier: property.notFound + count: 1 + path: app/Services/DocumentRenderer.php + + - + message: '#^Match arm comparison between ''female'' and ''female'' is always true\.$#' + identifier: match.alwaysTrue + count: 1 + path: app/Services/DocumentRenderer.php + + - + message: '#^Parameter \#1 \$school of method App\\Services\\DocumentRenderer\:\:logoDataUri\(\) expects App\\Models\\School\|null, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 2 + path: app/Services/DocumentRenderer.php + + - + message: '#^Parameter \#1 \$school of method App\\Services\\DocumentRenderer\:\:renderWatermark\(\) expects App\\Models\\School\|null, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Services/DocumentRenderer.php + + - + message: '#^Ternary operator condition is always true\.$#' + identifier: ternary.alwaysTrue + count: 1 + path: app/Services/DocumentRenderer.php + + - + message: '#^Using nullsafe property access "\?\-\>preset" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Services/DocumentRenderer.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$absent\.$#' + identifier: property.notFound + count: 1 + path: app/Services/GradingService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$academic_period_id\.$#' + identifier: property.notFound + count: 1 + path: app/Services/GradingService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$coefficient\.$#' + identifier: property.notFound + count: 1 + path: app/Services/GradingService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$evaluationType\.$#' + identifier: property.notFound + count: 1 + path: app/Services/GradingService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$evaluation_type_id\.$#' + identifier: property.notFound + count: 1 + path: app/Services/GradingService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$marks\.$#' + identifier: property.notFound + count: 1 + path: app/Services/GradingService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$max_score\.$#' + identifier: property.notFound + count: 1 + path: app/Services/GradingService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$score\.$#' + identifier: property.notFound + count: 1 + path: app/Services/GradingService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$student_id\.$#' + identifier: property.notFound + count: 1 + path: app/Services/GradingService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$template\.$#' + identifier: property.notFound + count: 2 + path: app/Services/GradingService.php + + - + message: '#^Parameter \#1 \$rows of method App\\Services\\GradingService\:\:assignRanks\(\) expects Illuminate\\Support\\Collection\, Illuminate\\Support\\Collection\ given\.$#' + identifier: argument.type + count: 2 + path: app/Services/GradingService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 1 + path: app/Services/InvoiceService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$type\.$#' + identifier: property.notFound + count: 1 + path: app/Services/InvoiceService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$value\.$#' + identifier: property.notFound + count: 2 + path: app/Services/InvoiceService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$d\.$#' + identifier: property.notFound + count: 1 + path: app/Services/PayrollService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$g\.$#' + identifier: property.notFound + count: 1 + path: app/Services/PayrollService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Services/PayrollService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$label\.$#' + identifier: property.notFound + count: 1 + path: app/Services/PayrollService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$n\.$#' + identifier: property.notFound + count: 1 + path: app/Services/PayrollService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$reason\.$#' + identifier: property.notFound + count: 1 + path: app/Services/PayrollService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$status\.$#' + identifier: property.notFound + count: 1 + path: app/Services/PayrollService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$type\.$#' + identifier: property.notFound + count: 1 + path: app/Services/PayrollService.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:appliesTo\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Services/PayrollService.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:computeAmount\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Services/PayrollService.php + + - + message: '#^Parameter \#1 \$payslip of method App\\Services\\AccountingService\:\:cancelPayrollTransaction\(\) expects App\\Models\\Payslip, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 2 + path: app/Services/PayrollService.php + + - + message: '#^Parameter \#1 \$payslip of method App\\Services\\AccountingService\:\:recordPayrollTransaction\(\) expects App\\Models\\Payslip, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Services/PayrollService.php + + - + message: '#^Parameter \#1 \$run of method App\\Services\\PayrollService\:\:refreshTotals\(\) expects App\\Models\\PayRun, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Services/PayrollService.php + + - + message: '#^Strict comparison using \!\=\= between mixed and null will always evaluate to true\.$#' + identifier: notIdentical.alwaysTrue + count: 1 + path: app/Services/PayrollService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$firstname\.$#' + identifier: property.notFound + count: 1 + path: app/Services/ReportCardBuilder.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$lastname\.$#' + identifier: property.notFound + count: 1 + path: app/Services/ReportCardBuilder.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 3 + path: app/Services/ReportCardBuilder.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$parent\.$#' + identifier: property.notFound + count: 2 + path: app/Services/ReportCardBuilder.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$period_system\.$#' + identifier: property.notFound + count: 1 + path: app/Services/ReportCardBuilder.php + + - + message: '#^Offset ''by_type'' on array\{classe\: float\|null, compo\: float\|null, moy\: float\|null, by_type\: array\\} on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Services/ReportCardBuilder.php + + - + message: '#^Parameter \#1 \$rows of method App\\Services\\GradingService\:\:rank\(\) expects Illuminate\\Support\\Collection\, Illuminate\\Support\\Collection\ given\.$#' + identifier: argument.type + count: 4 + path: app/Services/ReportCardBuilder.php + + - + message: '#^Parameter \#2 \$type of static method App\\Models\\BulletinTemplate\:\:resolveOrDefault\(\) expects App\\Models\\ClassroomType\|null, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ReportCardBuilder.php + + - + message: '#^Parameter \#2 \$type of static method App\\Models\\GradingConfig\:\:resolveOrDefault\(\) expects App\\Models\\ClassroomType\|null, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ReportCardBuilder.php + + - + message: '#^Using nullsafe property access "\?\-\>firstname" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Services/ReportCardBuilder.php + + - + message: '#^Using nullsafe property access "\?\-\>lastname" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Services/ReportCardBuilder.php + + - + message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 2 + path: app/Services/ReportCardBuilder.php + + - + message: '#^Using nullsafe property access "\?\-\>period_system" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Services/ReportCardBuilder.php + + - + message: '#^Called ''count'' on Laravel collection, but could have been retrieved as a query\.$#' + identifier: larastan.noUnnecessaryCollectionCall + count: 1 + path: app/Services/StatisticsService.php + + - + message: '#^Offset ''assez_bien'' on array\{passable\: int, assez_bien\: int, bien\: int, tres_bien\: int\} on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Services/StatisticsService.php + + - + message: '#^Offset ''bien'' on array\{passable\: int, assez_bien\: int, bien\: int, tres_bien\: int\} on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Services/StatisticsService.php + + - + message: '#^Offset ''passable'' on array\{passable\: int, assez_bien\: int, bien\: int, tres_bien\: int\} on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Services/StatisticsService.php + + - + message: '#^Offset ''tres_bien'' on array\{passable\: int, assez_bien\: int, bien\: int, tres_bien\: int\} on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Services/StatisticsService.php + + - + message: '#^Offset int\<20, max\> does not exist on array\{''zéro'', ''un'', ''deux'', ''trois'', ''quatre'', ''cinq'', ''six'', ''sept'', \.\.\.\}\.$#' + identifier: offsetAccess.notFound + count: 1 + path: app/Support/FrenchNumberSpeller.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Schema\\IndexDefinition\:\:index\(\)\.$#' + identifier: method.notFound + count: 2 + path: database/migrations/2026_02_16_150000_add_unique_indexes_to_matricules.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Schema\\ForeignKeyDefinition\:\:after\(\)\.$#' + identifier: method.notFound + count: 1 + path: database/migrations/2026_06_14_000011_add_locked_at_to_evaluations_table.php + + - + message: '#^Using nullsafe method call on non\-nullable type Illuminate\\Console\\Command\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: database/seeders/DatabaseSeeder.php + + - + message: '#^Using nullsafe method call on non\-nullable type Illuminate\\Console\\Command\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 3 + path: database/seeders/DefaultUsersSeeder.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$firstname\.$#' + identifier: property.notFound + count: 1 + path: database/seeders/DemoSeeder.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$lastname\.$#' + identifier: property.notFound + count: 1 + path: database/seeders/DemoSeeder.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 1 + path: database/seeders/DemoSeeder.php + + - + message: '#^Using nullsafe method call on non\-nullable type Illuminate\\Console\\Command\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 8 + path: database/seeders/DemoSeeder.php + + - + message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: database/seeders/DemoSeeder.php + + - + message: '#^Using nullsafe method call on non\-nullable type Illuminate\\Console\\Command\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: database/seeders/RolesAndPermissionsSeeder.php + + - + message: '#^Method Database\\Seeders\\StudentTestSeeder\:\:resolveAcademicYear\(\) never returns null so it can be removed from the return type\.$#' + identifier: return.unusedType + count: 1 + path: database/seeders/StudentTestSeeder.php + + - + message: '#^Using nullsafe method call on non\-nullable type Illuminate\\Console\\Command\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 4 + path: database/seeders/StudentTestSeeder.php diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..bea8f51 --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,19 @@ +includes: + - vendor/larastan/larastan/extension.neon + - phpstan-baseline.neon + +parameters: + level: 5 + + paths: + - app + - routes + - database + + # Larastan a besoin de connaître le répertoire des vues pour analyser les + # vues Blade référencées depuis le code. + # viewDirectories: + # - resources/views + + # Ignore les faux positifs connus liés à la magie Laravel ici si besoin. + ignoreErrors: []