Classification of APIs by Hierarchical Clustering
- The tool folder contains the web application and the clustering tool.
- The dataset folder contains the full data of paper (except some pom related files due to size).
- The dataset contains the API evolution plots in the evolution folder (e.g., com.google.guava-guava.png).
- The dataset contains the feature correlations in the evaluation folder (e.g., cbox_analytical_granularity.png).
- The dataset contains the curated API suite.
- Create a file "config.properties" in the project org.softlang.dscor and a "config.py" in the project org.softlang.dscorpython with the following entries:
temp=<filepath to a temporary folder>
dataset=<filepath to a dataset folder>
- (Optional)
login_git=<github-username>
- (Optional)
password_git=<github-password>
(only needed for the Git API) - Run
org.softlang.dscor.process.Poms
(Java/Scala) to mine the pom list from Github. - Run
org.softlang.dscor.process.Counts
(Java/Scala) to extract the dependencies counts of each file contained in the pom list. - Run
extended_count
(Python) to create append the overall API count. - Run
org.softlang.dscor.process.Metadata
(Java/Scala) to add metadata like Categories mined from Maven. - Run
org.softlang.dscor.process.VersionsDelta
(Java/Scala) produces the version specific history downloading and analyzing the API JARs. - Run
evolution
(Python) to create the evolution plots and the curated suite baseline. - Run
evolution
(Python) to create the evolution plots and the curated suite baseline. - Run
org.softlang.dscor.process.APIClustering
(Java/Scala) to execute the clustering configuration defined in the current feature model located in the package org.softlang.dscor.featuremodel (add the VM Arguments -Xss and -Xmx depending on your system, e.g., -Xss4m -Xmx10000m). - Run
linearresults
(Python) andevaluation
(Python) to create the feature specific correlation plots.
- Start the
server
(Javascript) in the webapiclusters project (replace the clustering results in the data folder if necessary). - Start the web-application (NPM) in the webapiclusters project.