10% recruitment-manager

Code Review | Recruitment Manager - Jobs Listing and Recruitment Plugin

WordPress plugin Recruitment Manager - Jobs Listing and Recruitment Plugin scored10%from 54 tests.

About plugin

  • Plugin page: recruitment-manager
  • Plugin version: 1.0
  • PHP compatiblity: 5.6+
  • PHP version: 7.4.16
  • WordPress compatibility: 4.8-5.9
  • WordPress version: 6.3.1
  • First release: Feb 25, 2022
  • Latest release: Mar 19, 2022
  • Number of updates: 5
  • Update frequency: every 5.0 days
  • Top authors: codewand (100%)

Code review

54 tests

User reviews

1 review

Install metrics

10+ active /430 total downloads

Benchmarks

Plugin footprint 58% from 16 tests

Installer 0% from 1 test

🔺 Critical test (weight: 50) | Checking the installer triggered no errors
You still need to fix the following installer errors
  • Install procedure had errors
    • > Notice in wp-includes/functions.php+650
    unserialize(): Error at offset 43 of 321 bytes

Server metrics [RAM: ▲0.29MB] [CPU: ▼7.90ms] Passed 4 tests

This is a short check of server-side resources used by Recruitment Manager - Jobs Listing and Recruitment Plugin
Server-side resource usage in normal parameters
PageMemory (MB)CPU Time (ms)
Home /3.72 ▲0.2645.72 ▼1.20
Dashboard /wp-admin3.64 ▲0.2952.37 ▼12.31
Posts /wp-admin/edit.php3.69 ▲0.3450.60 ▼0.38
Add New Post /wp-admin/post-new.php6.28 ▲0.4086.77 ▼17.71
Media Library /wp-admin/upload.php3.49 ▲0.2643.55 ▲9.42
Job Applications /wp-admin/edit.php?post_type=cwrm_applications3.5440.23
Settings /wp-admin/edit.php?post_type=cwrm_jobs&page=cwrm_settings3.5535.97
Job Fields /wp-admin/edit.php?post_type=cwrm_jobs&page=cwrm_job_fields3.5431.87
All Jobs /wp-admin/edit.php?post_type=cwrm_jobs3.5439.31
New Job /wp-admin/post-new.php?post_type=cwrm_jobs6.2788.27

Server storage [IO: ▲10.21MB] [DB: ▲0.01MB] Passed 3 tests

A short overview of filesystem and database impact
No storage issues were detected
Filesystem: 391 new files
Database: no new tables, 10 new options
New WordPress options
widget_recent-comments
can_compress_scripts
theysaidso_admin_options
cwrm_mail_new_application_user_field
cwrm_job_opt_fields
db_upgraded
cwrm_mail_new_application_admin_field
widget_recent-posts
cwrm_job_fields
widget_theysaidso_widget

Browser metrics Passed 4 tests

Checking browser requirements for Recruitment Manager - Jobs Listing and Recruitment Plugin
Normal browser usage
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,935 ▲18913.64 ▼1.039.47 ▲7.7641.51 ▼3.30
Dashboard /wp-admin2,249 ▲645.90 ▼0.01100.87 ▼4.7538.44 ▼8.86
Posts /wp-admin/edit.php2,122 ▲332.05 ▲0.0435.18 ▼1.8834.47 ▼4.10
Add New Post /wp-admin/post-new.php1,552 ▲3223.11 ▼0.07670.54 ▼2.6256.21 ▼1.94
Media Library /wp-admin/upload.php1,436 ▲544.22 ▲0.05126.48 ▲26.6253.49 ▲8.84
Job Applications /wp-admin/edit.php?post_type=cwrm_applications1,1792.0233.7733.87
Settings /wp-admin/edit.php?post_type=cwrm_jobs&page=cwrm_settings9281.8326.2940.29
Job Fields /wp-admin/edit.php?post_type=cwrm_jobs&page=cwrm_job_fields1,0322.0727.1838.56
All Jobs /wp-admin/edit.php?post_type=cwrm_jobs1,2012.1333.4133.52
New Job /wp-admin/post-new.php?post_type=cwrm_jobs6,23019.20845.5133.98

Uninstaller [IO: ▲0.00MB] [DB: ▲0.01MB] 75% from 4 tests

🔸 Tests weight: 35 | The uninstall procedure must remove all plugin files and extra database tables
You still need to fix the following
  • This plugin does not fully uninstall, leaving 10 options in the database
    • widget_recent-comments
    • cwrm_mail_new_application_user_field
    • can_compress_scripts
    • cwrm_job_opt_fields
    • db_upgraded
    • cwrm_mail_new_application_admin_field
    • cwrm_job_fields
    • theysaidso_admin_options
    • widget_recent-posts
    • widget_theysaidso_widget

Smoke tests 50% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
Good news, no errors were detected

SRP 0% from 2 tests

🔹 Tests weight: 20 | It is important to ensure that your PHP files perform no action when accessed directly, respecting the single-responsibility principle
Almost there! Just fix the following items
  • 2× PHP files perform the task of outputting text when accessed with GET requests:
    • > /wp-content/plugins/recruitment-manager/wp-recruit-manager.php
    • > /wp-content/plugins/recruitment-manager/vendor/sabberworm/php-css-parser/tests/quickdump.php
  • 152× PHP files trigger server errors when accessed directly (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Class 'SimpleExcel\\Parser\\BaseParser' not found in wp-content/plugins/recruitment-manager/vendor/faisalman/simple-excel-php/src/SimpleExcel/Parser/JSONParser.php:13
    • > PHP Fatal error
      Uncaught Error: Class 'Dompdf\\Renderer\\AbstractRenderer' not found in wp-content/plugins/recruitment-manager/vendor/dompdf/dompdf/src/Renderer.php:25
    • > PHP Fatal error
      Uncaught Error: Class 'Dompdf\\Positioner\\AbstractPositioner' not found in wp-content/plugins/recruitment-manager/vendor/dompdf/dompdf/src/Positioner/ListBullet.php:19
    • > PHP Fatal error
      Uncaught Error: Class 'Inc\\CWRM_Base\\CWRM_BaseController' not found in wp-content/plugins/recruitment-manager/inc/CWRM_Base/CWRM_SettingsController.php:13
    • > PHP Fatal error
      Uncaught Error: Interface 'Sabberworm\\CSS\\Property\\AtRule' not found in wp-content/plugins/recruitment-manager/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Property/CSSNamespace.php:8
    • > PHP Fatal error
      Uncaught Error: Class 'FontLib\\BinaryStream' not found in wp-content/plugins/recruitment-manager/vendor/phenx/php-font-lib/src/FontLib/Table/DirectoryEntry.php:19
    • > PHP Fatal error
      Uncaught Error: Class 'Dompdf\\FrameReflower\\AbstractFrameReflower' not found in wp-content/plugins/recruitment-manager/vendor/dompdf/dompdf/src/FrameReflower/ListBullet.php:18
    • > PHP Fatal error
      Uncaught Error: Class 'Dompdf\\Positioner\\AbstractPositioner' not found in wp-content/plugins/recruitment-manager/vendor/dompdf/dompdf/src/Positioner/TableCell.php:19
    • > PHP Fatal error
      Uncaught Error: Class 'SimpleExcel\\Writer\\BaseWriter' not found in wp-content/plugins/recruitment-manager/vendor/faisalman/simple-excel-php/src/SimpleExcel/Writer/XLSXWriter.php:11
    • > PHP Fatal error
      Uncaught Error: Class 'Dompdf\\Positioner\\AbstractPositioner' not found in wp-content/plugins/recruitment-manager/vendor/dompdf/dompdf/src/Positioner/NullPositioner.php:18

User-side errors Passed 1 test

🔹 Test weight: 20 | A shallow check that no browser errors were triggered
No browser errors were detected

Optimizations

Plugin configuration 83% from 29 tests

readme.txt Passed 16 tests

The readme.txt file is undoubtedly the most important file in your plugin, preparing it for public listing on WordPress.org
6 plugin tags: jobs plugin, jobs, career plugin, recruitment plugin, career...

recruitment-manager/wp-recruit-manager.php 62% from 13 tests

The primary PHP file in "Recruitment Manager - Jobs Listing and Recruitment Plugin" version 1.0 is used by WordPress to initiate all plugin functionality
The following require your attention:
  • Requires at least: The required version number did not match the one declared in readme.txt ("4.7" instead of "4.8")
  • Description: Please keep the plugin description shorter than 140 characters (currently 200 characters long)
  • Text Domain: You no longer need to specify the text domain since WordPress 4.6; it must be the same as the plugin slug
  • Requires PHP: The required version number did not match the one declared in readme.txt ("7.0" instead of "5.6")
  • Main file name: Please rename the main PHP file in this plugin to the plugin slug ("recruitment-manager.php" instead of "wp-recruit-manager.php")

Code Analysis 97% from 3 tests

File types Passed 1 test

🔸 Test weight: 35 | There should be no dangerous file extensions present in any WordPress plugin
No dangerous file extensions were detected41,045 lines of code in 300 files:
LanguageFilesBlank linesComment linesLines of code
PHP2207,62215,60734,737
JavaScript72793293,732
Markdown62730957
CSS4813760874
JSON800439
XML532182
YAML312262
HTML20054
SVG1008

PHP code 50% from 2 tests

An short overview of logical lines of code, cyclomatic complexity, and other code metrics
The following items need your attention
  • Please reduce cyclomatic complexity of methods to less than 100 (currently 652)
Cyclomatic complexity
Average complexity per logical line of code0.43
Average class complexity29.98
▷ Minimum class complexity1.00
▷ Maximum class complexity765.00
Average method complexity4.05
▷ Minimum method complexity1.00
▷ Maximum method complexity652.00
Code structure
Namespaces37
Interfaces6
Traits0
Classes188
▷ Abstract classes147.45%
▷ Concrete classes17492.55%
▷ Final classes00.00%
Methods1,891
▷ Static methods1045.50%
▷ Public methods1,67188.37%
▷ Protected methods1477.77%
▷ Private methods733.86%
Functions70
▷ Named functions5680.00%
▷ Anonymous functions1420.00%
Constants168
▷ Global constants84.76%
▷ Class constants16095.24%
▷ Public constants160100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

All PNG images should be compressed to minimize bandwidth usage for end users
2 PNG files occupy 0.00MB with 0.00MB in potential savings
Potential savings
Compression of 2 random PNG files using pngquant
FileSize - originalSize - compressedSavings
assets/images/not-found.png3.14KB2.22KB▼ 29.19%
vendor/dompdf/dompdf/lib/res/broken_image.png0.60KB0.47KB▼ 22.33%