{"id":18026795,"url":"https://github.com/yegor256/volatility","last_synced_at":"2026-03-08T13:36:43.404Z","repository":{"id":4770366,"uuid":"5921613","full_name":"yegor256/volatility","owner":"yegor256","description":"The Calculator of the Source Code \"Volatility\" Metric","archived":false,"fork":false,"pushed_at":"2023-04-05T02:55:23.000Z","size":250,"stargazers_count":4,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-21T07:35:39.395Z","etag":null,"topics":["metrics","metrics-gathering","php","volatility"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yegor256.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2012-09-23T11:39:33.000Z","updated_at":"2023-06-03T08:42:40.000Z","dependencies_parsed_at":"2023-07-06T09:48:24.258Z","dependency_job_id":null,"html_url":"https://github.com/yegor256/volatility","commit_stats":{"total_commits":54,"total_committers":3,"mean_commits":18.0,"dds":0.5,"last_synced_commit":"46da210a0d94dc7e3880cee3f5e1d8f07b189034"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yegor256%2Fvolatility","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yegor256%2Fvolatility/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yegor256%2Fvolatility/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yegor256%2Fvolatility/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yegor256","download_url":"https://codeload.github.com/yegor256/volatility/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245764709,"owners_count":20668464,"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":["metrics","metrics-gathering","php","volatility"],"created_at":"2024-10-30T08:08:05.740Z","updated_at":"2026-03-08T13:36:38.362Z","avatar_url":"https://github.com/yegor256.png","language":"Ruby","funding_links":[],"categories":["\u003ca id=\"4d2a33083a894d6e6ef01b360929f30a\"\u003e\u003c/a\u003eVolatility"],"sub_categories":[],"readme":"[![EO principles respected here](https://www.elegantobjects.org/badge.svg)](https://www.elegantobjects.org)\n[![Managed by Zerocracy](https://www.0crat.com/badge/C3RFVLU72.svg)](https://www.0crat.com/p/C3RFVLU72)\n[![DevOps By Rultor.com](http://www.rultor.com/b/yegor256/volatility)](http://www.rultor.com/p/yegor256/volatility)\n[![We recommend RubyMine](https://www.elegantobjects.org/rubymine.svg)](https://www.jetbrains.com/ruby/)\n\n[![Build Status](https://travis-ci.org/yegor256/volatility.svg)](https://travis-ci.org/yegor256/volatility)\n[![Build status](https://ci.appveyor.com/api/projects/status/ndp6dbqajjgr7y7y?svg=true)](https://ci.appveyor.com/project/yegor256/volatility-jm2bc)\n[![PDD status](http://www.0pdd.com/svg?name=yegor256/volatility)](http://www.0pdd.com/p?name=yegor256/volatility)\n[![Gem Version](https://badge.fury.io/rb/volatility.svg)](http://badge.fury.io/rb/volatility)\n[![Maintainability](https://api.codeclimate.com/v1/badges/74c909f06d4afa0d8001/maintainability)](https://codeclimate.com/github/yegor256/volatility/maintainability)\n\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/takes/volatility/master/LICENSE.txt)\n[![Test Coverage](https://img.shields.io/codecov/c/github/yegor256/volatility.svg)](https://codecov.io/github/yegor256/volatility?branch=master)\n[![Hits-of-Code](https://hitsofcode.com/github/yegor256/volatility)](https://hitsofcode.com/view/github/yegor256/volatility)\n\nIt's an experimental way to calculate how \"volatile\" is a project\nsource code repository, by comparing the amount of dead code (rarely touched)\nwith the amount of actively modified one. More or less detailed theoretical summary\nis in [theory.pdf](https://github.com/yegor256/volatility/raw/master/theory.pdf).\n\nYou need to have Ruby 2.6+ installed. Then you install this tool:\n\n```bash\n$ gem install volatility\n```\n\nThen, you run it:\n\n```bash\n$ volatility --help\n```\n\n## How to contribute\n\nRead [these guidelines](https://www.yegor256.com/2014/04/15/github-guidelines.html).\nMake sure your build is green before you contribute\nyour pull request. You will need to have [Ruby](https://www.ruby-lang.org/en/) 2.3+ and\n[Bundler](https://bundler.io/) installed. Then:\n\n```\n$ bundle update\n$ bundle exec rake\n```\n\nIf it's clean and you don't see any error messages, submit your pull request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyegor256%2Fvolatility","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyegor256%2Fvolatility","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyegor256%2Fvolatility/lists"}