rules 2026.10.7-provisional platform PHP: Laravel (composer.json requires laravel/framework; artisan) candidate-b/app/Console/Commands/UpdateArticleCommand.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 18 code lines NamingConvention: 100 (A), based on 6 names Security: not graded candidate-b/app/DataSource.php (other) CodeLength: not graded CyclomaticComplexity: not graded Duplication: 100 (A), based on 7 code lines NamingConvention: 100 (A), based on 1 name Security: not graded candidate-b/app/Http/Controllers/Api/NewsController.php (controller) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 5 functions Duplication: 100 (A), based on 59 code lines NamingConvention: 100 (A), based on 13 names Security: not graded candidate-b/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-b/app/Http/Requests/ArticleDateRequest.php (other) 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-b/app/Http/Requests/ArticleSearchRequest.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 14 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-b/app/Http/Resources/ArticleResource.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 19 code lines NamingConvention: 100 (A), based on 3 names Security: not graded candidate-b/app/Interface/IArticleSource.php (other) CodeLength: not graded CyclomaticComplexity: not graded Duplication: 100 (A), based on 6 code lines NamingConvention: 100 (A), based on 4 names Security: not graded candidate-b/app/Interface/INewsService.php (other) CodeLength: not graded CyclomaticComplexity: not graded Duplication: 100 (A), based on 6 code lines NamingConvention: 100 (A), based on 5 names Security: not graded candidate-b/app/Models/Article.php (model) CodeLength: not graded CyclomaticComplexity: not graded Duplication: 100 (A), based on 15 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-b/app/Models/User.php (model) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 21 code lines NamingConvention: 100 (A), based on 4 names Security: not graded candidate-b/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-b/app/Services/NewYorkTimes.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 36 code lines NamingConvention: 90 (A), based on 10 names 38:14 [warning] naming.generic - variable `data` is a generic name; it says nothing about what it holds Security: not graded candidate-b/app/Services/NewsAPI.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 36 code lines NamingConvention: 90 (A), based on 10 names 39:14 [warning] naming.generic - variable `data` is a generic name; it says nothing about what it holds Security: not graded candidate-b/app/Services/NewsService.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 27 code lines NamingConvention: 100 (A), based on 7 names Security: not graded candidate-b/app/Services/TheGuardian.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 36 code lines NamingConvention: 90 (A), based on 10 names 28:14 [warning] naming.generic - variable `data` is a generic name; it says nothing about what it holds Security: not graded candidate-b/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 1 name Security: not graded candidate-b/bootstrap/app.php (other) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 11 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-b/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-b/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-b/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-b/config/cache.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 55 code lines NamingConvention: not graded Security: not graded candidate-b/config/database.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 0 (F), based on 106 code lines 66:1 [warning] duplication.repeated_block - lines 66 to 85 repeat lines 46 to 65 (190 tokens); repeated code has to be fixed in every copy 104:1 [warning] duplication.repeated_block - lines 104 to 110 repeat lines 89 to 95 (75 tokens); repeated code has to be fixed in every copy 162:1 [warning] duplication.repeated_block - lines 162 to 168 repeat lines 153 to 159 (73 tokens); repeated code has to be fixed in every copy NamingConvention: not graded Security: not graded candidate-b/config/filesystems.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 32 code lines NamingConvention: not graded Security: not graded candidate-b/config/logging.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 74 code lines NamingConvention: not graded Security: not graded candidate-b/config/mail.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 54 code lines NamingConvention: not graded Security: not graded candidate-b/config/queue.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 51 code lines NamingConvention: not graded Security: not graded candidate-b/config/sanctum.php (config) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 15 code lines NamingConvention: not graded Security: not graded candidate-b/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-b/config/session.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-b/database/factories/UserFactory.php (factory) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 2 functions Duplication: 100 (A), based on 21 code lines NamingConvention: 100 (A), based on 5 names Security: not graded candidate-b/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-b/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-b/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-b/database/migrations/2024_12_07_184306_create_articles_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-b/database/migrations/2024_12_07_195142_create_personal_access_tokens_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-b/database/seeders/DatabaseSeeder.php (seeder) CodeLength: not graded CyclomaticComplexity: 100 (A), based on 1 function Duplication: 100 (A), based on 11 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-b/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 1 name Security: not graded 9:5 [warning] security.include_variable - require of `$maintenance` builds the file path from data; a crafted path can load another file candidate-b/routes/api.php (route) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 7 code lines NamingConvention: not graded Security: not graded candidate-b/routes/console.php (route) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 6 code lines NamingConvention: not graded Security: not graded candidate-b/routes/web.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-b/tests/Feature/ArticleFetchTest.php (test) CodeLength: not graded CyclomaticComplexity: 100 (A), based on file level code Duplication: 100 (A), based on 11 code lines NamingConvention: 100 (A), based on 2 names Security: not graded candidate-b/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-b/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 project grades CodeLength: not graded CyclomaticComplexity: 100 (A), based on 38 files, 61 units Duplication: 88 (B), based on 39 files, 901 code lines NamingConvention: 97 (A), based on 24 files, 100 names Security: not graded Overall: 96 (A), 3 of 5 metrics, weights complexity 3, duplication 2, naming 1; not graded: codelength, security not analysed: 32 files (Ignore List 13, JavaScript 5, JSON 3, ApacheConf 1, Blade 1, CSS 1, EditorConfig 1, Git Attributes 1, Markdown 1, Shell 1, Text 1, XML 1, ico 1, robots.txt 1)