rules 2026.10.7-provisional platform PHP: Laravel (composer.json requires laravel/framework; artisan) candidate-a/app/Actions/Appointment/CancelAppointmentAction.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 3 functions Duplication: 100 (A), based on 28 code lines NamingConvention: 100 (A), based on 6 names Security: not graded candidate-a/app/Actions/Appointment/ChangeAppointmentStatusAction.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 16 code lines NamingConvention: 100 (A), based on 4 names Security: not graded candidate-a/app/Actions/Appointment/StoreAppointmentAction.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 4 functions Duplication: 100 (A), based on 41 code lines NamingConvention: 100 (A), based on 10 names Security: not graded candidate-a/app/Data/FreeSlot.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 9 code lines NamingConvention: 75 (C), based on 4 names 10:21 [warning] naming.inconsistent_style - property `doctor_id` is snake_case, while most properties in this file are camelCase (2 of 3 names); mixed styles make code harder to scan Security: not graded candidate-a/app/Enums/AppointmentStatus.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 20 code lines NamingConvention: 100 (A), based on 4 names Security: not graded candidate-a/app/Exceptions/InvalidAppointmentTransition.php (other) CodeLength: not graded CyclomaticComplexity: not graded Duplication: 100 (A), based on 2 code lines NamingConvention: 100 (A), based on 1 name Security: not graded candidate-a/app/Http/Controllers/AppointmentController.php (controller) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 5 functions Duplication: 100 (A), based on 57 code lines NamingConvention: 100 (A), based on 13 names Security: not graded candidate-a/app/Http/Controllers/Controller.php (controller) CodeLength: not graded CyclomaticComplexity: not graded Duplication: 100 (A), based on 4 code lines NamingConvention: 100 (A), based on 1 name Security: not graded candidate-a/app/Http/Controllers/Doctor/AvailabilityController.php (controller) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 19 code lines NamingConvention: 100 (A), based on 5 names Security: not graded candidate-a/app/Http/Controllers/DoctorController.php (controller) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 5 functions Duplication: 100 (A), based on 31 code lines NamingConvention: 100 (A), based on 8 names Security: not graded candidate-a/app/Http/Controllers/FreeSlotController.php (controller) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 25 code lines NamingConvention: 100 (A), based on 7 names Security: not graded candidate-a/app/Http/Controllers/PatientController.php (controller) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 5 functions Duplication: 100 (A), based on 31 code lines NamingConvention: 100 (A), based on 8 names Security: not graded candidate-a/app/Http/Requests/Appointment/CancelAppointmentRequest.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 14 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-a/app/Http/Requests/Appointment/IndexAppointmentRequest.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 26 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-a/app/Http/Requests/Appointment/StoreAppointmentRequest.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 31 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-a/app/Http/Requests/Doctor/Availability/IndexAvailabilityRequest.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 14 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-a/app/Http/Requests/Doctor/Availability/StoreAvailabilityRequest.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 3 functions Duplication: 100 (A), based on 54 code lines NamingConvention: 100 (A), based on 9 names Security: not graded candidate-a/app/Http/Requests/Doctor/IndexDoctorRequest.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 14 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-a/app/Http/Requests/Doctor/StoreDoctorRequest.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 30 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-a/app/Http/Requests/Doctor/UpdateDoctorRequest.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 12 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-a/app/Http/Requests/FreeSlot/IndexFreeSlotRequest.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 30 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-a/app/Http/Requests/Patient/IndexPatientRequest.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 14 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-a/app/Http/Requests/Patient/StorePatientRequest.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 30 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-a/app/Http/Requests/Patient/UpdatePatientRequest.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 12 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-a/app/Http/Resources/AppointmentCollection.php (other) CodeLength: not graded CyclomaticComplexity: not graded Duplication: 100 (A), based on 2 code lines NamingConvention: 100 (A), based on 1 name Security: not graded candidate-a/app/Http/Resources/AppointmentResource.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 16 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-a/app/Http/Resources/AvailabilityCollection.php (other) CodeLength: not graded CyclomaticComplexity: not graded Duplication: 100 (A), based on 2 code lines NamingConvention: 100 (A), based on 1 name Security: not graded candidate-a/app/Http/Resources/AvailabilityResource.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 14 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-a/app/Http/Resources/DoctorCollection.php (other) CodeLength: not graded CyclomaticComplexity: not graded Duplication: 100 (A), based on 2 code lines NamingConvention: 100 (A), based on 1 name Security: not graded candidate-a/app/Http/Resources/DoctorResource.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 13 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-a/app/Http/Resources/FreeSlotCollection.php (other) CodeLength: not graded CyclomaticComplexity: not graded Duplication: 100 (A), based on 5 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-a/app/Http/Resources/FreeSlotResource.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 12 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-a/app/Http/Resources/PatientCollection.php (other) CodeLength: not graded CyclomaticComplexity: not graded Duplication: 100 (A), based on 2 code lines NamingConvention: 100 (A), based on 1 name Security: not graded candidate-a/app/Http/Resources/PatientResource.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 13 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-a/app/Models/Appointment.php (model) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 5 functions Duplication: 100 (A), based on 30 code lines NamingConvention: 100 (A), based on 8 names Security: not graded candidate-a/app/Models/Availability.php (model) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 4 functions Duplication: 100 (A), based on 36 code lines NamingConvention: 100 (A), based on 11 names Security: not graded candidate-a/app/Models/Doctor.php (model) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 15 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-a/app/Models/Patient.php (model) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 10 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-a/app/Models/User.php (model) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 14 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-a/app/Providers/AppServiceProvider.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 10 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-a/app/Rules/EndsAtFitsSlotDuration.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 3 functions Duplication: 100 (A), based on 32 code lines NamingConvention: 93 (A), based on 14 names 44:36 [warning] naming.generic - parameter `data` is a generic name; it says nothing about what it holds Security: not graded candidate-a/app/Rules/SameDayAs.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 3 functions Duplication: 100 (A), based on 25 code lines NamingConvention: 90 (A), based on 10 names 35:36 [warning] naming.generic - parameter `data` is a generic name; it says nothing about what it holds Security: not graded candidate-a/app/Services/FreeSlotService.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 3 functions Duplication: 100 (A), based on 40 code lines NamingConvention: 92 (A), based on 13 names 37:22 [warning] naming.too_long - method `getDoctorAvailabilityLockedSlots` is 32 characters (limit 30); very long names make code hard to read Security: not graded candidate-a/app/Support/ApiDateTime.php (other) CodeLength: not graded CyclomaticComplexity: not graded Duplication: 100 (A), based on 5 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-a/artisan (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 5 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-a/bootstrap/app.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 13 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-a/bootstrap/providers.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 3 code lines NamingConvention: not graded Security: not graded candidate-a/config/app.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 21 code lines NamingConvention: not graded Security: not graded candidate-a/config/auth.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 27 code lines NamingConvention: not graded Security: not graded candidate-a/config/cache.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 68 code lines NamingConvention: not graded Security: not graded candidate-a/config/cors.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 10 code lines NamingConvention: not graded Security: not graded candidate-a/config/database.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 0 (F), based on 116 code lines 68:1 [warning] duplication.repeated_block - lines 68 to 87 repeat lines 48 to 67 (190 tokens); repeated code has to be fixed in every copy 106:1 [warning] duplication.repeated_block - lines 106 to 112 repeat lines 91 to 97 (75 tokens); repeated code has to be fixed in every copy 169:1 [warning] duplication.repeated_block - lines 169 to 175 repeat lines 156 to 162 (73 tokens); repeated code has to be fixed in every copy 175:1 [warning] duplication.repeated_block - lines 175 to 180 repeat lines 162 to 167 (59 tokens); repeated code has to be fixed in every copy NamingConvention: not graded Security: not graded candidate-a/config/filesystems.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 35 code lines NamingConvention: not graded Security: not graded candidate-a/config/logging.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 81 code lines NamingConvention: not graded Security: not graded candidate-a/config/mail.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 56 code lines NamingConvention: not graded Security: not graded candidate-a/config/queue.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 64 code lines NamingConvention: not graded Security: not graded candidate-a/config/services.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 19 code lines NamingConvention: not graded Security: not graded candidate-a/config/session.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 22 code lines NamingConvention: not graded Security: not graded candidate-a/database/factories/AppointmentFactory.php (factory) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 6 functions Duplication: 100 (A), based on 48 code lines NamingConvention: 100 (A), based on 10 names Security: not graded candidate-a/database/factories/AvailabilityFactory.php (factory) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 26 code lines NamingConvention: 100 (A), based on 7 names Security: not graded candidate-a/database/factories/DoctorFactory.php (factory) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 14 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-a/database/factories/PatientFactory.php (factory) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 12 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-a/database/migrations/0001_01_01_000000_create_users_table.php (migration) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions and file level code Duplication: not graded NamingConvention: not graded Security: not graded candidate-a/database/migrations/0001_01_01_000001_create_cache_table.php (migration) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions and file level code Duplication: not graded NamingConvention: not graded Security: not graded candidate-a/database/migrations/0001_01_01_000002_create_jobs_table.php (migration) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions and file level code Duplication: not graded NamingConvention: not graded Security: not graded candidate-a/database/migrations/2026_09_22_144442_create_doctors_table.php (migration) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions and file level code Duplication: not graded NamingConvention: not graded Security: not graded candidate-a/database/migrations/2026_09_23_062339_create_patients_table.php (migration) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions and file level code Duplication: not graded NamingConvention: not graded Security: not graded candidate-a/database/migrations/2026_09_23_113804_create_availabilities_table.php (migration) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions and file level code Duplication: not graded NamingConvention: not graded Security: not graded candidate-a/database/migrations/2026_09_23_165440_create_appointments_table.php (migration) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions and file level code Duplication: not graded NamingConvention: not graded Security: not graded candidate-a/database/seeders/DatabaseSeeder.php (seeder) CodeLength: not graded 21:21 [warning] length.function - DatabaseSeeder::run has 57 lines in its body, above 50 CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 52 code lines NamingConvention: 100 (A), based on 16 names Security: not graded candidate-a/public/index.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 7 code lines NamingConvention: 100 (A), based on 2 names Security: not graded 10:5 [warning] security.include_variable - require of `$maintenance` builds the file path from data; a crafted path can load another file candidate-a/routes/api.php (route) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 25 code lines NamingConvention: not graded Security: not graded candidate-a/routes/console.php (route) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 3 code lines NamingConvention: not graded Security: not graded candidate-a/tests/Feature/AppointmentControllerTest.php (test) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 5 functions and file level code Duplication: 40 (F), based on 499 code lines 194:1 [warning] duplication.repeated_block - lines 194 to 199 repeat lines 141 to 145 (52 tokens); repeated code has to be fixed in every copy 226:1 [warning] duplication.repeated_block - lines 226 to 237 repeat lines 206 to 217 (88 tokens); repeated code has to be fixed in every copy 375:1 [warning] duplication.repeated_block - lines 375 to 382 repeat lines 283 to 290 (52 tokens); repeated code has to be fixed in every copy 484:1 [warning] duplication.repeated_block - lines 484 to 502 repeat lines 439 to 457 (83 tokens); repeated code has to be fixed in every copy 505:1 [warning] duplication.repeated_block - lines 505 to 514 repeat lines 460 to 469 (56 tokens); repeated code has to be fixed in every copy 514:1 [warning] duplication.repeated_block - lines 514 to 520 repeat lines 469 to 475 (71 tokens); repeated code has to be fixed in every copy 529:1 [warning] duplication.repeated_block - lines 529 to 543 repeat lines 439 to 453 (71 tokens); repeated code has to be fixed in every copy 549:1 [warning] duplication.repeated_block - lines 549 to 568 repeat lines 527 to 546 (108 tokens); repeated code has to be fixed in every copy 589:1 [warning] duplication.repeated_block - lines 589 to 598 repeat lines 460 to 469 (53 tokens); repeated code has to be fixed in every copy NamingConvention: 100 (A), based on 25 names Security: not graded candidate-a/tests/Feature/AvailabilityControllerTest.php (test) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions and file level code Duplication: 100 (A), based on 229 code lines NamingConvention: 100 (A), based on 13 names Security: not graded candidate-a/tests/Feature/DoctorControllerTest.php (test) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions and file level code Duplication: 100 (A), based on 261 code lines NamingConvention: 100 (A), based on 13 names Security: not graded candidate-a/tests/Feature/FreeSlotControllerTest.php (test) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 5 functions and file level code Duplication: 85 (B), based on 191 code lines 178:1 [warning] duplication.repeated_block - lines 178 to 186 repeat lines 157 to 165 (65 tokens); repeated code has to be fixed in every copy NamingConvention: 85 (B), based on 13 names 46:10 [warning] naming.too_long - function `createDoctorWithMorningAvailability` is 35 characters (limit 30); very long names make code hard to read 60:10 [warning] naming.too_long - function `createDoctorWithTwoMorningWindows` is 33 characters (limit 30); very long names make code hard to read Security: not graded candidate-a/tests/Feature/PatientControllerTest.php (test) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions and file level code Duplication: 100 (A), based on 262 code lines NamingConvention: 100 (A), based on 13 names Security: not graded candidate-a/tests/Pest.php (test) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function and file level code Duplication: 100 (A), based on 8 code lines NamingConvention: 100 (A), based on 1 name Security: not graded candidate-a/tests/TestCase.php (test) CodeLength: not graded CyclomaticComplexity: not graded Duplication: 100 (A), based on 4 code lines NamingConvention: 100 (A), based on 1 name Security: not graded candidate-a/tests/Unit/ExampleTest.php (test) CodeLength: not graded CyclomaticComplexity: not graded Duplication: not graded NamingConvention: not graded Security: not graded project grades CodeLength: not graded CyclomaticComplexity: 100 (A), based on 71 files, 150 units Duplication: 85 (B), based on 73 files, 3043 code lines NamingConvention: 98 (A), based on 59 files, 319 names Security: not graded Overall: 95 (A), 3 of 5 metrics, weights complexity 3, duplication 2, naming 1; not graded: codelength, security not analysed: 68 files (Markdown 37, Ignore List 13, JSON 5, Shell 2, ApacheConf 1, EditorConfig 1, Git Attributes 1, NEON 1, NPM Config 1, SQL 1, Text 1, XML 1, YAML 1, ico 1, robots.txt 1)