Skip to content

v3.0.0rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@niconoe- niconoe- released this 11 Apr 07:22
· 2 commits to master since this release

[3.0.0-rc1] - 2023-04-11

This new major version is containing lots of internal re-architecture processes in the source code, and upgrades the
internal quality of PhpMetrics to a new level. Nevertheless, it contains also some BC Breaks and some metrics are
remove. Please take a look at the detailed changelog below if you experiment any trouble.

BC Break

  • PhpMetrics 3.0 is requiring PHP 8.1 minimum. To parse projects that are not yet in PHP 8.1, please use a docker
    installation based on a PHP 8.1 Docker Image
  • Git and JUnit plugins are no longer allowed in the configuration file

Removed

  • Installation and usage from Debian package. Please use the phar, composer, or docker instead
  • Metric removed: Git related metrics
  • Metric removed: PHPUnit related metrics
  • Metric removed: PageRank metric
  • Metric removed: On System Complexity, totalStructuralComplexity, totalDataComplexity and totalSystemComplexity.
  • Metric removed: On class-method enumeration, nbGetters and nbSetters are removed as no particular metric needs them.

New features

  • Internal: Install a real dedicated QA system to secure PhpMetrics as mch as possible
  • Internal: QA System is composed of PHP_CodeSniffer, PHPUnit, PHP Infection, PHPStan, Psalm and Qodana
  • Internal: Make possible to create releases with suffixed names
  • Minor UX/UI improvements on the HTML report.

Fixed

  • Internal: QA completely upgraded. PHPCS, PHPStan, Psalm and Qodana are no longer having errors except on baseline.
    Coverage is very close to 100%. All unit tests are passing. Mutation Score >94%. Some improvements are yet to come
  • Metric calculations: Fix LCoM calculation that was not able to understand promoted properties in constructor.
  • Metric calculations: Ignore PHP Attributes in the detection of getters and setters. This fixes LCoM calculation.
  • Metric calculations: Improve calculation on Afferent Coupling and Efferent Coupling (+ related metrics) thanks to
    enlarged context of external classes usages detection.
  • Metric calculations: Take NullSafeMethodCall ($x?->y()) into account for WeightMethodCount and Cyclomatic Complexity calculation.
  • Metric calculations: Take NullSafePropertyFetch ($x?->y) into account for WeightMethodCount and Cyclomatic Complexity calculation.
  • Metric calculations: Take newly introduced match structure into account for WeightMethodCount and Cyclomatic Complexity calculation.
  • Metric calculations: Improve KanDefect metrics as match are now took into account as number of selects, along with switches.
  • Metric calculations: On System Complexity, relative complexities are now calculated including NullSafeMethodCall ($x?->y()).