A code quality control tool for PHP that will give you an idea of the composition of comments in the codebase, and help improve documentation
A tool to analyze the comment density and quality in PHP source code files, helping to maintain and improve code documentation quality.
To install Comment Density Analyzer, run the following command in your terminal:
composer require --dev savinmikhail/comments-density
Analyze the comment density in your PHP files with:
php vendor/bin/comments_density analyze:comments
Generate baseline with:
php vendor/bin/comments_density generate:baseline
On installation, you can allow plugin to create its configuration file.
Customize your analysis by editing a comments_density.php configuration file:
<?php
return [
'directories' => [
'src', // Directories to be scanned for comments
],
'exclude' => [
'src/DTO', // Directories to be ignored during scanning
],
'thresholds' => [
// Limit occurrences of each comment type
'docBlock' => 90,
'regular' => 5,
'todo' => 5,
'fixme' => 5,
'missingDocBlock' => 10,
// Additional metrics thresholds
'Com/LoC' => 0.1, // Comments per Lines of Code
'CDS' => 0.1, // Comment Density Score
],
'only' => [
'missingDocblock', // Only this type will be analyzed; set to empty array for full statistics
],
'output' => [
'type' => 'console', // Supported values: 'console', 'html'
'file' => 'output.html', // File path for HTML output (only used if type is 'html')
],
'missingDocblock' => [
'class' => true, // Check for missing docblocks in classes
'interface' => true, // Check for missing docblocks in interfaces
'trait' => true, // Check for missing docblocks in traits
'enum' => true, // Check for missing docblocks in enums
'property' => true, // Check for missing docblocks in properties
'constant' => true, // Check for missing docblocks in constants
'function' => true, // Check for missing docblocks in functions
'requireForAllMethods' => true, // If false, only methods where @throws tag or generic can be applied will be checked
],
'use_baseline' => true, // Filter collected comments against the baseline stored in comments_density.sqlite
];
This project was inspired by Yegor Bugayenko. See opensource ideas.
Contributions are welcome! Please feel free to submit a Pull Request.
This library is released under the MIT license.