rm(list = ls())
seed <- 1
set.seed(seed)
require(kaiaulu)
require(visNetwork)
require(data.table)
require(stringi)
require(igraph)
require(gh)
require(yaml)
require(magrittr)
require(knitr)
tool <- yaml::read_yaml("../tools.yml")
#conf <- yaml::read_yaml("../conf/apr.yml")
conf <- yaml::read_yaml("../conf/alitheia_core.yml")
git_repo_path <- conf[["version_control"]][["log"]]
# Depends parameters
depends_jar_path <- tool[["depends"]]
language <- conf[["tool"]][["depends"]][["code_language"]]
keep_dependencies_type <- conf[["tool"]][["depends"]][["keep_dependencies_type"]]
# Filters
file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]]
substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]]
We can use the gh package with the language endpoint from Github to figure out what language a project has. Paste the project url below and run the code block.
project_github_url <- "https://github.com/apache/apr"
project_github_url <- stri_split_regex(project_github_url,pattern="/")[[1]]
owner <- project_github_url[length(project_github_url)-1]
repo <- project_github_url[length(project_github_url)]
language_distribution_byte <- unlist(gh("GET /repos/:owner/:repo/languages",owner=owner,repo=repo))
language_distribution_byte <- language_distribution_byte/sum(language_distribution_byte)
format(round(language_distribution_byte, 2), nsmall = 2)
Based on the most used language on the project, choose the parameter below for Depends. Accepted languages are: cpp, java, ruby, python, pom.
project_dependencies <- parse_dependencies(depends_jar_path,git_repo_path,language=language)
project_dependencies[["nodes"]] <- project_dependencies[["nodes"]] %>%
filter_by_file_extension(file_extensions,"filepath") %>%
filter_by_filepath_substring(substring_filepath,"filepath")
project_dependencies[["edgelist"]] <- project_dependencies[["edgelist"]] %>%
filter_by_file_extension(file_extensions,"src_filepath") %>%
filter_by_file_extension(file_extensions,"dest_filepath") %>%
filter_by_filepath_substring(substring_filepath,"src_filepath") %>%
filter_by_filepath_substring(substring_filepath,"dest_filepath")
project_file_network <- transform_dependencies_to_network(project_dependencies,
weight_types = keep_dependencies_type)
kable(head(project_dependencies[["edgelist"]],10))
| src_filepath | dest_filepath | Import | Return | Use | Implement | Parameter | Contain | Call | Create | Extend | Annotation | Throw | Cast |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| alitheia/core/src/main/java/eu/sqooss/impl/service/tds/diff/DiffChunkImpl.java | alitheia/core/src/main/java/eu/sqooss/service/tds/DiffChunk.java | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| alitheia/core/src/main/java/eu/sqooss/impl/service/db/DBServiceImpl.java | alitheia/core/src/main/java/eu/sqooss/service/util/URIUtills.java | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| alitheia/core/src/main/java/eu/sqooss/service/scheduler/Job.java | alitheia/core/src/main/java/eu/sqooss/service/util/Pair.java | 1 | 0 | 11 | 0 | 3 | 5 | 1 | 1 | 0 | 0 | 0 | 0 |
| alitheia/core/src/main/java/eu/sqooss/service/db/ProjectFileMeasurement.java | alitheia/core/src/main/java/eu/sqooss/service/db/MetricMeasurement.java | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 1 | 0 | 0 | 0 |
| alitheia/core/src/main/java/eu/sqooss/impl/service/webadmin/AbstractView.java | alitheia/core/src/main/java/eu/sqooss/service/updater/UpdaterService.java | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| plug-ins/svn/src/main/java/eu/sqooss/plugins/updater/svn/SVNUpdaterImpl.java | alitheia/core/src/main/java/eu/sqooss/service/updater/Updater.java | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 |
| plug-ins/svn/src/main/java/eu/sqooss/plugins/updater/svn/SVNUpdaterImpl.java | alitheia/core/src/main/java/eu/sqooss/service/updater/UpdaterService.java | 1 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| alitheia/core/src/main/java/eu/sqooss/service/db/ProjectFileMeasurement.java | alitheia/core/src/main/java/eu/sqooss/service/db/ProjectFile.java | 0 | 1 | 1 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| alitheia/core/src/main/java/eu/sqooss/service/db/StoredProjectConfig.java | alitheia/core/src/main/java/eu/sqooss/service/db/StoredProject.java | 0 | 1 | 2 | 0 | 3 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| plug-ins/svn/src/main/java/eu/sqooss/plugins/updater/svn/SVNUpdaterImpl.java | alitheia/core/src/main/java/eu/sqooss/service/updater/MetadataUpdater.java | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
project_file_network <- igraph::graph_from_data_frame(d=project_file_network[["edgelist"]],
directed = TRUE,
vertices = project_file_network[["nodes"]])
visIgraph(project_file_network,randomSeed = 1)