Giter VIP home page Giter VIP logo

pinkpony's Introduction

PinkPony

Pink pony is an open-source software command-line application that suggests functional clusters based on the common changes on git. Functionally related files are grouped into the same cluster. In this way the tool can help to split a monolithic application into a set of microservices.

What changes together should be also together

Result

The application produces 2 files:

  • cluster.txt: contains clusters;
  • graphViz.dot: a .dot file to visualize the co-change graph.

Usage

To run the Pink pony application you have to download the recently released version.

Clustering algorithms options

  • mr: Markov Clustering is a hard clustering algorithm;
  • ch: Chinese Whispers is a hard clustering algorithm;
  • max: MaxMax is a soft clustering algorithm for undirected graphs;
  • watset: Watset is a local-global meta-algorithm for fuzzy graph clustering.

The implementation of the algorithms used from Watset project

Level of clustering

Depending on the investigation that you want to do, the application provides two options:

  • file : Suggests functional clusters on file level.

  • module : Suggests functional clusters on module level.

  • This will suggest functional clusters from files.

$ java -jar pinkpony.jar path\to\.git file max
  • This will suggest modules under the specific module
Example
input
moduleName
    file1
    file2
    ...
    fileN
output
    cluster1
        file1
        file3
    cluster2
        file6
        file89
        ...
    clusterN
        file2
        file15
$ java -jar pinkpony.jar path\to\.git file max moduleName
  • The following command will suggest new co-change modules from the submodules of mod1, mod2, mod3 with the Markov Clustering algorithm.
Example
input
mod1
    subMod1 
    sudMod2 
    subMod3 
mod2 
    subMod4 
    sudMod5 
mod3 
    subMod6 
    sudMod7 
    subMod8 
    subMod9 
 
output
 
cluster1        
    subMod3
    subMod9
    subMod8
cluster2
    subMod4
    subMod5
    subMod1
...
$ java -jar pinkpony.jar path\to\.git module mr mod1 mod1 mod2  

The Pink Pony application is a part of my thesis project.

pinkpony's People

Contributors

pavlmits avatar dependabot[bot] avatar arispoz avatar irinashcherbakova avatar niopas avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.