{"id":15044192,"url":"https://github.com/ebay/graph-analytics-plugin","last_synced_at":"2025-06-26T08:04:35.928Z","repository":{"id":255531427,"uuid":"849453295","full_name":"eBay/graph-analytics-plugin","owner":"eBay","description":"Gradle Project Graph Analysis and Reporting Plugin","archived":false,"fork":false,"pushed_at":"2025-06-18T21:57:47.000Z","size":230,"stargazers_count":19,"open_issues_count":0,"forks_count":0,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-06-18T22:31:49.304Z","etag":null,"topics":["analysis-framework","gradle","gradle-plugin","graph"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eBay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-29T16:11:11.000Z","updated_at":"2025-06-18T21:57:14.000Z","dependencies_parsed_at":"2024-09-25T01:52:49.744Z","dependency_job_id":"40a7a6ee-f96b-4f02-9bc3-c4e44d41220f","html_url":"https://github.com/eBay/graph-analytics-plugin","commit_stats":null,"previous_names":["ebay/graph-analytics-plugin"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/eBay/graph-analytics-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eBay%2Fgraph-analytics-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eBay%2Fgraph-analytics-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eBay%2Fgraph-analytics-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eBay%2Fgraph-analytics-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eBay","download_url":"https://codeload.github.com/eBay/graph-analytics-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eBay%2Fgraph-analytics-plugin/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262026982,"owners_count":23246954,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analysis-framework","gradle","gradle-plugin","graph"],"created_at":"2024-09-24T20:50:11.621Z","updated_at":"2025-06-26T08:04:35.918Z","avatar_url":"https://github.com/eBay.png","language":"Kotlin","readme":"![Gradle Plugin Portal Version](https://img.shields.io/gradle-plugin-portal/v/com.ebay.graph-analytics)\n\n# Graph Analytics Plugin\n\n## About This Project\n\nThis [Gradle](https://gradle.org/) plugin was designed to be used in multi-module\nprojects to analyze the inter-module dependency graph and provide insights into the\nstructure of the project.  This information can then be used to identify areas of\nimprovement and measure the resulting impact of changes being made.\n\nEach project module becomes a vertex in the resulting graph.  The dependencies between the\nproject modules are expressed as edges between these vertices.\n\nThe plugin provides the following features:\n- Generation of a GraphML file representing the project dependency graph\n- Analysis of individual project modules, providing deeper insights into the costs being\n  incurred by the module\n- Extensibility, allowing for custom metrics to be added to the analysis\n- Validation of the graph, allowing enforcement of graph metrics on a per-project basis using\n  a flexible and extensible rule system \n\n## Background\n\nTo better understand why this plugin exists and how it works, the following documents\nmay be referenced:\n- [Motivation](docs/Motivation.md): Why the plugin was created and the problems it solves\n- [Design Overview](docs/Design.md): High level overview of how the plugin functions\n\n## Requirements\n\nThe plugin is designed to work with Gradle 8.11 or later.\n\n## Usage\n\nTo use, add the plugin your project's settings.gradle.kts file, as follows.  This will ensure\nthat the plugin is applied to all project modules:\n```kotlin\n// settings.gradle.kts\nplugins {\n    id(\"com.ebay.graph-analytics\") version(\"\u003ccurrent version goes here\u003e\")\n}\n```\n\nThe following tasks are provided by the plugin on each project module:\n| Task Name         | Description |\n|-------------------|-------------|\n| `graphAnalysis`   | Runs the graph analysis and generates the GraphML file for the module |\n| `graphComparison` | Compares two graph analysis GraphML files and highlights the changes |\n| `graphInspection` | Creates a report providing details into the project graph of an individual project module |\n| `graphValidation` | Performs a graph analysis and assert the graph validation rules have been adhered to |\n\nFor more details on each of these tasks, reference the following:\n- [Graph Analysis](docs/GraphAnalysis.md)\n- [Graph Inspection](docs/GraphInspection.md)\n- [Graph Comparison](docs/GraphComparison.md)\n- [Graph Validation](docs/GraphValidation.md)\n\n## Metrics Provided\n\nAlthough the plugin is designed to be extensible, it comes with a number of built-in metrics:\n\n| Metric ID               | Description                                                                                                                                                                      |\n|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `degree`                | The total number of incoming (dependents) and outgoing (dependencies) a project has                                                                                              |\n| `inDegree`              | The number of dependents which depend upon the project                                                                                                                           |\n| `outDegree`             | The number of dependencies which the project declares                                                                                                                            |\n| `height`                | The size of the longest path in the project's tree of dependencies                                                                                                               |\n| `networkAbove`          | The total number of dependant projects which depend upon the project.  This is useful to understand the number of projects impacted by a change to this project.                 |\n| `networkBelow`          | The total number of dependency projects which this project depends upon.  This is useful to understand the number of projects which would affect this project when changed.      |\n| `betweennessCentrality` | Calculates the [Betweenness Centrality](https://en.wikipedia.org/wiki/Betweenness_centrality) value for the project                                                              |\n| `expansionFactor`       | A synthetic metric that is the product of the `inDegree` and `networkBelow`.  This attempts to capture the relative impact a project has in expanding the overall project graph. |\n\n## Configuration\n\nThe plugin will provide utility in its default configuration.  However, the addition of\nproject-specific metrics and rules can greatly extend its capabilities!\n\nFor more information, please refer to the [Configuration](docs/Configuration.md) document.\n\n## Integrations\n\n### Metrics for Develocity\n\nOut-of-the-box, this plugin provides project graph information based upon the declared\nstructure of the project.  When working to improve build performance, the next questions\nthat naturally follow fall along the following lines:\n- How much build time does each project module contribute?\n- How many frequently are project modules built?\n\nTo answer these questions, the\n[Metrics for Develocity](https://github.com/eBay/metrics-for-develocity-plugin)\nplugin can be used to gather this information from a\n[Develocity](https://gradle.com/gradle-enterprise-solutions/)\nserver instance, layering this data into the project graph analysis performed by\nthis plugin.\n\nFor more information, see the\n[Project Cost Graph Analytics Integration](https://github.com/eBay/metrics-for-develocity-plugin/tree/main/src/main/kotlin/com/ebay/plugins/metrics/develocity/projectcost#project-cost-graph-analytics-integration)\ndocument.\n\n## Contributing\n\nContributions are welcome!  Please refer to the [CONTRIBUTING](CONTRIBUTING.md) document for\nguidelines on how to contribute.\n\n## Run Books\n\nThe following documents describe various processes needed for operating and/or maintaining\nthe plugin:\n- [Run Book: Release Process](docs/RunBook-ReleaseProcess.md)\n\n## License\n\nThis project is dual-licensed under the Eclipse Public License 2.0 and the Apache License\nVersion 2.0.\n\nSee [LICENSES](LICENSES.md) for more information.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febay%2Fgraph-analytics-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Febay%2Fgraph-analytics-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febay%2Fgraph-analytics-plugin/lists"}