A Python tool to generate multi project, multi language code metric reports
Project description
Metripy
A multilanguage, multi project code metrics analysis tool.
Languages
Supported languages
- Python
- Php
- Typescript
- TBD
Analysis types
Code analysis
Analyses code with cyclomatic complexity, maintainability index, halstead metrics.
Git analysis
Analyses git stats of the past months
Dependeny analysis
Analyzses composer, npm or pip dependencies
More dependencies TBD
Report formats
Html
Generates an easy to read dashboard for each project.
Project Index Page
When analyzing multiple projects, you can generate a central index page that provides an overview of all projects at a glance.
Configure with:
{
"configs": { /* multiple project configs */ },
"html_index": "./build/index.html"
}
The index page displays:
- Aggregate statistics across all projects (total LOC, files, avg complexity, etc.)
- Project cards with individual metrics and health status
- Links to each project's detailed HTML report
Files Analysis
Top Offenders
Csv
Exports simple csv
Json
Dumps full result into json
Cli
Prints comprehensive overview directly to the terminal with color-coded visualizations:
- Stacked bar charts for all key metrics
- Top offenders tables (worst files and functions)
- Coupling and instability metrics
- Code smells summary
- Git and dependency metrics (when enabled)
Metrics
Lines of code
The total number of lines in your source code, including comments and blank lines.
Cyclomatic Complexity
A measure of the number of independent paths through your code.
Cognitive Complexity
A measure of how difficult code is to understand based on its control flow and nesting.
Maintainability Index
A composite metric that estimates how easy it is to maintain code, based on LOC, complexity, and comments.
Average Method Size
The average number of lines per method or function in your codebase.
Instability
A metric that measures how likely a module is to change based on its dependencies (ratio of efferent to afferent couplings).
LCOM4
A metric that measures how well the methods of a class are related to each other. It checks if methods share common attributes, indicating cohesion.
Configuration
Configuration is for the moment only possible with the --config=<file>.json option. More TBD
Sample configuraiton:
{
"configs": {
"metripy": {
"base_path": "./", // base path to look at
"includes": [
"metripy/" // paths to include from the base path on
],
"excludes": [
"__pycache__" // exclude patterns of paths / files
],
"extensions": [
"py" // file extensions to look at
],
"git": { // if git is set, analyzes git history
"branch": "main" // git branch to look at
},
"composer": true, // looks for base_path/composer.json and analyzes dependencies - for php projects
"npm": true, // looks for base_path/package.json and analyzes dependencies - for ts/js projects
"pip": true,
// looks for base_path/requirements.txt or base_path/pyproject.toml and analyzes dependencies - for python projects
"reports": {
"html": "./build/report/metripy", // report should be put into this directory
"json-git": "./build/json-report/metripy-git.json" // file where to put git json report
// more types of reports TBA
}
},
// next project name: { next config... }
},
"html_index": "./build/index.html" // optional: generates a central overview page for all projects
}
Configuration for only git stats
{
"configs": {
"metripy-git": {
"base_path": "./",
"git": {
"branch": "main"
},
"reports": {
"json-git": "./build/json-report/metripy-git.json"
}
}
}
}
Exit Conditions (Quality Gates)
Define conditions to fail the analysis with specific exit codes. Useful for CI/CD pipelines.
{
"configs": { ... },
"failure": {
"1": [
{
"value": "function_cyclomatic_complexity",
"severity": "critical",
"amount": 10
}
]
}
}
This example exits with code 1 if there are 10 or more functions with critical cyclomatic complexity.
Available metrics
- File level:
file_loc,file_cyclomatic_complexity,file_maintainability_index,file_cognitive_complexity - Class level:
class_loc,class_cyclomatic_complexity,class_lcom4 - Function level:
function_loc,function_cyclomatic_complexity,function_maintainability_index,function_cognitive_complexity
Severity levels
good, ok, warning, critical
See the Configuration Guide for more details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file metripy-1.0.0.tar.gz.
File metadata
- Download URL: metripy-1.0.0.tar.gz
- Upload date:
- Size: 122.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e66d069f516c2ea559c2ad57d6fabdfe77fef4f34d8ad9058ab66d8cc2bd044
|
|
| MD5 |
5b8c71d3b4d6b2d8d8fd5d18f8213da8
|
|
| BLAKE2b-256 |
dc0cd79cc532d4be5586f7718ed40934e26d26adb375ce5b861b0ad20924e73d
|
File details
Details for the file metripy-1.0.0-py3-none-any.whl.
File metadata
- Download URL: metripy-1.0.0-py3-none-any.whl
- Upload date:
- Size: 183.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f528c48df1cee058d4dfa3d3169404c70b132d38aa4957e6fe3641588669bf11
|
|
| MD5 |
98a480fe0081ef6db2d9c9beaad4af49
|
|
| BLAKE2b-256 |
25f28ddcdbe7cd045fb5336e66299dfc22d559655fabdc19806f106351a12517
|