diff --git a/DESCRIPTION b/DESCRIPTION index f693b7a6..7c257f6b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -20,7 +20,9 @@ Authors@R: c( person('Nicole', 'Hoess', role = c('ctb')), person('Anthony', 'Lau', role = c('ctb')), person('Sean', 'Sunoo', role = c('ctb')), - person('Ian Jaymes', 'Iwata', role= c('ctb')) + person('Ian Jaymes', 'Iwata', role= c('ctb')), + person('Nicholas', 'Beydler', role = c('ctb')), + person('Mark', 'Burgess', role = c('ctb')) ) Maintainer: Carlos Paradis License: MPL-2.0 | file LICENSE diff --git a/NAMESPACE b/NAMESPACE index 2e3b17bf..91ba6dfc 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -48,7 +48,57 @@ export(filter_by_file_extension) export(filter_by_filepath_substring) export(filter_by_last_files_change) export(format_name_email) +export(get_bugzilla_issue_comment_path) +export(get_bugzilla_issue_path) +export(get_bugzilla_project_key) +export(get_cveid_regex) export(get_date_from_commit_hash) +export(get_depends_code_language) +export(get_depends_keep_dependencies_type) +export(get_dv8_flaws_params) +export(get_dv8_folder_path) +export(get_enumeration_commits) +export(get_file_extensions) +export(get_filter_commit_size) +export(get_git_branches) +export(get_git_repo_path) +export(get_github_commit_path) +export(get_github_issue_event_path) +export(get_github_issue_or_pr_comment_path) +export(get_github_issue_path) +export(get_github_issue_search_path) +export(get_github_keys) +export(get_github_owner) +export(get_github_pull_request_path) +export(get_github_repo) +export(get_issue_id_regex) +export(get_jira_domain) +export(get_jira_issues_comments_path) +export(get_jira_issues_path) +export(get_jira_keys) +export(get_jira_project_key_name) +export(get_mbox_domain) +export(get_mbox_input_file) +export(get_mbox_key_indexes) +export(get_mbox_path) +export(get_nvdfeed_folder_path) +export(get_pattern4_filepath) +export(get_pattern4_folder_path) +export(get_pipermail_domain) +export(get_pipermail_input_file) +export(get_pipermail_path) +export(get_srcml_filepath) +export(get_substring_filepath) +export(get_tool_project) +export(get_topics) +export(get_uctags_line_types) +export(get_understand_code_language) +export(get_understand_keep_dependencies_type) +export(get_understand_output_path) +export(get_understand_project_path) +export(get_window_end_commit) +export(get_window_size) +export(get_window_start_commit) export(git_add) export(git_blame) export(git_checkout) @@ -104,12 +154,22 @@ export(motif_factory_anti_triangle) export(motif_factory_square) export(motif_factory_triangle) export(normalized_levenshtein) +export(openhub_api_analyses) +export(openhub_api_iterate_pages) +export(openhub_api_organizations) +export(openhub_api_portfolio_projects) +export(openhub_api_projects) +export(openhub_parse_analyses) +export(openhub_parse_organizations) +export(openhub_parse_portfolio_projects) +export(openhub_parse_projects) export(parse_bugzilla_perceval_rest_issue_comments) export(parse_bugzilla_perceval_traditional_issue_comments) export(parse_bugzilla_rest_comments) export(parse_bugzilla_rest_issues) export(parse_bugzilla_rest_issues_comments) export(parse_commit_message_id) +export(parse_config) export(parse_dependencies) export(parse_dv8_architectural_flaws) export(parse_dv8_clusters) diff --git a/NEWS.md b/NEWS.md index 5da1b52c..7877d397 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,7 @@ __kaiaulu 0.0.0.9700 (in development)__ ### NEW FEATURES + * `config.R` now contains a set of getter functions used to centralize the gathering of configuration data and these getter functions are used to refactor configuration file information gathering. For example, loading configuration file information with variable assignment is as follows `git_repo_path <- config_file[["version_control"]][["log"]]` but refactoring with a config.R getter function becomes `git_repo_path <- get_git_repo_path(config_file)`. [#230](https://github.com/sailuh/kaiaulu/issues/230) * `refresh_jira_issues()` had been added. It is a wrapper function for the previous downloader and downloads only issues greater than the greatest key already downloaded. [#275](https://github.com/sailuh/kaiaulu/issues/275) * `download_jira_issues()`, `download_jira_issues_by_issue_key()`, and `download_jira_issues_by_date()` has been added. This allows for downloading of Jira issues without the use of JirAgileR and specification of issue Id and created ranges. It also interacts with `parse_jira_latest_date()` to implement a refresh capability. [#275](https://github.com/sailuh/kaiaulu/issues/275) * `make_jira_issue()` and `make_jira_issue_tracker()` no longer create fake issues following JirAgileR format, but instead the raw data obtained from JIRA API. This is compatible with the new parser function for JIRA. [#277](https://github.com/sailuh/kaiaulu/issues/277) @@ -46,6 +47,7 @@ __kaiaulu 0.0.0.9700 (in development)__ * graph_to_dsmj is now vectorized, increasing performance [#209](https://github.com/sailuh/kaiaulu/issues/209) * Bugzilla API now allows for output file to be specified. [#202](https://github.com/sailuh/kaiaulu/issues/202) * Paired parser functions now expects a filepath instead of a json string character. [#202](https://github.com/sailuh/kaiaulu/issues/202) + * refactored file organization in config files for clearer hierarchy. [#230](https://github.com/sailuh/kaiaulu/issues/230) ### BUG FIXES @@ -222,6 +224,7 @@ __kaiaulu [0.0.0.9000](https://github.com/sailuh/kaiaulu/milestone/1) (04/24/202 * lubridate dependency was removed, this package now uses base R POSIXct to handle dates. [#13](https://github.com/sailuh/kaiaulu/issues/13) * stringr was replaced by stringi to respect license terms of this and stringr packages. [#21](https://github.com/sailuh/kaiaulu/issues/21) + ### BUG FIXES * non defined function parameter on mbox has been fixed. [#25](https://github.com/sailuh/kaiaulu/issues/25) diff --git a/R/config.R b/R/config.R new file mode 100644 index 00000000..066c74ac --- /dev/null +++ b/R/config.R @@ -0,0 +1,1509 @@ +# Kaiaulu - https://github.com/sailuh/kaiaulu +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. + + +########## OpenHub Functions / Ohloh API Interfacing Functions ########## + +#' placeholder +#' +#' @description placeholder +#' +#' @param token placeholder +#' @param openhub_api_parameters placeholder +#' @param page placeholder +#' @return placeholder +#' @export +openhub_api_organizations <- function(token, openhub_api_parameters, page=1) { + + organization_name <- openhub_api_parameters[["organization_name"]] + + organizations_collection_site = "https://www.openhub.net/orgs.xml" + + http_get_request <- paste0(organizations_collection_site, "?api_key=", token, "&query=", URLencode(organization_name), "&page=", page) + + api_response <- httr::GET(http_get_request) + + return(api_response) +} + +#' placeholder +#' +#' @description placeholder +#' +#' @param token placeholder +#' @param openhub_api_parameters placeholder +#' @param page placeholder +#' @return placeholder +#' @export +openhub_api_portfolio_projects <- function(token, openhub_api_parameters, page=1) { + + portfolio_project_site <- openhub_api_parameters[["portfolio_project_site"]] + + http_get_request <- paste0(portfolio_project_site, "?api_key=", token, "&page=", page) + + api_response <- httr::GET(http_get_request) + + return(api_response) +} + +#' placeholder +#' +#' @description placeholder +#' +#' @param token placeholder +#' @param openhub_api_parameters placeholder +#' @param page placeholder +#' @return placeholder +#' @export +openhub_api_projects <- function(token, openhub_api_parameters, page=1) { + + project_collection_site = "https://www.openhub.net/p.xml" + + project_name <- openhub_api_parameters[["project_name"]] + + http_get_request <- paste0(project_collection_site, "?api_key=", token, "&query=", URLencode(project_name), "&page=", page) + + api_response <- httr::GET(http_get_request) + + return(api_response) +} + +#' placeholder +#' +#' @description placeholder +#' +#' @param token placeholder +#' @param openhub_api_parameters placeholder +#' @param page placeholder +#' @return placeholder +#' @export +openhub_api_analyses <- function(token, openhub_api_parameters, page=1) { + + analysis_collection_site_start = "https://www.openhub.net/p/" + + analysis_collection_site_end = "/analyses/latest.xml" + + project_id <- openhub_api_parameters[["project_id"]] + + http_get_request <- paste0(analysis_collection_site_start, URLencode(project_id), analysis_collection_site_end, "?api_key=", token, "&page=", page) + + api_response <- httr::GET(http_get_request) + + return(api_response) +} + +#' placeholder +#' +#' @description placeholder +#' +#' @param api_responses placeholder +#' @param openhub_api_parameters placeholder +#' @return placeholder +#' @export +openhub_parse_organizations <- function(api_responses, openhub_api_parameters) { + organization_name <- openhub_api_parameters[["organization_name"]] + parse_response <- function(api_response) { + #pages <- NULL # maybe have openhub_api_iterate_pages() handle this + #matchFound <- FALSE # maybe have openhub_api_iterate_pages() handle this + xmlDoc <- XML::xmlParse(api_response, validate=F) + root <- XML::xmlRoot(xmlDoc) + status <- XML::xmlValue(root[[1]]) # the value of + itemsReturned <- XML::xmlValue(root[[2]]) + itemsAvailable <- XML::xmlValue(root[[3]]) + returnItems <- root[[5]] # + parsed_response <- list() + if (status == "success") { + for (i in 1:itemsReturned) { + if (XML::xmlValue(returnItems[[i]][[1]]) == organization_name) { + parsed_response[["name"]] <- append(parsed_response[["name"]], XML::xmlValue(returnItems[[i]][[1]])) # means (i-th org indexed) + parsed_response[["html_url_projects"]] <- append(parsed_response[["html_url_projects"]], paste0(XML::xmlValue(returnItems[[i]][[3]]), "/projects.xml")) # grab (i-th org indexed) + break + } + } + } else { + warning(status) # prints the status warning message + } + + parsed_response <- as.data.table(parsed_response) + + return(parsed_response) + } + return(rbindlist(lapply(api_responses,parse_response),fill=TRUE)) +} + +#' placeholder +#' +#' @description placeholder +#' +#' @param api_responses placeholder +#' @param openhub_api_parameters placeholder +#' @return placeholder +#' @export +openhub_parse_portfolio_projects <- function(api_responses, openhub_api_parameters) { + language <- openhub_api_parameters[["language"]] + parse_response <- function(api_response) { + xmlDoc <- XML::xmlParse(api_response, validate=F) + root <- XML::xmlRoot(xmlDoc) + itemsReturned <- XML::xmlValue(root[[2]]) + itemsAvailable <- XML::xmlValue(root[[3]]) + itemsFirstPosition <- XML::xmlValue(root[[4]]) + status <- XML::xmlValue(root[[1]]) # the value of + returnItems <- root[[5]] # + parsed_response <- list() + if (status == "success") { + for (i in 1:itemsReturned) { + if (XML::xmlValue(returnItems[[1]][[i]][[3]]) == language) { + #parsed_response[["project_number_in_list"]] <- append(parsed_response[["project_number_in_list"]] ,as.numeric(itemsFirstPosition)+i) + parsed_response[["name"]] <- append(parsed_response[["name"]], XML::xmlValue(returnItems[[1]][[i]][[1]])) # means + parsed_response[["language"]] <- append(parsed_response[["language"]], XML::xmlValue(returnItems[[1]][[i]][[3]])) # means + parsed_response[["activity"]] <- append(parsed_response[["activity"]], XML::xmlValue(returnItems[[1]][[i]][[2]])) # means + } + } + } else { + warning(status) # prints the status warning message + } + + parsed_response <- as.data.table(parsed_response) + + return(parsed_response) + } + + return(rbindlist(lapply(api_responses,parse_response),fill=TRUE)) +} + +#' placeholder +#' +#' @description placeholder +#' +#' @param api_responses placeholder +#' @param openhub_api_parameters placeholder +#' @return placeholder +#' @export +openhub_parse_projects <- function(api_responses, openhub_api_parameters) { + project_name <- openhub_api_parameters[["project_name"]] + parse_response <- function(api_response) { + xmlDoc <- XML::xmlParse(api_response, validate=F) + root <- XML::xmlRoot(xmlDoc) + itemsReturned <- XML::xmlValue(root[[2]]) + itemsAvailable <- XML::xmlValue(root[[3]]) + itemsFirstPosition <- XML::xmlValue(root[[4]]) + status <- XML::xmlValue(root[[1]]) # the value of + returnItems <- root[[5]] # + parsed_response <- list() + if (status == "success") { + for (i in 1:itemsReturned) { + if (XML::xmlValue(returnItems[[i]][[2]]) == project_name) { + parsed_response[["name"]] <- append(parsed_response[["name"]], XML::xmlValue(returnItems[[i]][[2]])) # means + parsed_response[["id"]] <- append(parsed_response[["id"]], XML::xmlValue(returnItems[[i]][[1]])) # means + break + } + } + } else { + warning(status) # prints the status warning message + } + + parsed_response <- as.data.table(parsed_response) + + return(parsed_response) + } + + return(rbindlist(lapply(api_responses,parse_response),fill=TRUE)) +} + +#' placeholder +#' +#' @description placeholder +#' +#' @param api_responses placeholder +#' @return placeholder +#' @export +openhub_parse_analyses <- function(api_responses) { + parse_response <- function(api_response) { + xmlDoc <- XML::xmlParse(api_response, validate=F) + root <- XML::xmlRoot(xmlDoc) + status <- XML::xmlValue(root[[1]]) # the value of + returnItems <- root[[2]] # + parsed_response <- list() + if (status == "success") { + parsed_response[["id"]] <- append(parsed_response[["id"]], XML::xmlValue(returnItems[[1]][[3]])) # primary key link to other data tables that possess the "id" key + parsed_response[["twelve_month_contributor_count"]] <- append(parsed_response[["twelve_month_contributor_count"]], XML::xmlValue(returnItems[[1]][[8]])) # means + parsed_response[["total_contributor_count"]] <- append(parsed_response[["total_contributor_count"]], XML::xmlValue(returnItems[[1]][[9]])) # means + parsed_response[["twelve_month_commit_count"]] <- append(parsed_response[["twelve_month_commit_count"]], XML::xmlValue(returnItems[[1]][[10]])) # means + parsed_response[["total_commit_count"]] <- append(parsed_response[["total_commit_count"]], XML::xmlValue(returnItems[[1]][[11]])) # means + parsed_response[["total_code_lines"]] <- append(parsed_response[["total_code_lines"]], XML::xmlValue(returnItems[[1]][[12]])) # means + } else { + warning(status) # prints the status warning message + } + + parsed_response <- as.data.table(parsed_response) + + return(parsed_response) + } + + return(rbindlist(lapply(api_responses,parse_response),fill=TRUE)) +} + +#' placeholder +#' +#' @description placeholder +#' +#' @param token placeholder +#' @param openhub_api_function placeholder +#' @param openhub_api_parameters placeholder +#' @param max_pages placeholder +#' @return placeholder +#' @export +openhub_api_iterate_pages <- function(token, openhub_api_function, openhub_api_parameters, max_pages=NULL) { + initial_api_response <- openhub_api_function(token, openhub_api_parameters) + #print(initial_api_response) + initialXmlDoc <- XML::xmlParse(initial_api_response, validate=F) + initialRoot <- XML::xmlRoot(initialXmlDoc) + initialStatus <- XML::xmlValue(initialRoot[[1]]) # the value of + print(paste0("Status: ", initialStatus)) + api_responses <- list() + + if (initialStatus == "success") { + maxPageCount <- 1 + initialItemsReturned <- XML::xmlValue(initialRoot[[2]]) + initialItemsAvailable <- XML::xmlValue(initialRoot[[3]]) + if (!is.na(initialItemsAvailable)) { + print(paste0("Items per page / Available Items: ", initialItemsAvailable, " / ", initialItemsReturned)) + maxPageCount <- ceiling(as.numeric(initialItemsAvailable)/as.numeric(initialItemsReturned)) # If the requested XML file returned successfully, but is only one page with one item, then its maxPageCount is set to 1. + } + print(paste0("maxPageCount is: ", maxPageCount)) + + if (!is.nan(maxPageCount)){ + if (!is.null(max_pages)) { + if (max_pages > maxPageCount) { + warning(paste0("max_pages is greater than the maximum number of available pages: requesting maximum number of pages possible (", maxPageCount, ")" )) + } else { + maxPageCount <- max_pages + } + } + api_responses[[1]] <- initial_api_response + if (maxPageCount > 1) { + for (page in 2:maxPageCount) { + api_responses[[page]] <- openhub_api_function(token, openhub_api_parameters, page) # gets http request for each response and puts into list + } + } + } else { + warning("No items available in the return request.") + } + } else { + warning(initialStatus) # prints the status warning message + } + + return(api_responses) +} + +########## Configuration File Parser Functions ########## + +#' Returns the parsed configuration file (.yml). +#' +#' @description The input file is expected to be in the .yml format. +#' The function returns a parsed version of the input .yml file, and it will +#' inform the user if the input .yml file path does not exist. The contents +#' of the input .yml file may contain machine-dependent paths that may need to +#' be modified by the user. +#' +#' @param config_path The path of the config file from the kaiaulu directory (e.g. "conf/kaiaulu.yml"). +#' @return The parsed config file whose path is specified by `config_path`. +#' @export +parse_config <- function(config_path) { + + conf <- yaml::read_yaml(config_path) + + if (is.null(conf)) { + warning("Path does not exist.") + } + + return(conf) +} + +##### Git Getter Functions ##### + +#' Returns the path to the .git of the project repository that is being analyzed. +#' +#' @description This function returns the specific path to the .git of the +#' project repository that is being analyzed specified in the input parameter +#' `config_file`. The input, `config_file` must be a parsed configuration file. +#' The function will inform the user if the .git path of the project repository +#' exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The local git repository path specified in `config_file`. +#' @export +get_git_repo_path <- function(config_file) { + + git_repo_path <- config_file[["version_control"]][["log"]] + + if (is.null(git_repo_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(git_repo_path) +} + +#' Returns the list of git branches used for analysis in the current project. +#' +#' @description This function returns a list of the git branches used for +#' analysis in the current project specified in the input parameter +#' `config_file`. The input, `config_file` must be a parsed configuration file. +#' The function will inform the user if the list of branches to be analyzed +#' exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The list of git branches. +#' @export +get_git_branches <- function(config_file) { + + git_branch <- config_file[["version_control"]][["branch"]] + + if (is.null(git_branch)) { + warning("Attribute does not exist in the configuration file.") + } + + return(git_branch) +} + + + +##### Mailing List Functions Start ##### + +#' Returns the list of mailing list mod mbox project keys. +#' +#' @description This function returns the list of mailing list mod mbox project +#' keys, that is specified in the input parameter `config_file`. The input, +#' `config_file` must be a parsed configuration file. The function will inform +#' the user if the project keys exist in the parsed configuration +#' file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The list of mod mbox mailing list keys. +#' @export +get_mbox_key_indexes <- function(config_file) { + + mbox_keys <- config_file[["mailing_list"]][["mod_mbox"]] + + if (is.null(mbox_keys)) { + warning("Attribute does not exist in the configuration file.") + } + + return(mbox_keys) +} + +#' Returns the URL to the archives for mbox for a specific project key. +#' +#' @description This function returns the URL to the archives for a specific +#' project key, `project_key_index`, that is specified in the input parameter +#' `config_file`. The input, `config_file` must be a parsed configuration file. +#' The function will inform the user if the specific URL to the archives for +#' mbox exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The URL of the mbox mailing list archive for project specified by key `project_key_index`. +#' @export +get_mbox_domain <- function(config_file, project_key_index) { + + mbox_url <- config_file[["mailing_list"]][["mod_mbox"]][[project_key_index]][["mailing_list"]] + + if (is.null(mbox_url)) { + warning("Attribute does not exist in the configuration file.") + } + + return(mbox_url) +} + +#' Returns the local folder path to store mbox data for a specific project key. +#' +#' @description This function returns the local folder path used to store +#' mbox data for a specific project key, `project_key_index`, that is specified +#' in the input parameter `config_file`. The input, `config_file` must be a +#' parsed configuration file. The function will inform the user if the specific +#' local folder path to store mbox data exists in the parsed configuration +#' file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The local mbox path for project specified by key `project_key_index`. +#' @export +get_mbox_path <- function(config_file, project_key_index) { + + mbox_path <- config_file[["mailing_list"]][["mod_mbox"]][[project_key_index]][["save_folder_path"]] + + if (is.null(mbox_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(mbox_path) +} + +#' Returns the local input file for mbox for a specific project key. +#' +#' @description This function returns the local file used for input for +#' mbox for a specific project key, `project_key_index`, that is specified +#' in the input parameter `config_file`. The input, `config_file` must be a +#' parsed configuration file. The function will inform the user if the specific +#' local input file path for mbox exists in the parsed configuration file, +#' `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The local input file mbox path for project specified by key `project_key_index`. +#' @export +get_mbox_input_file <- function(config_file, project_key_index) { + + mbox_input <- config_file[["mailing_list"]][["mod_mbox"]][[project_key_index]][["mbox_file_path"]] + + if (is.null(mbox_input)) { + warning("Attribute does not exist in the configuration file.") + } + + return(mbox_input) +} + +#' Returns the URL to the archives for pipermail for a specific project key. +#' +#' @description This function returns the URL to the archives for a specific +#' project key, `project_key_index`, that is specified in the input parameter +#' `config_file`. The input, `config_file` must be a parsed configuration file. +#' The function will inform the user if the specific URL to the archives for +#' pipermail exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The URL of the pipermail mailing list archive for project specified by key `project_key_index`. +#' @export +get_pipermail_domain <- function(config_file, project_key_index) { + + pipermail_url <- config_file[["mailing_list"]][["pipermail"]][[project_key_index]][["mailing_list"]] + + if (is.null(pipermail_url)) { + warning("Attribute does not exist in the configuration file.") + } + + return(pipermail_url) +} + +#' Returns the local folder path to store pipermail data for a specific project key. +#' +#' @description This function returns the local folder path used to store +#' pipermail data for a specific project key, `project_key_index`, that is specified +#' in the input parameter `config_file`. The input, `config_file` must be a +#' parsed configuration file. The function will inform the user if the specific +#' local folder path to store pipermail data exists in the parsed configuration +#' file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The local pipermail path for project specified by key `project_key_index`. +#' @export +get_pipermail_path <- function(config_file, project_key_index) { + + pipermail_path <- config_file[["mailing_list"]][["pipermail"]][[project_key_index]][["save_folder_path"]] + + if (is.null(pipermail_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(pipermail_path) +} + +#' Returns the local input file for pipermail for a specific project key. +#' +#' @description This function returns the local file used for input for +#' pipermail for a specific project key, `project_key_index`, that is specified +#' in the input parameter `config_file`. The input, `config_file` must be a +#' parsed configuration file. The function will inform the user if the specific +#' local input file path for pipermail exists in the parsed configuration file, +#' `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The local input file pipermail path for project specified by key `project_key_index`. +#' @export +get_pipermail_input_file <- function(config_file, project_key_index) { + + pipermail_input <- config_file[["mailing_list"]][["pipermail"]][[project_key_index]][["mbox_file_path"]] + + if (is.null(pipermail_input)) { + warning("Attribute does not exist in the configuration file.") + } + + return(pipermail_input) +} + +##### Mailing List Functions End ##### + +##### Issue Tracker Functions Start ##### + +##### Jira Functions ##### + +#' Returns the list of Jira issue tracker project keys. +#' +#' @description This function returns the list of Jira issue tracker project +#' keys, that is specified in the input parameter `config_file`. The input, +#' `config_file` must be a parsed configuration file. The function will inform +#' the user if the project keys exist in the parsed configuration +#' file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The list of Jira issue tracker project keys. +#' @export +get_jira_keys <- function(config_file) { + + jira_key <- config_file[["issue_tracker"]][["jira"]] + + if (is.null(jira_key)) { + warning("Attribute does not exist in the configuration file.") + } + + return(jira_key) +} + +#' Returns the Jira project domain for a specific project key. +#' +#' @description This function returns the Jira project domain for a specific +#' project key, that is specified in the input parameter `config_file`. +#' The input, `config_file` must be a parsed configuration file. The function +#' will inform the user if the domain exists in the parsed configuration file, +#' `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The Jira domain for project specified by key `project_key_index`. +#' @export +get_jira_domain <- function(config_file, project_key_index) { + + domain <- config_file[["issue_tracker"]][["jira"]][[project_key_index]][["domain"]] + + if (is.null(domain)) { + warning("Attribute does not exist in the configuration file.") + } + + return(domain) +} + +#' Returns the name of the Jira project key for a specific project key. +#' +#' @description This function returns the Jira project key name for a specific +#' project key, that is specified in the input parameter `config_file`. +#' The input, `config_file` must be a parsed configuration file. The function +#' will inform the user if the project key name exists in the parsed +#' configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The Jira project key name for project specified by key `project_key_index`. +#' @export +get_jira_project_key_name <- function(config_file, project_key_index) { + + name <- config_file[["issue_tracker"]][["jira"]][[project_key_index]][["project_key"]] + + if (is.null(name)) { + warning("Attribute does not exist in the configuration file.") + } + + return(name) +} + +#' Returns the local folder path for Jira issues for a specific project key. +#' +#' @description This function returns the folder path for Jira issues for a +#' specific project key, that is specified in the input parameter `config_file`. +#' The input, `config_file` must be a parsed configuration file. The function +#' will inform the user if the folder path for Jira issues exists in the parsed +#' configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The Jira issue folder path for project specified by key `project_key_index`. +#' @export +get_jira_issues_path <- function(config_file, project_key_index) { + + jira_issues_path <- config_file[["issue_tracker"]][["jira"]][[project_key_index]][["issues"]] + + if (is.null(jira_issues_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(jira_issues_path) +} + +#' Returns the local folder path for Jira issue comments for a specific +#' project key. +#' +#' @description This function returns the local folder path for Jira issue +#' comments for a specific project key, that is specified in the input +#' parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the local folder +#' path for the comments exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The folder path for Jira issue comments for project specified by key `project_key_index`. +#' @export +get_jira_issues_comments_path <- function(config_file, project_key_index) { + + jira_issue_comments_path <- config_file[["issue_tracker"]][["jira"]][[project_key_index]][["issue_comments"]] + + if (is.null(jira_issue_comments_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(jira_issue_comments_path) +} + +##### Github Functions ##### + +#' Returns the list of GitHub issue tracker project keys. +#' +#' @description This function returns the list of GitHub issue tracker project +#' keys, that is specified in the input parameter `config_file`. The input, +#' `config_file` must be a parsed configuration file. The function will inform +#' the user if the project keys exist in the parsed configuration +#' file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The list of GitHub issue tracker project keys. +#' @export +get_github_keys <- function(config_file) { + + keys <- config_file[["issue_tracker"]][["github"]] + + if (is.null(keys)) { + warning("Attribute does not exist in the configuration file.") + } + + return(keys) +} + +#' Returns the owner for a GitHub repository for a specific project key. +#' +#' @description This function returns the owner for a GitHub repository for a +#' specific project key, that is specified in the input parameter `config_file`. +#' The input, `config_file` must be a parsed configuration file. The function +#' will inform the user if the owner for the GitHub repository exists in the +#' parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The GitHub project owner name for project specified by key `project_key_index`. +#' @export +get_github_owner <- function(config_file, project_key_index) { + + owner <- config_file[["issue_tracker"]][["github"]][[project_key_index]][["owner"]] + + if (is.null(owner)) { + warning("Attribute does not exist in the configuration file.") + } + + return(owner) +} + +#' Returns the name of the GitHub repository for a specific project key. +#' +#' @description This function returns the name of the GitHub repository for a +#' specific project key, that is specified in the input parameter `config_file`. +#' The input, `config_file` must be a parsed configuration file. The function +#' will inform the user if the name of the GitHub repository exists in the +#' parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The name of the GitHub repository for project specified by key `project_key_index`. +#' @export +get_github_repo <- function(config_file, project_key_index) { + + repo <- config_file[["issue_tracker"]][["github"]][[project_key_index]][["repo"]] + + if (is.null(repo)) { + warning("Attribute does not exist in the configuration file.") + } + + return(repo) +} + +#' Returns the local folder path for GitHub issues for a specific project key. +#' +#' @description This function returns the local folder path for GitHub issues +#' for a specific project key, that is specified in the input parameter +#' `config_file`. The input, `config_file` must be a parsed configuration file. +#' The function will inform the user if the folder path for GitHub issues exists +#' in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The local folder path for GitHub issues for project specified by key `project_key_index`. +#' @export +get_github_issue_path <- function(config_file, project_key_index) { + + issue_path <- config_file[["issue_tracker"]][["github"]][[project_key_index]][["issue"]] + + if (is.null(issue_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(issue_path) +} + +#' Returns the local folder path for GitHub Issue or Pull Request comments for +#' a specific project key. +#' +#' @description This function returns the local folder path for GitHub Issue or +#' Pull Request comments for a specific project key, that is specified in the +#' input parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the local folder +#' path for the comments exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The local folder path for GitHub Issues or PR comments for project specified by key `project_key_index`. +#' @export +get_github_issue_or_pr_comment_path <- function(config_file, project_key_index) { + + issue_or_pr_comment_path <- config_file[["issue_tracker"]][["github"]][[project_key_index]][["issue_or_pr_comment"]] + + if (is.null(issue_or_pr_comment_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(issue_or_pr_comment_path) +} + +#' Returns the local folder path for GitHub Issue Searches for a specific +#' project key. +#' +#' @description This function returns the local folder path for GitHub Issue +#' Searches for a specific project key, that is specified in the input parameter +#' `config_file`. The input, `config_file` must be a parsed configuration file. +#' The function will inform the user if the local folder path for the issue +#' searches exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The local folder path for GitHub issue search for project specified by key `project_key_index`. +#' @export +get_github_issue_search_path <- function(config_file, project_key_index) { + + issue_search_path <- config_file[["issue_tracker"]][["github"]][[project_key_index]][["issue_search"]] + + if (is.null(issue_search_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(issue_search_path) +} + +#' Returns the local folder path for GitHub Pull Requests for a specific +#' project key. +#' +#' @description This function returns the local folder path for GitHub Pull +#' Requests for a specific project key, that is specified in the input +#' parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the local folder +#' path for the pull requests exists in the parsed configuration file, +#' `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The local folder path for GitHub pull requests for project specified by key `project_key_index`. +#' @export +get_github_pull_request_path <- function(config_file, project_key_index) { + + pull_request_path <- config_file[["issue_tracker"]][["github"]][[project_key_index]][["pull_request"]] + + if (is.null(pull_request_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(pull_request_path) +} + +#' Returns the local folder path for GitHub issue events for a specific project +#' key. +#' +#' @description This function returns the local folder path for GitHub issue +#' events for a specific project key, that is specified in the input +#' parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the local folder +#' path for the issue events exists in the parsed configuration file, +#' `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The local folder path for GitHub issue events for project specified by key `project_key_index`. +#' @export +get_github_issue_event_path <- function(config_file, project_key_index) { + + issue_event_path <- config_file[["issue_tracker"]][["github"]][[project_key_index]][["issue_event"]] + + if (is.null(issue_event_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(issue_event_path) +} + +#' Returns the local folder path for GitHub commits for a specific project key. +#' +#' @description This function returns the local folder path for GitHub commits +#' for a specific project key, that is specified in the input +#' parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the local folder +#' path for the commits exists in the parsed configuration file, +#' `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The local folder path for GitHub commits for project specified by key `project_key_index`. +#' @export +get_github_commit_path <- function(config_file, project_key_index) { + + commit_path <- config_file[["issue_tracker"]][["github"]][[project_key_index]][["commit"]] + + if (is.null(commit_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(commit_path) +} + +### Bugzilla Functions ##### + +#' Returns the name of the Bugzilla project key for a specific project key index. +#' +#' @description This function returns the name of the Bugzilla project key for +#' a specific project key, that is specified in the input parameter +#' `config_file`. The input, `config_file` must be a parsed configuration file. +#' The function will inform the user if the name of the Bugzilla project key +#' exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The Bugzilla project key name for project specified by key `project_key_index`. +#' @export +get_bugzilla_project_key <- function(config_file, project_key_index) { + + bugzilla_key <- config_file[["issue_tracker"]][["bugzilla"]][[project_key_index]][["project_key"]] + + if (is.null(bugzilla_key)) { + warning("Attribute does not exist in the configuration file.") + } + + return(bugzilla_key) +} + +#' Returns the local folder path for Bugzilla issues for a specific project key. +#' +#' @description This function returns the local folder path for Bugzilla issues +#' for a specific project key, that is specified in the input parameter +#' `config_file`. The input, `config_file` must be a parsed configuration file. +#' The function will inform the user if the folder path for Bugzilla issues +#' exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The local folder path for Bugzilla issues for project specified by key `project_key_index`. +#' @export +get_bugzilla_issue_path <- function(config_file, project_key_index) { + + issue_path <- config_file[["issue_tracker"]][["bugzilla"]][[project_key_index]][["issues"]] + + if (is.null(issue_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(issue_path) +} + +#' Returns the local folder path for Bugzilla issue comments for a specific project key. +#' +#' @description This function returns the local folder path for Bugzilla issue +#' comments for a specific project key, that is specified in the input parameter +#' `config_file`. The input, `config_file` must be a parsed configuration file. +#' The function will inform the user if the folder path for Bugzilla issue +#' comments exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @param project_key_index The name of the index of the project key (e.g. "project_key_1" or "project_key_2"). +#' @return The local folder path for Bugzilla issue comments for project specified by key `project_key_index`. +#' @export +get_bugzilla_issue_comment_path <- function(config_file, project_key_index) { + + issue_comment_path <- config_file[["issue_tracker"]][["bugzilla"]][[project_key_index]][["issue_comments"]] + + if (is.null(issue_comment_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(issue_comment_path) +} + +##### Issue Tracker Functions End ##### + + + +##### Vulnerabilities Functions Start ##### + +#' Returns the local folder path that contains the nvd (National Vulnerability +#' Database) feeds. +#' +#' @description This function returns the local folder path for nvd feeds, +#' that is specified in the input parameter `config_file`. The input, +#' `config_file` must be a parsed configuration file. The function will inform +#' the user if the local folder path for the nvd feeds exists in the parsed +#' configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The folder path with nvd feeds. +#' @export +get_nvdfeed_folder_path <- function(config_file) { + + nvdfeed_folder_path <- config_file[["vulnerabilities"]][["nvd_feed"]] + + if (is.null(nvdfeed_folder_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(nvdfeed_folder_path) +} + +##### Vulnerabilities Functions End ##### + + + +##### Regular Expression Functions Start ##### + +#' Returns the issue Id regular expression for commit messages. +#' +#' @description This function returns the issue Id regular expression for commit +#' messages, that is specified in the input parameter `config_file`. The input, +#' `config_file` must be a parsed configuration file. The function will inform +#' the user if the issue Id regular expression for commit messages exists in the +#' parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The commit message issue Id regular expression. +#' @export +get_issue_id_regex <- function(config_file) { + + issue_id_regex <- config_file[["commit_message_id_regex"]][["issue_id"]] + + if (is.null(issue_id_regex)) { + warning("Attribute does not exist in the configuration file.") + } + + return(issue_id_regex) +} + +#' Returns the cve (Common Vulnerabilities and Exposures) regular expression +#' for commit messages. +#' +#' @description This function returns the cve regular expression for commit +#' messages, that is specified in the input parameter `config_file`. The input, +#' `config_file` must be a parsed configuration file. The function will inform +#' the user if the cve regular expression for commit messages exists in the +#' parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The commit message CVE regular expression. +#' @export +get_cveid_regex <- function(config_file) { + + cveid_regex <- config_file[["commit_message_id_regex"]][["cve_id"]] + + if (is.null(cveid_regex)) { + warning("Attribute does not exist in the configuration file.") + } + + return(cveid_regex) +} + +##### Regular Expression Functions End ##### + + + +##### Filter Functions Start ##### + +#' Returns the list of file extensions used for filtering files to keep. +#' +#' @description This function returns the list of file extensions that will be +#' used for filtering files specified in the input parameter `config_file`. The +#' input, `config_file` must be a parsed configuration file. The function will +#' inform the user if the list of file extensions exists in the parsed +#' configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The list of file extensions to keep. +#' @export +get_file_extensions <- function(config_file) { + + file_extensions <- config_file[["filter"]][["keep_filepaths_ending_with"]] + + if (is.null(file_extensions)) { + warning("Attribute does not exist in the configuration file.") + } + + return(file_extensions) +} + +#' Returns the list of file extensions used for filtering files to remove. +#' +#' @description This function returns the list of file extensions that will be +#' used for filtering files specified in the input parameter `config_file`. The +#' input, `config_file` must be a parsed configuration file. The function will +#' inform the user if the list of file extensions exists in the parsed +#' configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The list of file extensions to remove. +#' @export +get_substring_filepath <- function(config_file) { + + substring_filepath <- config_file[["filter"]][["remove_filepaths_containing"]] + + if (is.null(substring_filepath)) { + warning("Attribute does not exist in the configuration file.") + } + + return(substring_filepath) +} + +#' Returns the commit size threshold to remove file paths. +#' +#' @description This function returns an integer number that represents the +#' threshold for a commit size to remove file paths specified in the input +#' parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the commit size +#' threshold exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The commit size to filter out. +#' @export +get_filter_commit_size <- function(config_file) { + + filter_commit_size <- config_file[["filter"]][["remove_filepaths_on_commit_size_greather_than"]] + + if (is.null(filter_commit_size)) { + warning("Attribute does not exist in the configuration file.") + } + + return(filter_commit_size) +} + +##### Filter Functions End ##### + + + +##### Third Party Tools Functions Start ##### + +#' Returns the specified tool project from a parsed tool configuration file. +#' +#' @description This function returns a path to a specified tool from a +#' specified parsed tool configuration file. The function takes the input +#' `tool_name` and uses it to index a specific tool project in a parsed +#' tool configuration file, `config_file`, where it then returns the specified +#' tool project. The function will inform the user if the specified attribute, +#' `tool_name`, exists in the parsed configuration file, `config_file`. +#' +#' @param tool_name The name of the tool (e.g. "perceval" or "dv8"). +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The specified `tool_name` tool project from `config_file`. +#' @export +get_tool_project <- function(tool_name, config_file) { + + tool_path <- config_file[[tool_name]] + + if (is.null(tool_path)) { + warning("Attribute does not exist.") + } + + return(tool_path) +} + +#' Returns the depends code language for analysis. +#' +#' @description This function returns the specified code language that should +#' be used to parse file-file static dependencies with the depends tool, that +#' is specified in the input parameter `config_file`. The input, `config_file` +#' must be a parsed configuration file. The function will inform the user if +#' the depends code language exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The code language for parsing file-file static dependencies. +#' @export +get_depends_code_language <- function(config_file) { + + language <- config_file[["tool"]][["depends"]][["code_language"]] + + if (is.null(language)) { + warning("Attribute does not exist in the configuration file.") + } + + return(language) +} + +#' Returns a list of the types of dependencies to keep for analysis. +#' +#' @description This function returns the specified types of dependencies to +#' keep for analysis with the depends tool, that is specified in the input +#' parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the list of the +#' types of dependencies exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return A list of the types of depends dependencies to keep for analysis. +#' @export +get_depends_keep_dependencies_type <- function(config_file) { + + keep_dependencies_type <- config_file[["tool"]][["depends"]][["keep_dependencies_type"]] + + if (is.null(keep_dependencies_type)) { + warning("Attribute does not exist in the configuration file.") + } + + return(keep_dependencies_type) +} + +#' Returns the path to the folder used to store files for DV8 analysis. +#' +#' @description This function returns the path to the folder that will be +#' used to store various intermediate files for DV8 analysis, that is specified +#' in the input parameter `config_file`. The input, `config_file` must be a +#' parsed configuration file. The function will inform the user if the path +#' path to the folder for intermediate file storage for DV8 analysis exists in +#' the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The DV8 project folder path. +#' @export +get_dv8_folder_path <- function(config_file) { + + project_path <- config_file[["tool"]][["dv8"]][["folder_path"]] + + if (is.null(project_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(project_path) +} + +#' Returns the list of architectural flaws thresholds for DV8 analysis. +#' +#' @description This function returns the list of architectural flaws thresholds +#' for DV8 analysis, that is specified in the input parameter `config_file`. +#' The input, `config_file` must be a parsed configuration file. The function +#' will inform the user if the list of architectural flaws thresholds +#' exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The list of DV8 architectural flaws thresholds. +#' @export +get_dv8_flaws_params <- function(config_file) { + + dv8_flaws_params <- config_file[["tool"]][["dv8"]][["architectural_flaws"]] + + if (is.null(dv8_flaws_params)) { + warning("Attribute does not exist in the configuration file.") + } + + return(dv8_flaws_params) +} + +#' Returns the types to keep to to be considered for analysis. +#' +#' @description This function returns the types of file-file dependencies that +#' should be considered, that are specified in the input parameter +#' `config_file`. The input, `config_file` must be a parsed configuration file. +#' The function will inform the user if the lines type to keep exists in the +#' parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The lines type to keep for analysis. +#' @export +get_uctags_line_types <- function(config_file) { + + kinds <- config_file[["tool"]][["uctags"]][["keep_lines_type"]] + + if (is.null(kinds)) { + warning("Attribute does not exist in the configuration file.") + } + + return(kinds) +} + +#' Returns the file path for the output of the srcML analysis for the project. +#' +#' @description This function returns the file path to be used to store the +#' output of the srcML analysis for the project, that is specified in the +#' input parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the file path +#' exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The output file path for srcML analysis. +#' @export +get_srcml_filepath <- function(config_file) { + + srcml_filepath <- config_file[["tool"]][["srcml"]][["srcml_path"]] + + if (is.null(srcml_filepath)) { + warning("Attribute does not exist in the configuration file.") + } + + return(srcml_filepath) +} + +#' Returns the folder path for class pattern4 analysis. +#' +#' @description This function returns the folder path used to store the classes +#' for the pattern4 analysis for the project, that is specified in the input +#' parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the folder path +#' exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The Pattern4 class folder path. +#' @export +get_pattern4_folder_path <- function(config_file) { + + pattern4_folder_path <- config_file[["tool"]][["pattern4"]][["class_folder_path"]] + + if (is.null(pattern4_folder_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(pattern4_folder_path) +} + +#' Returns the folder path for the output of the pattern4 analysis. +#' +#' @description This function returns the folder path that contains the +#' output of the pattern4 analysis for the project, that is specified in the +#' input parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the folder path +#' exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The Pattern4 output folder path. +#' @export +get_pattern4_filepath <- function(config_file) { + + pattern4_filepath <- config_file[["tool"]][["pattern4"]][["output_filepath"]] + + if (is.null(pattern4_filepath)) { + warning("Attribute does not exist in the configuration file.") + } + + return(pattern4_filepath) +} + +#' Returns the understand code language for analysis. +#' +#' @description This function returns the specified code language that should +#' be used to parse dependencies with the understand tool, that +#' is specified in the input parameter `config_file`. The input, `config_file` +#' must be a parsed configuration file. The function will inform the user if +#' the understand code language exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The code language for parsing with the understand tool. +#' @export +get_understand_code_language <- function(config_file) { + + language <- config_file[["tool"]][["understand"]][["code_language"]] + + if (is.null(language)) { + warning("Attribute does not exist in the configuration file.") + } + + return(language) +} + +#' Returns a list of the types of understand dependencies to keep for analysis. +#' +#' @description This function returns the specified types of dependencies to +#' keep for analysis with the understand tool, that is specified in the input +#' parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the list of the +#' types of understand dependencies exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return A list of the types of understand dependencies to keep for analysis. +#' @export +get_understand_keep_dependencies_type <- function(config_file) { + + keep_dependencies_type <- config_file[["tool"]][["understand"]][["keep_dependencies_type"]] + + if (is.null(keep_dependencies_type)) { + warning("Attribute does not exist in the configuration file.") + } + + return(keep_dependencies_type) +} + +#' Returns the folder path for the input of the understand analysis. +#' +#' @description This function returns the folder path that contains the +#' input of the understand analysis for the project, that is specified in the +#' input parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the folder path +#' exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The understand project folder path. +#' @export +get_understand_project_path <- function(config_file) { + + understand_project_path <- config_file[["tool"]][["understand"]][["project_path"]] + + if (is.null(understand_project_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(understand_project_path) +} + +#' Returns the folder path for the output of the understand analysis. +#' +#' @description This function returns the folder path that contains the +#' output of the understand analysis for the project, that is specified in the +#' input parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the folder path +#' exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The understand output folder path. +#' @export +get_understand_output_path <- function(config_file) { + + understand_output_path <- config_file[["tool"]][["understand"]][["output_path"]] + + if (is.null(understand_output_path)) { + warning("Attribute does not exist in the configuration file.") + } + + return(understand_output_path) +} + +##### Third Party Tools Functions End ##### + + + +##### Analysis Functions Start ##### + +#' Returns the list of topics and keywords for analysis. +#' +#' @description This function returns the list of keywords and topics for +#' analysis, that is specified in the input parameter `config_file`. The +#' input, `config_file` must be a parsed configuration file. The function will +#' inform the user if the list of keywords and topics exists in the parsed +#' configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The list of keywords and topics for analysis. +#' @export +get_topics <- function(config_file) { + + topics <- config_file[["analysis"]][["topics"]] + + if (is.null(topics)) { + warning("Attribute does not exist in the configuration file.") + } + + return(topics) +} + +#' Returns the starting commit for a window for analysis. +#' +#' @description This function returns the starting commit for a window of time +#' for analysis (the time stamp is inferred from gitlog), that is specified in +#' the input parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the start commit +#' exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The start commit for a window for analysis. +#' @export +get_window_start_commit <- function(config_file) { + + start_commit <- config_file[["analysis"]][["window"]][["start_commit"]] + + if (is.null(start_commit)) { + warning("Attribute does not exist in the configuration file.") + } + + return(start_commit) +} + +#' Returns the ending commit for a window for analysis. +#' +#' @description This function returns the ending commit for a window of time +#' for analysis (the time stamp is inferred from gitlog), that is specified in +#' the input parameter `config_file`. The input, `config_file` must be a parsed +#' configuration file. The function will inform the user if the end commit +#' exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The end commit for a window for analysis. +#' @export +get_window_end_commit <- function(config_file) { + + end_commit <- config_file[["analysis"]][["window"]][["end_commit"]] + + if (is.null(end_commit)) { + warning("Attribute does not exist in the configuration file.") + } + + return(end_commit) +} + +#' Returns the size of a window for analysis. +#' +#' @description This function returns the size of a window, that is +#' specified in the input parameter `config_file`. The input, `config_file` +#' must be a parsed configuration file. The function will inform the user if +#' the window size exists in the parsed configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The size of a window for analysis. +#' @export +get_window_size <- function(config_file) { + + window_size <- config_file[["analysis"]][["window"]][["size_days"]] + + if (is.null(window_size)) { + warning("Attribute does not exist in the configuration file.") + } + + return(window_size) +} + +#' Returns the list of enumerated commit intervals for analysis. +#' +#' @description This function returns a list of enumerated commit intervals, +#' that is specified in the input parameter `config_file`. The input, +#' `config_file` must be a parsed configuration file. The function will inform +#' the user if the list of enumerated commit intervals exists in the parsed +#' configuration file, `config_file`. +#' +#' @param config_file The parsed configuration file obtained from \code{\link{parse_config}}. +#' @return The list of enumerated commit intervals. +#' @export +get_enumeration_commits <- function(config_file) { + + enumeration_commit <- config_file[["analysis"]][["enumeration"]][["commit"]] + + if (is.null(enumeration_commit)) { + warning("Attribute does not exist in the configuration file.") + } + + return(enumeration_commit) +} + +##### Analysis Functions End ##### diff --git a/README.md b/README.md index 3fc3e836..5e77998f 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,6 @@ For detailed functionality, see Kaiaulu's [API](http://itm0.shidler.hawaii.edu/k Please [ask questions on Discussions](https://github.com/sailuh/kaiaulu/discussions) or open an issue on the [issue tracker](https://github.com/sailuh/kaiaulu/issues) if you found a bug, or your answer can't be found in the documentation. A more comprehensive and ever growing list of features is available on the [Project Wiki](https://github.com/sailuh/kaiaulu/wiki). - ## Installation Kaiaulu has been tested on OS X and Ubuntu. For Windows and other OS users, try [Virtualbox](https://www.virtualbox.org/), @@ -33,7 +32,7 @@ I also recommend you download the repo to have some example project configuratio 4. Build the documentation `devtools::document(roclets = c('rd', 'collate', 'namespace'))`. 5. Build Kaiaulu (Top right pane in RStudio -> Build tab -> Install and Restart) 6. Run `vignettes/kaiaulu_architecture.Rmd` - 7. See the Wiki's [Third Party Tools Setup](https://github.com/sailuh/kaiaulu/wiki/Third-Party-Tools-Setup) if you are using a Notebook that relies on them. These require very minimal overhead by downloading a binary file, and specifying their path on `tools.yml` (see example on the repository). + 7. See the Wiki's [Third Party Tools Setup](https://github.com/sailuh/kaiaulu/wiki/Third-Party-Tools-Setup) if you are using a Notebook that relies on them. These require very minimal overhead by downloading a binary file and specifying their path on `tools.yml` (see example on the repository). ### Getting started @@ -41,13 +40,10 @@ To get started, browse through [the docs](http://itm0.shidler.hawaii.edu/kaiaulu ### Cheatsheets - | Social Smells | Architectural Flaws | | ------------- | ------------- | | | | - - ## Stay up-to-date * Read the [NEWS file](https://github.com/sailuh/kaiaulu/blob/master/NEWS.md). diff --git a/conf/ambari.yml b/conf/ambari.yml index 405ad4d9..45d695d0 100644 --- a/conf/ambari.yml +++ b/conf/ambari.yml @@ -36,7 +36,8 @@ version_control: # Where is the git log located locally? # This is the path to the .git of the project repository you are analyzing. # The .git is hidden, so you can see it using `ls -a` - log: ../../rawdata/git_repo/ambari/.git + # log: ../../rawdata/git_repo/ambari/.git + log: ../../rawdata/ambari/git_repo/.git # From where the git log was downloaded? log_url: https://github.com/apache/ambari # List of branches used for analysis @@ -51,28 +52,56 @@ version_control: - branch-2.5 mailing_list: - # Where is the mbox located locally? - mbox: ../../rawdata/mbox/ambari-dev.mbox - # What is the domain of the chosen mailing list archive? - domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? - list_key: - - ambari-dev + mod_mbox: + project_key_1: + mailing_list: http://mail-archives.apache.org/mod_mbox/ambari-dev + save_folder_path: ../../rawdata/ambari/mod_mbox/save_mbox_mail/ + # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/ambari/mod_mbox/save_mbox_mail/ambari.mbox + project_key_2: + mailing_list: http://mail-archives.apache.org/mod_mbox/ambari-user + save_folder_path: ../../rawdata/ambari/mod_mbox/save_mbox_mail_2/ + # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/ambari/mod_mbox/save_mbox_mail_2/ambari.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-dev/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox issue_tracker: jira: - # Obtained from the project's JIRA URL - domain: https://issues.apache.org/jira - project_key: AMBARI - # Download using `download_jira_data.Rmd` - #issues: ../../rawdata/issue_tracker/ambari_issues.json - #issue_comments: ../../rawdata/issue_tracker/ambari_issue_comments.json + project_key_1: + # Obtained from the project's JIRA URL + domain: https://issues.apache.org/jira + project_key: AMBARI + # Download using `download_jira_data.Rmd` + # issues: ../../rawdata/ambari/jira/issues/ambari/ + # issue_comments: ../../rawdata/ambari/jira/issue_comments/ambari/ github: - # Obtained from the project's GitHub URL - owner: apache - repo: ambari - # Download using `download_github_comments.Rmd` - #replies: ../../rawdata/github/ambari/ + project_key_1: + # Obtained from the project's GitHub URL + owner: apache + repo: ambari + # Download using `download_github_comments.Rmd` + issue_or_pr_comment: ../../rawdata/ambari/github/issue_or_pr_comment/apache_ambari/ + issue: ../../rawdata/ambari/github/issue/apache_ambari/ + issue_search: ../../rawdata/ambari/github/issue_search/apache_ambari/ + issue_event: ../../rawdata/ambari/github/issue_event/apache_ambari/ + pull_request: ../../rawdata/ambari/github/pull_request/apache_ambari/ + commit: ../../rawdata/ambari/github/commit/apache_ambari/ + # bugzilla: + # project_key_1: + # project_key: ambari + # issues: ../../rawdata/ambari/bugzilla/issues/ambari/ + # issue_comments: ../../rawdata/ambari/bugzilla/issue_comments/ambari/ + #vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) @@ -97,7 +126,6 @@ filter: remove_filepaths_containing: - test - # Third Party Tools Configuration # # # See Kaiaulu's README.md for details on how to setup these tools. @@ -122,6 +150,32 @@ tool: - Throw - Parameter - Contain + # dv8: + # # The project folder path to store various intermediate + # # files for DV8 Analysis + # # The folder name will be used in the file names. + # folder_path: ../../analysis/junit/dv8/ + # # the architectural flaws thresholds that should be used + # architectural_flaws: + # cliqueDepends: + # - call + # - use + # crossingCochange: 2 + # crossingFanIn: 4 + # crossingFanOut: 4 + # mvCochange: 2 + # uiCochange: 2 + # uihDepends: + # - call + # - use + # uihInheritance: + # - extend + # - implement + # - public + # - private + # - virtual + # uiHistoryImpact: 10 + # uiStructImpact: 0.01 # Uctags allows finer file-file dependency parsing (e.g. functions, classes, structs) uctags: # See https://github.com/sailuh/kaiaulu/wiki/Universal-Ctags for details @@ -141,14 +195,44 @@ tool: - f # functions r: - f # functions + # # srcML allow to parse src code as text (e.g. identifiers) + # srcml: + # # The file path to where you wish to store the srcml output of the project + # srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ # Analysis Configuration # analysis: # You can specify the intervals in 2 ways: window, or enumeration window: # If using gitlog, use start_commit and end_commit. Timestamp is inferred from gitlog - #start_commit: b53fa3c4755b7ae6af86cf893924d3e88d449401 - #end_commit: 1a711038698490b1f6423e3e4801ae98598d0366 +# start_commit: b53fa3c4755b7ae6af86cf893924d3e88d449401 +# end_commit: 1a711038698490b1f6423e3e4801ae98598d0366 # Alternatively, you can specify the start and end datetime (UTC timezone is assumed). start_datetime: 2017-01-31 00:00:00 end_datetime: 2019-01-31 00:00:00 diff --git a/conf/apr.yml b/conf/apr.yml index 65892ed4..abc4c4fb 100644 --- a/conf/apr.yml +++ b/conf/apr.yml @@ -36,7 +36,7 @@ version_control: # Where is the git log located locally? # This is the path to the .git of the project repository you are analyzing. # The .git is hidden, so you can see it using `ls -a` - log: ../../rawdata/git_repo/APR/.git + log: ../../rawdata/apr/git_repo/.git # From where the git log was downloaded? log_url: https://github.com/apache/apr # List of branches used for analysis @@ -45,33 +45,73 @@ version_control: - trunk mailing_list: - # Where is the mbox located locally? - mbox: ../../rawdata/mbox/apr-dev_2012_2019.mbox - # What is the domain of the chosen mailing list archive? - domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? - list_key: - - apr-dev + mod_mbox: + project_key_1: + mailing_list: http://mail-archives.apache.org/mod_mbox/apr-dev + save_folder_path: ../../rawdata/apr/mod_mbox/save_mbox_mail/ + # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/apr/mod_mbox/save_mbox_mail/apr.mbox +# project_key_2: +# mailing_list: http://mail-archives.apache.org/mod_mbox/kaiaulu-user +# save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/kaiaulu.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-dev/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox issue_tracker: - jira: - # Obtained from the project's JIRA URL - domain: https://issues.apache.org/jira - #project_key: HELIX - # Download using `download_jira_data.Rmd` - #issues: ../../rawdata/issue_tracker/helix_issues.json - #issue_comments: ../../rawdata/issue_tracker/helix_issue_comments.json + # jira: + # project_key_1: + # # Obtained from the project's JIRA URL + # domain: https://issues.apache.org/jira + # project_key: HELIX + # # Download using `download_jira_data.Rmd` + # issues: ../../rawdata/apr/jira/issues/helix/ + # issue_comments: ../../rawdata/apr/jira/issue_comments/helix/ github: - # Obtained from the project's GitHub URL - owner: apache - repo: apr - # Download using `download_github_comments.Rmd` - replies: ../../rawdata/github/apr/ + project_key_1: + # Obtained from the project's GitHub URL + owner: apache + repo: apr + # Download using `download_github_comments.Rmd` + issue_or_pr_comment: ../../rawdata/apr/github/issue_or_pr_comment/apache_apr/ + issue: ../../rawdata/apr/github/issue/apache_apr/ + issue_search: ../../rawdata/apr/github/issue_search/apache_apr/ + issue_event: ../../rawdata/apr/github/issue_event/apache_apr/ + pull_request: ../../rawdata/apr/github/pull_request/apache_apr/ + commit: ../../rawdata/apr/github/commit/apache_apr/ +# project_key_2: +# # Obtained from the project's GitHub URL +# owner: ssunoo2 +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/ssunoo2_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/ssunoo2_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/ssunoo2_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/ssunoo2_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/ssunoo2_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/ssunoo2_kaiaulu/ +# bugzilla: +# project_key_1: +# project_key: kaiaulu +# issues: ../../rawdata/kaiaulu/bugzilla/issues/kaiaulu/ +# issue_comments: ../../rawdata/kaiaulu/bugzilla/issue_comments/kaiaulu/ + + #vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) # Download at: https://nvd.nist.gov/vuln/data-feeds - #nvd_feed: rawdata/nvdfeed + # nvd_feed: rawdata/nvdfeed # Commit message CVE or Issue Regular Expression (regex) # See project's commit message for examples to create the regex @@ -120,7 +160,7 @@ tool: # The project folder path to store various intermediate # files for DV8 Analysis # The folder name will be used in the file names. - folder_path: ../../analysis/dv8/apr + folder_path: ../../analysis/apr/dv8/ # the architectural flaws thresholds that should be used architectural_flaws: cliqueDepends: @@ -161,6 +201,36 @@ tool: - f # functions r: - f # functions + # # srcML allow to parse src code as text (e.g. identifiers) + # srcml: + # # The file path to where you wish to store the srcml output of the project + # srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/classes/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ # Analysis Configuration # analysis: diff --git a/conf/calculator.yml b/conf/calculator.yml index 2b95b6f8..31b3e23a 100644 --- a/conf/calculator.yml +++ b/conf/calculator.yml @@ -36,36 +36,74 @@ version_control: # Where is the git log located locally? # This is the path to the .git of the project repository you are analyzing. # The .git is hidden, so you can see it using `ls -a` - log: ../../rawdata/git_repo/Calculator/.git + log: ../../rawdata/Calculator/git_repo/.git # From where the git log was downloaded? log_url: https://github.com/HouariZegai/Calculator # List of branches used for analysis branch: - master -mailing_list: - # Where is the mbox located locally? - #mbox: ../../rawdata/mbox/apr-dev_2012_2019.mbox - # What is the domain of the chosen mailing list archive? - #domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? - #list_key: - # - apr-dev +# mailing_list: +# mod_mbox: +# project_key_1: +# mailing_list: http://mail-archives.apache.org/mod_mbox/kaiaulu-dev +# save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: http://mail-archives.apache.org/mod_mbox/kaiaulu-user +# save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/kaiaulu.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-dev/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox -#issue_tracker: +issue_tracker: # jira: - # Obtained from the project's JIRA URL -# domain: https://issues.apache.org/jira - #project_key: HELIX - # Download using `download_jira_data.Rmd` - #issues: ../../rawdata/issue_tracker/helix_issues.json - #issue_comments: ../../rawdata/issue_tracker/helix_issue_comments.json +# project_key_1: +# # Obtained from the project's JIRA URL +# domain: https://sailuh.atlassian.net +# project_key: SAILUH +# # Download using `download_jira_data.Rmd` +# issues: ../../rawdata/kaiaulu/jira/issues/sailuh/ +# issue_comments: ../../rawdata/kaiaulu/jira/issue_comments/sailuh/ github: - # Obtained from the project's GitHub URL - owner: HouariZegai - repo: Calculator - # Download using `download_github_comments.Rmd` - replies: ../../rawdata/github/Calculator/ + project_key_1: + # Obtained from the project's GitHub URL + owner: HouariZegai + repo: Calculator + # Download using `download_github_comments.Rmd` + issue_or_pr_comment: ../../rawdata/Calculator/github/issue_or_pr_comment/HouariZegai_Calculator/ + issue: ../../rawdata/Calculator/github/issue/HouariZegai_Calculator/ + issue_search: ../../rawdata/Calculator/github/issue_search/HouariZegai_Calculator/ + issue_event: ../../rawdata/Calculator/github/issue_event/HouariZegai_Calculator/ + pull_request: ../../rawdata/Calculator/github/pull_request/HouariZegai_Calculator/ + commit: ../../rawdata/Calculator/github/commit/HouariZegai_Calculator/ +# project_key_2: +# # Obtained from the project's GitHub URL +# owner: ssunoo2 +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/ssunoo2_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/ssunoo2_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/ssunoo2_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/ssunoo2_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/ssunoo2_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/ssunoo2_kaiaulu/ +# bugzilla: +# project_key_1: +# project_key: kaiaulu +# issues: ../../rawdata/kaiaulu/bugzilla/issues/kaiaulu/ +# issue_comments: ../../rawdata/kaiaulu/bugzilla/issue_comments/kaiaulu/ #vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) @@ -120,7 +158,7 @@ tool: # The project folder path to store various intermediate # files for DV8 Analysis # The folder name will be used in the file names. - folder_path: ../../analysis/dv8/calculator + folder_path: ../../analysis/Calculator/dv8/ # the architectural flaws thresholds that should be used architectural_flaws: cliqueDepends: @@ -161,6 +199,36 @@ tool: - f # functions r: - f # functions + # # srcML allow to parse src code as text (e.g. identifiers) + # srcml: + # # The file path to where you wish to store the srcml output of the project + # srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/classes/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ # Analysis Configuration # analysis: diff --git a/conf/camel.yml b/conf/camel.yml index 04dbbfca..85f24054 100644 --- a/conf/camel.yml +++ b/conf/camel.yml @@ -36,7 +36,7 @@ version_control: # Where is the git log located locally? # This is the path to the .git of the project repository you are analyzing. # The .git is hidden, so you can see it using `ls -a` - log: ../../rawdata/git_repo/camel/.git + log: ../../rawdata/camel/git_repo/.git # From where the git log was downloaded? log_url: https://github.com/apache/camel # List of branches used for analysis @@ -46,29 +46,67 @@ version_control: - camel-2.11.4 - camel-3.21.0 -#mailing_list: - # Where is the mbox located locally? -# mbox: ../../rawdata/mbox/apr-dev_2012_2019.mbox - # What is the domain of the chosen mailing list archive? -# domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? -# list_key: -# - apr-dev +mailing_list: + mod_mbox: + project_key_1: + mailing_list: http://mail-archives.apache.org/mod_mbox/camel-dev + save_folder_path: ../../rawdata/camel/mod_mbox/save_mbox_mail/ + # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/camel/mod_mbox/save_mbox_mail/camel.mbox + project_key_2: + mailing_list: http://mail-archives.apache.org/mod_mbox/camel-users + save_folder_path: ../../rawdata/camel/mod_mbox/save_mbox_mail_2/ + # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/camel.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-dev/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox issue_tracker: jira: - # Obtained from the project's JIRA URL - domain: https://issues.apache.org/jira - project_key: CAMEL - # Download using `download_jira_data.Rmd` - issues: ../../rawdata/issue_tracker/camel/issues/ - issue_comments: ../../rawdata/issue_tracker/camel/issue_comments/ -# github: - # Obtained from the project's GitHub URL -# owner: apache -# repo: apr - # Download using `download_github_comments.Rmd` -# replies: ../../rawdata/github/apr/ + project_key_1: + # Obtained from the project's JIRA URL + domain: https://issues.apache.org/jira + project_key: CAMEL + # Download using `download_jira_data.Rmd` + issues: ../../rawdata/camel/jira/issues/camel/ + issue_comments: ../../rawdata/camel/jira/issue_comments/camel/ +# github: +# project_key_1: +# # Obtained from the project's GitHub URL +# owner: sailuh +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/sailuh_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/sailuh_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/sailuh_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/sailuh_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/sailuh_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/sailuh_kaiaulu/ +# project_key_2: +# # Obtained from the project's GitHub URL +# owner: ssunoo2 +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/ssunoo2_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/ssunoo2_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/ssunoo2_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/ssunoo2_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/ssunoo2_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/ssunoo2_kaiaulu/ +# bugzilla: +# project_key_1: +# project_key: kaiaulu +# issues: ../../rawdata/kaiaulu/bugzilla/issues/kaiaulu/ +# issue_comments: ../../rawdata/kaiaulu/bugzilla/issue_comments/kaiaulu/ #vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) @@ -124,7 +162,7 @@ tool: # The project folder path to store various intermediate # files for DV8 Analysis # The folder name will be used in the file names. - folder_path: ../../analysis/dv8/camel_1_6 + folder_path: ../../analysis/camel/dv8/ # the architectural flaws thresholds that should be used architectural_flaws: cliqueDepends: @@ -168,8 +206,35 @@ tool: # srcML allow to parse src code as text (e.g. identifiers) srcml: # The file path to where you wish to store the srcml output of the project - srcml_path: ../../analysis/camel/srcml_camel.xml + srcml_path: ../../analysis/camel/srcml/srcml_camel.xml # Specify which types of Dependencies to keep - see the Depends tool README.md for details. + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/classes/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ + # Analysis Configuration # analysis: # A list of topic and keywords (see src_text_showcase.Rmd). diff --git a/conf/chromium.yml b/conf/chromium.yml index 3d0f1288..6f5a4d2e 100644 --- a/conf/chromium.yml +++ b/conf/chromium.yml @@ -36,36 +36,74 @@ version_control: # Where is the git log located locally? # This is the path to the .git of the project repository you are analyzing. # The .git is hidden, so you can see it using `ls -a` - log: ../../rawdata/git_repo/chromium/.git + log: ../../rawdata/chromium/git_repo/.git # From where the git log was downloaded? log_url: https://chromium.googlesource.com/chromium/src # List of branches used for analysis branch: - master -mailing_list: - # Where is the mbox located locally? - #mbox: ../../rawdata/mbox/geronimo-dev.mbox - # What is the domain of the chosen mailing list archive? - #domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? - #list_key: - # - geronimo-dev +# mailing_list: +# mod_mbox: +# project_key_1: +# mailing_list: http://mail-archives.apache.org/mod_mbox/kaiaulu-dev +# save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: http://mail-archives.apache.org/mod_mbox/kaiaulu-user +# save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/kaiaulu.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-dev/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox -issue_tracker: - jira: - # Obtained from the project's JIRA URL - #domain: https://issues.apache.org/jira - #project_key: GERONIMO - # Download using `download_jira_data.Rmd` - #issues: ../../rawdata/issue_tracker/geronimo_issues.json - #issue_comments: ../../rawdata/issue_tracker/geronimo_issue_comments.json - github: - # Obtained from the project's GitHub URL - #owner: sailuh - #repo: kaiaulu - # Download using `download_github_comments.Rmd` - #replies: ../../rawdata/github/kaiaulu/ +# issue_tracker: +# jira: +# project_key_1: +# # Obtained from the project's JIRA URL +# domain: https://sailuh.atlassian.net +# project_key: SAILUH +# # Download using `download_jira_data.Rmd` +# issues: ../../rawdata/kaiaulu/jira/issues/sailuh/ +# issue_comments: ../../rawdata/kaiaulu/jira/issue_comments/sailuh/ +# github: +# project_key_1: +# # Obtained from the project's GitHub URL +# owner: sailuh +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/sailuh_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/sailuh_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/sailuh_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/sailuh_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/sailuh_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/sailuh_kaiaulu/ +# project_key_2: +# # Obtained from the project's GitHub URL +# owner: ssunoo2 +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/ssunoo2_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/ssunoo2_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/ssunoo2_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/ssunoo2_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/ssunoo2_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/ssunoo2_kaiaulu/ +# bugzilla: +# project_key_1: +# project_key: kaiaulu +# issues: ../../rawdata/kaiaulu/bugzilla/issues/kaiaulu/ +# issue_comments: ../../rawdata/kaiaulu/bugzilla/issue_comments/kaiaulu/ vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) @@ -117,6 +155,32 @@ tool: - Throw - Parameter - Contain + # dv8: + # # The project folder path to store various intermediate + # # files for DV8 Analysis + # # The folder name will be used in the file names. + # folder_path: ../../analysis/junit/dv8/ + # # the architectural flaws thresholds that should be used + # architectural_flaws: + # cliqueDepends: + # - call + # - use + # crossingCochange: 2 + # crossingFanIn: 4 + # crossingFanOut: 4 + # mvCochange: 2 + # uiCochange: 2 + # uihDepends: + # - call + # - use + # uihInheritance: + # - extend + # - implement + # - public + # - private + # - virtual + # uiHistoryImpact: 10 + # uiStructImpact: 0.01 # Uctags allows finer file-file dependency parsing (e.g. functions, classes, structs) uctags: # See https://github.com/sailuh/kaiaulu/wiki/Universal-Ctags for details @@ -136,6 +200,36 @@ tool: - f # functions r: - f # functions + # # srcML allow to parse src code as text (e.g. identifiers) + # srcml: + # # The file path to where you wish to store the srcml output of the project + # srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/classes/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ # Analysis Configuration # analysis: diff --git a/conf/geronimo.yml b/conf/geronimo.yml index 56841607..ec9cd352 100644 --- a/conf/geronimo.yml +++ b/conf/geronimo.yml @@ -36,7 +36,7 @@ version_control: # Where is the git log located locally? # This is the path to the .git of the project repository you are analyzing. # The .git is hidden, so you can see it using `ls -a` - log: ../../rawdata/git_repo/geronimo/.git + log: ../../rawdata/geronimo/git_repo/.git # From where the git log was downloaded? log_url: https://github.com/apache/geronimo # List of branches used for analysis @@ -44,28 +44,66 @@ version_control: - trunk mailing_list: - # Where is the mbox located locally? - mbox: ../../rawdata/mbox/geronimo-dev.mbox - # What is the domain of the chosen mailing list archive? - domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? - list_key: - - geronimo-dev + mod_mbox: + project_key_1: + mailing_list: http://mail-archives.apache.org/mod_mbox/geronimo-dev + save_folder_path: ../../rawdata/geronimo/mod_mbox/save_mbox_mail/ + # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/geronimo/mod_mbox/save_mbox_mail/geronimo.mbox + project_key_2: + mailing_list: http://mail-archives.apache.org/mod_mbox/geronimo-user + save_folder_path: ../../rawdata/geronimo/mod_mbox/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/kaiaulu.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-dev/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox issue_tracker: jira: - # Obtained from the project's JIRA URL - domain: https://issues.apache.org/jira - project_key: GERONIMO - # Download using `download_jira_data.Rmd` - issues: ../../rawdata/issue_tracker/geronimo/issues/ - issue_comments: ../../rawdata/issue_tracker/geronimo/issue_comments/ + project_key_1: + # Obtained from the project's JIRA URL + domain: https://issues.apache.org/jira + project_key: GERONIMO + # Download using `download_jira_data.Rmd` + issues: ../../rawdata/geronimo/jira/issues/geronimo + issue_comments: ../../rawdata/geronimo/jira/issue_comments/geronimo github: - # Obtained from the project's GitHub URL - owner: apache - repo: geronimo - # Download using `download_github_comments.Rmd` - replies: ../../rawdata/github/geronimo/ + project_key_1: + # Obtained from the project's GitHub URL + owner: apache + repo: geronimo + # Download using `download_github_comments.Rmd` + issue_or_pr_comment: ../../rawdata/geronimo/github/issue_or_pr_comment/apache_geronimo/ + issue: ../../rawdata/geronimo/github/issue/apache_geronimo/ + issue_search: ../../rawdata/geronimo/github/issue_search/apache_geronimo/ + issue_event: ../../rawdata/geronimo/github/issue_event/apache_geronimo/ + pull_request: ../../rawdata/geronimo/github/pull_request/apache_geronimo/ + commit: ../../rawdata/geronimo/github/commit/apache_geronimo/ +# project_key_2: +# # Obtained from the project's GitHub URL +# owner: ssunoo2 +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/ssunoo2_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/ssunoo2_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/ssunoo2_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/ssunoo2_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/ssunoo2_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/ssunoo2_kaiaulu/ +# bugzilla: +# project_key_1: +# project_key: kaiaulu +# issues: ../../rawdata/kaiaulu/bugzilla/issues/kaiaulu/ +# issue_comments: ../../rawdata/kaiaulu/bugzilla/issue_comments/kaiaulu/ #vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) @@ -121,7 +159,7 @@ tool: # The project folder path to store various intermediate # files for DV8 Analysis # The folder name will be used in the file names. - folder_path: ../../analysis/dv8/geronimo + folder_path: ../../analysis/geronimo/dv8/ # the architectural flaws thresholds that should be used architectural_flaws: cliqueDepends: @@ -162,6 +200,36 @@ tool: - f # functions r: - f # functions + # # srcML allow to parse src code as text (e.g. identifiers) + # srcml: + # # The file path to where you wish to store the srcml output of the project + # srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/classes/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ # Analysis Configuration # analysis: diff --git a/conf/helix.yml b/conf/helix.yml index 6ca5cdf1..d1bbf7f9 100644 --- a/conf/helix.yml +++ b/conf/helix.yml @@ -34,7 +34,7 @@ project: version_control: # Where is the git log located locally? - log: ../../rawdata/git_repo/helix/.git + log: ../../rawdata/helix/git_repo/.git # From where the git log was downloaded? log_url: https://github.com/apache/helix # List of branches used for analysis @@ -48,30 +48,55 @@ version_control: - revert-1685-master mailing_list: - # Where is the mbox located locally? - # This is the path to the .git of the project repository you are analyzing. - # The .git is hidden, so you can see it using `ls -a` - mbox: ../../rawdata/mbox/helix_mbox - # What is the domain of the chosen mailing list archive? - domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? - list_key: - - helix-dev + mod_mbox: + project_key_1: + mailing_list: https://lists.apache.org/list.html?announce@apache.org + save_folder_path: ../../rawdata/helix/mod_mbox/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/helix/mod_mbox/save_mbox_mail/helix.mbox + project_key_2: + mailing_list: https://lists.apache.org/list.html?dev@felix.apache.org + save_folder_path: ../../rawdata/helix/mod_mbox/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/helix.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/openssl-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/openssl-project/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox issue_tracker: jira: - # Obtained from the project's JIRA URL - domain: https://issues.apache.org/jira - project_key: HELIX - # Download using `download_jira_data.Rmd` - issues: ../../rawdata/issue_tracker/helix/issues/ - issue_comments: ../../rawdata/issue_tracker/helix/issue_comments/ + project_key_1: + # Obtained from the project's JIRA URL + domain: https://issues.apache.org/jira + project_key: HELIX + # Download using `download_jira_data.Rmd` + issues: ../../rawdata/helix/jira/issues/helix + issue_comments: ../../rawdata/helix/jira/issue_comments/helix github: - # Obtained from the project's GitHub URL - owner: apache - repo: helix - # Download using `download_github_comments.Rmd` - replies: ../../rawdata/github/helix/ + project_key_1: + # Obtained from the project's GitHub URL + owner: apache + repo: helix + # Download using `download_github_comments.Rmd` + issue_or_pr_comment: ../../rawdata/helix/github/issue_or_pr_comment/apache_helix/ + issue: ../../rawdata/helix/github/issue/apache_helix/ + issue_search: ../../rawdata/helix/github/issue_search/apache_helix/ + issue_event: ../../rawdata/helix/github/issue_event/apache_helix/ + pull_request: ../../rawdata/helix/github/pull_request/apache_helix/ + commit: ../../rawdata/helix/github/commit/apache_helix/ + # bugzilla: + # project_key_1: + # project_key: helix + # issues: ../../rawdata/helix/bugzilla/issues/helix/ + # issue_comments: ../../rawdata/helix/bugzilla/issue_comments/helix/ #vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) @@ -121,6 +146,32 @@ tool: - Throw - Parameter - Contain + # dv8: + # # The project folder path to store various intermediate + # # files for DV8 Analysis + # # The folder name will be used in the file names. + # folder_path: ../../analysis/junit/dv8/ + # # the architectural flaws thresholds that should be used + # architectural_flaws: + # cliqueDepends: + # - call + # - use + # crossingCochange: 2 + # crossingFanIn: 4 + # crossingFanOut: 4 + # mvCochange: 2 + # uiCochange: 2 + # uihDepends: + # - call + # - use + # uihInheritance: + # - extend + # - implement + # - public + # - private + # - virtual + # uiHistoryImpact: 10 + # uiStructImpact: 0.01 # Uctags allows finer file-file dependency parsing (e.g. functions, classes, structs) uctags: # See https://github.com/sailuh/kaiaulu/wiki/Universal-Ctags for details @@ -140,6 +191,36 @@ tool: - f # functions r: - f # functions + # # srcML allow to parse src code as text (e.g. identifiers) + # srcml: + # # The file path to where you wish to store the srcml output of the project + # srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/classes/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ # Analysis Configuration # analysis: diff --git a/conf/junit5.yml b/conf/junit5.yml index cdf0a332..594430cd 100644 --- a/conf/junit5.yml +++ b/conf/junit5.yml @@ -36,47 +36,86 @@ version_control: # Where is the git log located locally? # This is the path to the .git of the project repository you are analyzing. # The .git is hidden, so you can see it using `ls -a` - log: ../../rawdata/git_repo/junit5/.git + # log: ../../rawdata/git_repo/junit5/.git + log: ../../rawdata/junit5/git_repo/.git # From where the git log was downloaded? log_url: https://github.com/junit-team/junit5/ # List of branches used for analysis branch: - main -#mailing_list: - # Where is the mbox located locally? -# mbox: ../../rawdata/mbox/apr-dev_2012_2019.mbox - # What is the domain of the chosen mailing list archive? -# domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? -# list_key: -# - apr-dev +# mailing_list: +# mod_mbox: +# project_key_1: +# mailing_list: http://mail-archives.apache.org/mod_mbox/kaiaulu-dev +# save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: http://mail-archives.apache.org/mod_mbox/kaiaulu-user +# save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/kaiaulu.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-dev/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox -#issue_tracker: -# jira: - # Obtained from the project's JIRA URL -# domain: https://issues.apache.org/jira - #project_key: HELIX - # Download using `download_jira_data.Rmd` - #issues: ../../rawdata/issue_tracker/helix_issues.json - #issue_comments: ../../rawdata/issue_tracker/helix_issue_comments.json -# github: - # Obtained from the project's GitHub URL -# owner: apache -# repo: apr - # Download using `download_github_comments.Rmd` -# replies: ../../rawdata/github/apr/ +# issue_tracker: +# jira: +# project_key_1: +# # Obtained from the project's JIRA URL +# domain: https://sailuh.atlassian.net +# project_key: SAILUH +# # Download using `download_jira_data.Rmd` +# issues: ../../rawdata/kaiaulu/jira/issues/sailuh/ +# issue_comments: ../../rawdata/kaiaulu/jira/issue_comments/sailuh/ +# github: +# project_key_1: +# # Obtained from the project's GitHub URL +# owner: sailuh +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/sailuh_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/sailuh_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/sailuh_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/sailuh_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/sailuh_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/sailuh_kaiaulu/ +# project_key_2: +# # Obtained from the project's GitHub URL +# owner: ssunoo2 +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/ssunoo2_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/ssunoo2_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/ssunoo2_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/ssunoo2_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/ssunoo2_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/ssunoo2_kaiaulu/ +# bugzilla: +# project_key_1: +# project_key: kaiaulu +# issues: ../../rawdata/kaiaulu/bugzilla/issues/kaiaulu/ +# issue_comments: ../../rawdata/kaiaulu/bugzilla/issue_comments/kaiaulu/ #vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) # Download at: https://nvd.nist.gov/vuln/data-feeds - #nvd_feed: rawdata/nvdfeed + # nvd_feed: rawdata/nvdfeed # Commit message CVE or Issue Regular Expression (regex) # See project's commit message for examples to create the regex -#commit_message_id_regex: +# commit_message_id_regex: # issue_id: \#[0-9]+ - #cve_id: ? +# cve_id: ? filter: keep_filepaths_ending_with: @@ -120,7 +159,7 @@ tool: # The project folder path to store various intermediate # files for DV8 Analysis # The folder name will be used in the file names. - folder_path: ../../analysis/dv8/junit + folder_path: ../../analysis/junit5/dv8/ # the architectural flaws thresholds that should be used architectural_flaws: cliqueDepends: @@ -164,17 +203,34 @@ tool: # srcML allow to parse src code as text (e.g. identifiers) srcml: # The file path to where you wish to store the srcml output of the project - srcml_path: ../../analysis/junit/srcml_junit.xml + srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml pattern4: - # The file path to where you wish to store the srcml output of the project - class_folder_path: ../../rawdata/git_repo/junit5/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # The file path to where you wish to store the classes of the pattern4 analysis + class_folder_path: ../../rawdata/junit5/pattern4/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # The file path to where you wish to store the output of the pattern4 analysis + output_filepath: ../../analysis/junit5/pattern4/ compile_note: > 1. Switch Java version to Java 17: https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 2. Disable VPN to pull modules from Gradle Plugin Portal. 3. Use sudo ./gradlew build 4. After building, locate the engine class files and specify as the class_folder_path: - in this case they are in: /path/to/junit5/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ + # Analysis Configuration # analysis: # A list of topic and keywords (see src_text_showcase.Rmd). @@ -203,20 +259,20 @@ analysis: - command # You can specify the intervals in 2 ways: window, or enumeration # window: - # If using gitlog, use start_commit and end_commit. Timestamp is inferred from gitlog +# # If using gitlog, use start_commit and end_commit. Timestamp is inferred from gitlog # start_commit: 9eae9e96f15e1f216162810cef4271a439a74223 # end_commit: f8f9ec1f249dd552065aa37c983bed4d4d869bb0 - # Use datetime only if no gitlog is used in the analysis. - #start_datetime: 2013-05-01 00:00:00 - #end_datetime: 2013-11-01 00:00:00 +# # Use datetime only if no gitlog is used in the analysis. +# start_datetime: 2013-05-01 00:00:00 +# end_datetime: 2013-11-01 00:00:00 # size_days: 90 # enumeration: - # If using gitlog, specify the commits +# # If using gitlog, specify the commits # commit: # - 9eae9e96f15e1f216162810cef4271a439a74223 # - f1d2d568776b3708dd6a3077376e2331f9268b04 # - c33a2ce74c84f0d435bfa2dd8953d132ebf7a77a - # Use datetime only if no gitlog is used in the analysis. Timestamp is inferred from gitlog +# # Use datetime only if no gitlog is used in the analysis. Timestamp is inferred from gitlog # datetime: # - 2013-05-01 00:00:00 # - 2013-08-01 00:00:00 diff --git a/conf/kaiaulu.yml b/conf/kaiaulu.yml index 3d0e8e9b..6d1b3385 100644 --- a/conf/kaiaulu.yml +++ b/conf/kaiaulu.yml @@ -36,41 +36,79 @@ version_control: # Where is the git log located locally? # This is the path to the .git of the project repository you are analyzing. # The .git is hidden, so you can see it using `ls -a` - log: ../../rawdata/git_repo/kaiaulu/.git + log: ../../rawdata/kaiaulu/git_repo/.git # From where the git log was downloaded? log_url: https://github.com/sailuh/kaiaulu # List of branches used for analysis branch: - master -mailing_list: - # Where is the mbox located locally? - #mbox: ../../rawdata/mbox/geronimo-dev.mbox - # What is the domain of the chosen mailing list archive? - #domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? - #list_key: - # - geronimo-dev +# mailing_list: +# mod_mbox: +# project_key_1: +# mailing_list: https://lists.apache.org/list.html?announce@apache.org +# save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://lists.apache.org/list.html?dev@felix.apache.org +# save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/kaiaulu.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/openssl-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/openssl-project/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox issue_tracker: jira: - # Obtained from the project's JIRA URL - domain: https://sailuh.atlassian.net - project_key: SAILUH - # Download using `download_jira_data.Rmd` - issues: ../../rawdata/issue_tracker/kaiaulu/issues/ - issue_comments: ../../rawdata/issue_tracker/kaiaulu/issue_comments/ + project_key_1: + # Obtained from the project's JIRA URL + domain: https://sailuh.atlassian.net + project_key: SAILUH + # Download using `download_jira_data.Rmd` + issues: ../../rawdata/kaiaulu/jira/issues/sailuh/ + issue_comments: ../../rawdata/kaiaulu/jira/issue_comments/sailuh/ github: - # Obtained from the project's GitHub URL - owner: sailuh - repo: kaiaulu - # Download using `download_github_comments.Rmd` - replies: ../../rawdata/github/kaiaulu + project_key_1: + # Obtained from the project's GitHub URL + owner: sailuh + repo: kaiaulu + # Download using `download_github_comments.Rmd` + issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/sailuh_kaiaulu/ + issue: ../../rawdata/kaiaulu/github/issue/sailuh_kaiaulu/ + issue_search: ../../rawdata/kaiaulu/github/issue_search/sailuh_kaiaulu/ + issue_event: ../../rawdata/kaiaulu/github/issue_event/sailuh_kaiaulu/ + pull_request: ../../rawdata/kaiaulu/github/pull_request/sailuh_kaiaulu/ + commit: ../../rawdata/kaiaulu/github/commit/sailuh_kaiaulu/ +# project_key_2: +# # Obtained from the project's GitHub URL +# owner: ssunoo2 +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/ssunoo2_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/ssunoo2_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/ssunoo2_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/ssunoo2_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/ssunoo2_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/ssunoo2_kaiaulu/ +# bugzilla: +# project_key_1: +# project_key: kaiaulu +# issues: ../../rawdata/kaiaulu/bugzilla/issues/kaiaulu/ +# issue_comments: ../../rawdata/kaiaulu/bugzilla/issue_comments/kaiaulu/ -#vulnerabilities: +vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) # Download at: https://nvd.nist.gov/vuln/data-feeds - #nvd_feed: rawdata/nvdfeed + nvd_feed: rawdata/nvdfeed # Commit message CVE or Issue Regular Expression (regex) # See project's commit message for examples to create the regex @@ -109,6 +147,32 @@ tool: - Throw - Parameter - Contain + # dv8: + # # The project folder path to store various intermediate + # # files for DV8 Analysis + # # The folder name will be used in the file names. + # folder_path: ../../analysis/junit/dv8/ + # # the architectural flaws thresholds that should be used + # architectural_flaws: + # cliqueDepends: + # - call + # - use + # crossingCochange: 2 + # crossingFanIn: 4 + # crossingFanOut: 4 + # mvCochange: 2 + # uiCochange: 2 + # uihDepends: + # - call + # - use + # uihInheritance: + # - extend + # - implement + # - public + # - private + # - virtual + # uiHistoryImpact: 10 + # uiStructImpact: 0.01 # Uctags allows finer file-file dependency parsing (e.g. functions, classes, structs) uctags: # See https://github.com/sailuh/kaiaulu/wiki/Universal-Ctags for details @@ -128,6 +192,37 @@ tool: - f # functions r: - f # functions + # # srcML allow to parse src code as text (e.g. identifiers) + # srcml: + # # The file path to where you wish to store the srcml output of the project + # srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/classes/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + understand: + # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + code_language: java + # Specify which types of Dependencies to keep + keep_dependencies_type: + - Import + - Call + - Create + - Use + - Type GenericArgument + # Where the files to analyze should be stored + project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # Where the output for the understands analysis is stored + output_path: ../../analysis/kaiaulu/understand/ + # Analysis Configuration # analysis: diff --git a/conf/openssl.yml b/conf/openssl.yml index aa7b2254..d41cf319 100644 --- a/conf/openssl.yml +++ b/conf/openssl.yml @@ -36,7 +36,7 @@ version_control: # Where is the git log located locally? # This is the path to the .git of the project repository you are analyzing. # The .git is hidden, so you can see it using `ls -a` - log: ../../rawdata/git_repo/OpenSSL/.git + log: ../../rawdata/openssl/git_repo/.git # From where the git log was downloaded? log_url: https://github.com/openssl/openssl # List of branches used for analysis @@ -45,29 +45,65 @@ version_control: - master mailing_list: - # Where is the mbox located locally? - #mbox: ../../rawdata/mbox/openssl_dev_mbox # 2004-2008 fields are complete - mbox: ../../rawdata/mbox/openssl-dev.mbx # 2002-2019 gmail field is redacted due to google groups - # What is the domain of the chosen mailing list archive? - #domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? - #list_key: - # - apr-dev + mod_mbox: + project_key_1: + mailing_list: http://mail-archives.apache.org/mod_mbox/kaiaulu-dev + save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/ + # mbox_file_path is for use only with parse_mbox() function. It is the file to parse + mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/kaiaulu.mbox + project_key_2: + mailing_list: http://mail-archives.apache.org/mod_mbox/kaiaulu-user + save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/ + # mbox_file_path is for use only with parse_mbox() function. It is the file to parse + mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/kaiaulu.mbox + pipermail: + project_key_1: + mailing_list: https://mta.openssl.org/pipermail/openssl-dev/ + save_folder_path: ../../rawdata/openssl/pipermail/save_mbox_mail/ + # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/openssl/pipermail/save_mbox_mail/openssl.mbox + project_key_2: + mailing_list: https://mta.openssl.org/pipermail/openssl-users/ + save_folder_path: ../../rawdata/openssl/pipermail/save_mbox_mail_2/ +# mbox_file_path: ../../rawdata/openssl/pipermail/save_mbox_mail_2/openssl.mbox -#issue_tracker: - #jira: - # Obtained from the project's JIRA URL - #domain: https://issues.apache.org/jira - #project_key: HELIX - # Download using `download_jira_data.Rmd` - #issues: ../../rawdata/issue_tracker/helix_issues.json - #issue_comments: ../../rawdata/issue_tracker/helix_issue_comments.json - #github: - # Obtained from the project's GitHub URL - #owner: apache - #repo: apr - # Download using `download_github_comments.Rmd` - #replies: ../../rawdata/github/apr/ +# issue_tracker: +# jira: +# project_key_1: +# # Obtained from the project's JIRA URL +# domain: https://sailuh.atlassian.net +# project_key: SAILUH +# # Download using `download_jira_data.Rmd` +# issues: ../../rawdata/kaiaulu/jira/issues/sailuh/ +# issue_comments: ../../rawdata/kaiaulu/jira/issue_comments/sailuh/ +# github: +# project_key_1: +# # Obtained from the project's GitHub URL +# owner: sailuh +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/sailuh_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/sailuh_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/sailuh_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/sailuh_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/sailuh_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/sailuh_kaiaulu/ +# project_key_2: +# # Obtained from the project's GitHub URL +# owner: ssunoo2 +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/ssunoo2_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/ssunoo2_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/ssunoo2_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/ssunoo2_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/ssunoo2_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/ssunoo2_kaiaulu/ +# bugzilla: +# project_key_1: +# project_key: kaiaulu +# issues: ../../rawdata/kaiaulu/bugzilla/issues/kaiaulu/ +# issue_comments: ../../rawdata/kaiaulu/bugzilla/issue_comments/kaiaulu/ vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) @@ -117,6 +153,32 @@ tool: - Throw - Parameter - Contain + # dv8: + # # The project folder path to store various intermediate + # # files for DV8 Analysis + # # The folder name will be used in the file names. + # folder_path: ../../analysis/junit/dv8/ + # # the architectural flaws thresholds that should be used + # architectural_flaws: + # cliqueDepends: + # - call + # - use + # crossingCochange: 2 + # crossingFanIn: 4 + # crossingFanOut: 4 + # mvCochange: 2 + # uiCochange: 2 + # uihDepends: + # - call + # - use + # uihInheritance: + # - extend + # - implement + # - public + # - private + # - virtual + # uiHistoryImpact: 10 + # uiStructImpact: 0.01 # Uctags allows finer file-file dependency parsing (e.g. functions, classes, structs) uctags: # See https://github.com/sailuh/kaiaulu/wiki/Universal-Ctags for details @@ -136,6 +198,36 @@ tool: - f # functions r: - f # functions + # # srcML allow to parse src code as text (e.g. identifiers) + # srcml: + # # The file path to where you wish to store the srcml output of the project + # srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/classes/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ # Analysis Configuration # analysis: diff --git a/conf/redhat.yml b/conf/redhat.yml new file mode 100644 index 00000000..49a8d746 --- /dev/null +++ b/conf/redhat.yml @@ -0,0 +1,248 @@ +# -*- yaml -*- +# https://github.com/sailuh/kaiaulu +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. + +# Project Configuration File # +# +# To perform analysis on open source projects, you need to manually +# collect some information from the project's website. As there is +# no standardized website format, this file serves to distill +# important data source information so it can be reused by others +# and understood by Kaiaulu. +# +# Please check https://github.com/sailuh/kaiaulu/tree/master/conf to +# see if a project configuration file already exists. Otherwise, we +# would appreciate if you share your curated file with us by sending a +# Pull Request: https://github.com/sailuh/kaiaulu/pulls +# +# Note, you do NOT need to specify this entire file to conduct analysis. +# Each R Notebook uses a different portion of this file. To know what +# information is used, see the project configuration file section at +# the start of each R Notebook. +# +# Please comment unused parameters instead of deleting them for clarity. +# If you have questions, please open a discussion: +# https://github.com/sailuh/kaiaulu/discussions + +project: + website: http://itm0.shidler.hawaii.edu/kaiaulu + openhub: https://www.openhub.net/p/kaiaulu + +version_control: + # Where is the git log located locally? + # This is the path to the .git of the project repository you are analyzing. + # The .git is hidden, so you can see it using `ls -a` + log: ../../rawdata/kaiaulu/git_repo/.git + # From where the git log was downloaded? + log_url: https://github.com/sailuh/kaiaulu + # List of branches used for analysis + branch: + - master + +# mailing_list: +# mod_mbox: +# project_key_1: +# mailing_list: http://mail-archives.apache.org/mod_mbox/kaiaulu-dev +# save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: http://mail-archives.apache.org/mod_mbox/kaiaulu-user +# save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/kaiaulu.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-dev/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox + +# issue_tracker: +# jira: +# project_key_1: +# # Obtained from the project's JIRA URL +# domain: https://sailuh.atlassian.net +# project_key: SAILUH +# # Download using `download_jira_data.Rmd` +# issues: ../../rawdata/kaiaulu/jira/issues/sailuh/ +# issue_comments: ../../rawdata/kaiaulu/jira/issue_comments/sailuh/ +# github: +# project_key_1: +# # Obtained from the project's GitHub URL +# owner: sailuh +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/sailuh_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/sailuh_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/sailuh_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/sailuh_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/sailuh_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/sailuh_kaiaulu/ +# project_key_2: +# # Obtained from the project's GitHub URL +# owner: ssunoo2 +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/ssunoo2_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/ssunoo2_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/ssunoo2_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/ssunoo2_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/ssunoo2_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/ssunoo2_kaiaulu/ +# bugzilla: +# project_key_1: +# project_key: kaiaulu +# issues: ../../rawdata/kaiaulu/bugzilla/issues/kaiaulu/ +# issue_comments: ../../rawdata/kaiaulu/bugzilla/issue_comments/kaiaulu/ + + +#vulnerabilities: + # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) + # Download at: https://nvd.nist.gov/vuln/data-feeds + #nvd_feed: rawdata/nvdfeed + +# Commit message CVE or Issue Regular Expression (regex) +# See project's commit message for examples to create the regex +commit_message_id_regex: + issue_id: \#[0-9]+ + #cve_id: ? + +filter: + keep_filepaths_ending_with: + - R + remove_filepaths_containing: + - test + + +# Third Party Tools Configuration # +# +# See Kaiaulu's README.md for details on how to setup these tools. +tool: + # Depends allow to parse file-file static dependencies. + depends: + # accepts one language at a time: cpp, java, ruby, python, pom + # You can obtain this information on OpenHub or the project GiHub page right pane. + code_language: java + # Specify which types of Dependencies to keep - see the Depends tool README.md for details. + keep_dependencies_type: + - Cast + - Call + - Import + - Return + - Set + - Use + - Implement + - ImplLink + - Extend + - Create + - Throw + - Parameter + - Contain + # dv8: + # # The project folder path to store various intermediate + # # files for DV8 Analysis + # # The folder name will be used in the file names. + # folder_path: ../../analysis/junit/dv8/ + # # the architectural flaws thresholds that should be used + # architectural_flaws: + # cliqueDepends: + # - call + # - use + # crossingCochange: 2 + # crossingFanIn: 4 + # crossingFanOut: 4 + # mvCochange: 2 + # uiCochange: 2 + # uihDepends: + # - call + # - use + # uihInheritance: + # - extend + # - implement + # - public + # - private + # - virtual + # uiHistoryImpact: 10 + # uiStructImpact: 0.01 + # Uctags allows finer file-file dependency parsing (e.g. functions, classes, structs) + uctags: + # See https://github.com/sailuh/kaiaulu/wiki/Universal-Ctags for details + # What types of file-file dependencies should be considered? If all + # dependencies are specified, Kaiaulu will use all of them if available. + keep_lines_type: + c: + - f # function definition + cpp: + - c # classes + - f # function definition + java: + - c # classes + - m # methods + python: + - c # classes + - f # functions + r: + - f # functions + # # srcML allow to parse src code as text (e.g. identifiers) + # srcml: + # # The file path to where you wish to store the srcml output of the project + # srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/classes/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ + +# Analysis Configuration # +analysis: + # You can specify the intervals in 2 ways: window, or enumeration + window: + # If using gitlog, use start_commit and end_commit. Timestamp is inferred from gitlog + start_commit: 224a729f44f554af311ca52cf01b105ded87499b + end_commit: 74cd4d4835a02e01e310476c6776192ad0d97173 + # Use datetime only if no gitlog is used in the analysis. + #start_datetime: 2013-05-01 00:00:00 + #end_datetime: 2013-11-01 00:00:00 + size_days: 30 +# enumeration: + # If using gitlog, specify the commits +# commit: +# - 9eae9e96f15e1f216162810cef4271a439a74223 +# - f1d2d568776b3708dd6a3077376e2331f9268b04 +# - c33a2ce74c84f0d435bfa2dd8953d132ebf7a77a + # Use datetime only if no gitlog is used in the analysis. Timestamp is inferred from gitlog +# datetime: +# - 2013-05-01 00:00:00 +# - 2013-08-01 00:00:00 +# - 2013-11-01 00:00:00 diff --git a/conf/spark.yml b/conf/spark.yml index bafca660..2e6bf2c2 100644 --- a/conf/spark.yml +++ b/conf/spark.yml @@ -34,7 +34,7 @@ project: version_control: # Where is the git log located locally? - log: ../../rawdata/git_repo/spark/.git + log: ../../rawdata/spark/git_repo/.git # From where the git log was downloaded? log_url: https://github.com/apache/spark # List of branches used for analysis @@ -42,28 +42,66 @@ version_control: - master mailing_list: - # Where is the mbox located locally? - #mbox: ../rawdata/mbox/spark-dev.mbox - # What is the domain of the chosen mailing list archive? - #domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? - #list_key: - # - spark-dev + mod_mbox: + project_key_1: + mailing_list: http://mail-archives.apache.org/mod_mbox/spark-dev + save_folder_path: ../../rawdata/spark/mod_mbox/save_mbox_mail/ + # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/spark/mod_mbox/save_mbox_mail/spark.mbox + project_key_2: + mailing_list: http://mail-archives.apache.org/mod_mbox/spark-user + save_folder_path: ../../rawdata/spark/mod_mbox/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/kaiaulu.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-dev/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox -issue_tracker: - jira: - # Obtained from the project's JIRA URL - #domain: https://issues.apache.org/jira - #project_key: SPARK - # Download using `download_jira_data.Rmd` - #issues: ../../rawdata/issue_tracker/spark_issues.json - #issue_comments: ../../rawdata/issue_tracker/sparj_issue_comments.json - github: - # Obtained from the project's GitHub URL - #owner: apache - #repo: spark - # Download using `download_github_comments.Rmd` - #replies: ../../rawdata/github/spark/ +# issue_tracker: +# jira: +# project_key_1: +# # Obtained from the project's JIRA URL +# domain: https://sailuh.atlassian.net +# project_key: SAILUH +# # Download using `download_jira_data.Rmd` +# issues: ../../rawdata/kaiaulu/jira/issues/sailuh/ +# issue_comments: ../../rawdata/kaiaulu/jira/issue_comments/sailuh/ +# github: +# project_key_1: +# # Obtained from the project's GitHub URL +# owner: sailuh +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/sailuh_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/sailuh_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/sailuh_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/sailuh_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/sailuh_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/sailuh_kaiaulu/ +# project_key_2: +# # Obtained from the project's GitHub URL +# owner: ssunoo2 +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/ssunoo2_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/ssunoo2_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/ssunoo2_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/ssunoo2_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/ssunoo2_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/ssunoo2_kaiaulu/ +# bugzilla: +# project_key_1: +# project_key: kaiaulu +# issues: ../../rawdata/kaiaulu/bugzilla/issues/kaiaulu/ +# issue_comments: ../../rawdata/kaiaulu/bugzilla/issue_comments/kaiaulu/ #vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) @@ -113,6 +151,32 @@ tool: # - Throw # - Parameter # - Contain + # dv8: + # # The project folder path to store various intermediate + # # files for DV8 Analysis + # # The folder name will be used in the file names. + # folder_path: ../../analysis/junit/dv8/ + # # the architectural flaws thresholds that should be used + # architectural_flaws: + # cliqueDepends: + # - call + # - use + # crossingCochange: 2 + # crossingFanIn: 4 + # crossingFanOut: 4 + # mvCochange: 2 + # uiCochange: 2 + # uihDepends: + # - call + # - use + # uihInheritance: + # - extend + # - implement + # - public + # - private + # - virtual + # uiHistoryImpact: 10 + # uiStructImpact: 0.01 # Uctags allows finer file-file dependency parsing (e.g. functions, classes, structs) uctags: # See https://github.com/sailuh/kaiaulu/wiki/Universal-Ctags for details @@ -132,6 +196,36 @@ tool: - f # functions r: - f # functions + # # srcML allow to parse src code as text (e.g. identifiers) + # srcml: + # # The file path to where you wish to store the srcml output of the project + # srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/classes/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ # Analysis Configuration # analysis: diff --git a/conf/thrift.yml b/conf/thrift.yml index f47062b2..1f181200 100644 --- a/conf/thrift.yml +++ b/conf/thrift.yml @@ -34,7 +34,7 @@ project: version_control: # Where is the git log located locally? - log: ../../rawdata/git_repo/thrift/.git # cloned Apache Thrift repo and put path to its .git file + log: ../../rawdata/thrift/git_repo/.git # cloned Apache Thrift repo and put path to its .git file # From where the git log was downloaded? log_url: https://github.com/apache/thrift # List of branches used for analysis @@ -42,28 +42,66 @@ version_control: - master mailing_list: - # Where is the mbox located locally? - mbox: ../../rawdata/mbox/thrift-dev.mbox # Download here: https://cdn.lfdr.de/stmc/ieee_tse_data/mail/thrift-dev.mbox - # What is the domain of the chosen mailing list archive? - domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? - list_key: - - thrift-dev + mod_mbox: + project_key_1: + mailing_list: http://mail-archives.apache.org/mod_mbox/thrift-dev + save_folder_path: ../../rawdata/thrift/mod_mbox/save_mbox_mail/ + # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/thrift/mod_mbox/save_mbox_mail/thrift.mbox + project_key_2: + mailing_list: http://mail-archives.apache.org/mod_mbox/thrift-user + save_folder_path: ../../rawdata/thrift/mod_mbox/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/kaiaulu.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-dev/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox issue_tracker: jira: - # Obtained from the project's JIRA URL - domain: https://issues.apache.org/jira - project_key: THRIFT - # Download using `download_jira_data.Rmd` - issues: ../../rawdata/issue_tracker/thrift_issues.json - issue_comments: ../../rawdata/issue_tracker/thrift_issue_comments.json + project_key_1: + # Obtained from the project's JIRA URL + domain: https://issues.apache.org/jira + project_key: THRIFT + # Download using `download_jira_data.Rmd` + issues: ../../rawdata/thrift/jira/issues/thrift/ + issue_comments: ../../rawdata/thrift/jira/issue_comments/thrift/ github: - # Obtained from the project's GitHub URL - owner: apache - repo: thrift - # Download using `download_github_comments.Rmd` - replies: ../../rawdata/github/thrift/ + project_key_1: + # Obtained from the project's GitHub URL + owner: apache + repo: thrift + # Download using `download_github_comments.Rmd` + issue_or_pr_comment: ../../rawdata/thrift/github/issue_or_pr_comment/apache_thrift/ + issue: ../../rawdata/thrift/github/issue/apache_thrift/ + issue_search: ../../rawdata/thrift/github/issue_search/apache_thrift/ + issue_event: ../../rawdata/thrift/github/issue_event/apache_thrift/ + pull_request: ../../rawdata/thrift/github/pull_request/apache_thrift/ + commit: ../../rawdata/thrift/github/commit/apache_thrift/ +# project_key_2: +# # Obtained from the project's GitHub URL +# owner: ssunoo2 +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/ssunoo2_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/ssunoo2_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/ssunoo2_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/ssunoo2_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/ssunoo2_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/ssunoo2_kaiaulu/ +# bugzilla: +# project_key_1: +# project_key: kaiaulu +# issues: ../../rawdata/kaiaulu/bugzilla/issues/kaiaulu/ +# issue_comments: ../../rawdata/kaiaulu/bugzilla/issue_comments/kaiaulu/ #vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) @@ -113,6 +151,32 @@ tool: - Throw - Parameter - Contain + # dv8: + # # The project folder path to store various intermediate + # # files for DV8 Analysis + # # The folder name will be used in the file names. + # folder_path: ../../analysis/junit/dv8/ + # # the architectural flaws thresholds that should be used + # architectural_flaws: + # cliqueDepends: + # - call + # - use + # crossingCochange: 2 + # crossingFanIn: 4 + # crossingFanOut: 4 + # mvCochange: 2 + # uiCochange: 2 + # uihDepends: + # - call + # - use + # uihInheritance: + # - extend + # - implement + # - public + # - private + # - virtual + # uiHistoryImpact: 10 + # uiStructImpact: 0.01 # Uctags allows finer file-file dependency parsing (e.g. functions, classes, structs) uctags: # See https://github.com/sailuh/kaiaulu/wiki/Universal-Ctags for details @@ -132,6 +196,36 @@ tool: - f # functions r: - f # functions + # # srcML allow to parse src code as text (e.g. identifiers) + # srcml: + # # The file path to where you wish to store the srcml output of the project + # srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/classes/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ # Analysis Configuration # analysis: diff --git a/conf/tomcat.yml b/conf/tomcat.yml index 33884bac..d689fa9d 100644 --- a/conf/tomcat.yml +++ b/conf/tomcat.yml @@ -36,7 +36,7 @@ version_control: # Where is the git log located locally? # This is the path to the .git of the project repository you are analyzing. # The .git is hidden, so you can see it using `ls -a` - log: ../../rawdata/git_repo/Tomcat/.git + log: ../../rawdata/tomcat/git_repo/.git # From where the git log was downloaded? log_url: https://github.com/apache/tomcat # List of branches used for analysis @@ -44,31 +44,66 @@ version_control: - master mailing_list: - # Where is the mbox located locally? - #mbox: ../../rawdata/mbox/tomcat-dev_2013_2019.mbox - # What is the domain of the chosen mailing list archive? - domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? - list_key: - - tomcat-dev + mod_mbox: + project_key_1: + mailing_list: http://mail-archives.apache.org/mod_mbox/tomcat-dev + save_folder_path: ../../rawdata/tomcat/mod_mbox/save_mbox_mail/ + # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/tomcat/mod_mbox/save_mbox_mail/tomcat.mbox + project_key_2: + mailing_list: http://mail-archives.apache.org/mod_mbox/tomcat-users + save_folder_path: ../../rawdata/tomcat/mod_mbox/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/tomcat.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-dev/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox -issue_tracker: - jira: - # Obtained from the project's JIRA URL - #domain: https://issues.apache.org/jira - #project_key: GERONIMO - # Download using `download_jira_data.Rmd` - #issues: ../../rawdata/issue_tracker/geronimo_issues.json - #issue_comments: ../../rawdata/issue_tracker/geronimo_issue_comments.json - github: - # Obtained from the project's GitHub URL - #owner: apache - #repo: geronimo - # Download using `download_github_comments.Rmd` - #replies: ../../rawdata/github/geronimo/ - # Currently not supported - #bugzilla: - #url: https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&no_redirect=1&order=Importance&product=Tomcat%209&query_format=specific +# issue_tracker: +# jira: +# project_key_1: +# # Obtained from the project's JIRA URL +# domain: https://sailuh.atlassian.net +# project_key: SAILUH +# # Download using `download_jira_data.Rmd` +# issues: ../../rawdata/kaiaulu/jira/issues/sailuh/ +# issue_comments: ../../rawdata/kaiaulu/jira/issue_comments/sailuh/ +# github: +# project_key_1: +# # Obtained from the project's GitHub URL +# owner: sailuh +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/sailuh_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/sailuh_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/sailuh_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/sailuh_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/sailuh_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/sailuh_kaiaulu/ +# project_key_2: +# # Obtained from the project's GitHub URL +# owner: ssunoo2 +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/ssunoo2_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/ssunoo2_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/ssunoo2_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/ssunoo2_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/ssunoo2_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/ssunoo2_kaiaulu/ +# bugzilla: +# project_key_1: +# project_key: kaiaulu +# issues: ../../rawdata/kaiaulu/bugzilla/issues/kaiaulu/ +# issue_comments: ../../rawdata/kaiaulu/bugzilla/issue_comments/kaiaulu/ #vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) @@ -118,6 +153,32 @@ tool: - Throw - Parameter - Contain + # dv8: + # # The project folder path to store various intermediate + # # files for DV8 Analysis + # # The folder name will be used in the file names. + # folder_path: ../../analysis/junit/dv8/ + # # the architectural flaws thresholds that should be used + # architectural_flaws: + # cliqueDepends: + # - call + # - use + # crossingCochange: 2 + # crossingFanIn: 4 + # crossingFanOut: 4 + # mvCochange: 2 + # uiCochange: 2 + # uihDepends: + # - call + # - use + # uihInheritance: + # - extend + # - implement + # - public + # - private + # - virtual + # uiHistoryImpact: 10 + # uiStructImpact: 0.01 # Uctags allows finer file-file dependency parsing (e.g. functions, classes, structs) uctags: # See https://github.com/sailuh/kaiaulu/wiki/Universal-Ctags for details @@ -137,6 +198,36 @@ tool: - f # functions r: - f # functions + # # srcML allow to parse src code as text (e.g. identifiers) + # srcml: + # # The file path to where you wish to store the srcml output of the project + # srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/classes/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ # Analysis Configuration # analysis: diff --git a/conf/tse_apex.yml b/conf/tse_apex.yml index 46841ce9..1472c340 100644 --- a/conf/tse_apex.yml +++ b/conf/tse_apex.yml @@ -36,36 +36,74 @@ version_control: # Where is the git log located locally? # This is the path to the .git of the project repository you are analyzing. # The .git is hidden, so you can see it using `ls -a` - log: ../../../../tse_motif_2021/dataset/gitlog/apex-core/.git + log: ../../rawdata/apex/git_repo/.git # From where the git log was downloaded? log_url: https://github.com/apache/apex-core # List of branches used for analysis branch: - master -mailing_list: - # Where is the mbox located locally? - mbox: ../../../../tse_motif_2021/dataset/mbox/apex-dev.mbox - # What is the domain of the chosen mailing list archive? -# domain: http://mail-archives.apache.org/mod_mbox - # Which lists of the domain will be used? -# list_key: -# - geronimo-dev +# mailing_list: +# mod_mbox: +# project_key_1: +# mailing_list: http://mail-archives.apache.org/mod_mbox/kaiaulu-dev +# save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: http://mail-archives.apache.org/mod_mbox/kaiaulu-user +# save_folder_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/mod_mbox/save_mbox_mail_2/kaiaulu.mbox +# pipermail: +# project_key_1: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-dev/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail/kaiaulu.mbox +# project_key_2: +# mailing_list: https://mta.openssl.org/pipermail/kaiaulu-users/ +# save_folder_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/ +# # mbox_file_path is for use only with parse_mbox() function. It is the file to parse +# mbox_file_path: ../../rawdata/kaiaulu/pipermail/save_mbox_mail_2/kaiaulu.mbox issue_tracker: jira: - # Obtained from the project's JIRA URL - domain: https://issues.apache.org/jira - project_key: APEXCORE - # Download using `download_jira_data.Rmd` - issues: ../../../../tse_motif_2021/dataset/jira/apex - #issue_comments: ../../rawdata/issue_tracker/geronimo_issue_comments.json - #github: - # Obtained from the project's GitHub URL - #owner: apache - #repo: geronimo - # Download using `download_github_comments.Rmd` - #replies: ../../rawdata/github/geronimo/ + project_key_1: + # Obtained from the project's JIRA URL + domain: https://issues.apache.org/jira + project_key: APEXCORE + # Download using `download_jira_data.Rmd` + issues: ../../rawdata/apex/jira/issues/apexcore/ + issue_comments: ../../rawdata/apex/jira/issue_comments/apexcore/ +# github: +# project_key_1: +# # Obtained from the project's GitHub URL +# owner: sailuh +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/sailuh_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/sailuh_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/sailuh_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/sailuh_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/sailuh_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/sailuh_kaiaulu/ +# project_key_2: +# # Obtained from the project's GitHub URL +# owner: ssunoo2 +# repo: kaiaulu +# # Download using `download_github_comments.Rmd` +# issue_or_pr_comment: ../../rawdata/kaiaulu/github/issue_or_pr_comment/ssunoo2_kaiaulu/ +# issue: ../../rawdata/kaiaulu/github/issue/ssunoo2_kaiaulu/ +# issue_search: ../../rawdata/kaiaulu/github/issue_search/ssunoo2_kaiaulu/ +# issue_event: ../../rawdata/kaiaulu/github/issue_event/ssunoo2_kaiaulu/ +# pull_request: ../../rawdata/kaiaulu/github/pull_request/ssunoo2_kaiaulu/ +# commit: ../../rawdata/kaiaulu/github/commit/ssunoo2_kaiaulu/ +# bugzilla: +# project_key_1: +# project_key: kaiaulu +# issues: ../../rawdata/kaiaulu/bugzilla/issues/kaiaulu/ +# issue_comments: ../../rawdata/kaiaulu/bugzilla/issue_comments/kaiaulu/ #vulnerabilities: # Folder path with nvd cve feeds (e.g. nvdcve-1.1-2018.json) @@ -121,7 +159,7 @@ tool: # The project folder path to store various intermediate # files for DV8 Analysis # The folder name will be used in the file names. - folder_path: ../../analysis/dv8/tse_apex + folder_path: ../../analysis/apex/dv8/ # the architectural flaws thresholds that should be used architectural_flaws: cliqueDepends: @@ -162,6 +200,36 @@ tool: - f # functions r: - f # functions + # # srcML allow to parse src code as text (e.g. identifiers) + # srcml: + # # The file path to where you wish to store the srcml output of the project + # srcml_path: ../../analysis/junit5/srcml/srcml_junit.xml + # pattern4: + # # The file path to where you wish to store the classes of the pattern4 analysis + # class_folder_path: ../../rawdata/junit5/pattern4/classes/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # # The file path to where you wish to store the output of the pattern4 analysis + # output_filepath: ../../analysis/junit5/pattern4/ + # compile_note: > + # 1. Switch Java version to Java 17: + # https://stackoverflow.com/questions/69875335/macos-how-to-install-java-17 + # 2. Disable VPN to pull modules from Gradle Plugin Portal. + # 3. Use sudo ./gradlew build + # 4. After building, locate the engine class files and specify as the class_folder_path: + # in this case they are in: /path/to/junit5/analysis/junit-platform-engine/build/classes/java/main/org/junit/platform/engine/ + # understand: + # # Accepts one language at a time: ada, assembly, c/c++, c#, fortran, java, jovial, delphi/pascal, python, vhdl, basic, javascript + # code_language: java + # # Specify which types of Dependencies to keep + # keep_dependencies_type: + # - Import + # - Call + # - Create + # - Use + # - Type GenericArgument + # # Where the files to analyze should be stored + # project_path: ../../rawdata/kaiaulu/git_repo/understand/ + # # Where the output for the understands analysis is stored + # output_path: ../../analysis/kaiaulu/understand/ # Analysis Configuration # analysis: diff --git a/man/commit_message_id_coverage.Rd b/man/commit_message_id_coverage.Rd index 68fad761..e7f0c6ef 100644 --- a/man/commit_message_id_coverage.Rd +++ b/man/commit_message_id_coverage.Rd @@ -22,9 +22,9 @@ Calculates the number of commits from the git log which contains the message id. \code{\link{parse_gitlog}} to obtain additions and deletions from gitlog Other {metrics}: +\code{\link{metric_churn}()}, \code{\link{metric_churn_per_commit_interval}()}, \code{\link{metric_churn_per_commit_per_file}()}, -\code{\link{metric_churn}()}, \code{\link{metric_file_bug_churn}()}, \code{\link{metric_file_bug_frequency}()}, \code{\link{metric_file_churn}()}, diff --git a/man/download_jira_issues_by_date.Rd b/man/download_jira_issues_by_date.Rd index 697fdb48..ccb3c7c2 100644 --- a/man/download_jira_issues_by_date.Rd +++ b/man/download_jira_issues_by_date.Rd @@ -72,13 +72,13 @@ For further details on the `created` JQL Query see [the associated JIRA API docu \code{\link{refresh_jira_issues}} to obtain more recent data from any of the downloader functions Other jira: -\code{\link{download_jira_issues_by_issue_key}()}, \code{\link{download_jira_issues}()}, +\code{\link{download_jira_issues_by_issue_key}()}, \code{\link{refresh_jira_issues}()} Other downloaders: -\code{\link{download_jira_issues_by_issue_key}()}, \code{\link{download_jira_issues}()}, +\code{\link{download_jira_issues_by_issue_key}()}, \code{\link{refresh_jira_issues}()} } \concept{downloaders} diff --git a/man/download_jira_issues_by_issue_key.Rd b/man/download_jira_issues_by_issue_key.Rd index b452878f..8213ee17 100644 --- a/man/download_jira_issues_by_issue_key.Rd +++ b/man/download_jira_issues_by_issue_key.Rd @@ -67,13 +67,13 @@ For further details on the `issueKey` JQL Query see [the associated JIRA API doc \code{\link{refresh_jira_issues}} to obtain more recent data from any of the downloader functions Other jira: -\code{\link{download_jira_issues_by_date}()}, \code{\link{download_jira_issues}()}, +\code{\link{download_jira_issues_by_date}()}, \code{\link{refresh_jira_issues}()} Other downloaders: -\code{\link{download_jira_issues_by_date}()}, \code{\link{download_jira_issues}()}, +\code{\link{download_jira_issues_by_date}()}, \code{\link{refresh_jira_issues}()} } \concept{downloaders} diff --git a/man/get_bugzilla_issue_comment_path.Rd b/man/get_bugzilla_issue_comment_path.Rd new file mode 100644 index 00000000..e8832ae1 --- /dev/null +++ b/man/get_bugzilla_issue_comment_path.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_bugzilla_issue_comment_path} +\alias{get_bugzilla_issue_comment_path} +\title{Returns the local folder path for Bugzilla issue comments for a specific project key.} +\usage{ +get_bugzilla_issue_comment_path(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The local folder path for Bugzilla issue comments for project specified by key `project_key_index`. +} +\description{ +This function returns the local folder path for Bugzilla issue +comments for a specific project key, that is specified in the input parameter +`config_file`. The input, `config_file` must be a parsed configuration file. +The function will inform the user if the folder path for Bugzilla issue +comments exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_bugzilla_issue_path.Rd b/man/get_bugzilla_issue_path.Rd new file mode 100644 index 00000000..f5438062 --- /dev/null +++ b/man/get_bugzilla_issue_path.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_bugzilla_issue_path} +\alias{get_bugzilla_issue_path} +\title{Returns the local folder path for Bugzilla issues for a specific project key.} +\usage{ +get_bugzilla_issue_path(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The local folder path for Bugzilla issues for project specified by key `project_key_index`. +} +\description{ +This function returns the local folder path for Bugzilla issues +for a specific project key, that is specified in the input parameter +`config_file`. The input, `config_file` must be a parsed configuration file. +The function will inform the user if the folder path for Bugzilla issues +exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_bugzilla_project_key.Rd b/man/get_bugzilla_project_key.Rd new file mode 100644 index 00000000..a29601e6 --- /dev/null +++ b/man/get_bugzilla_project_key.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_bugzilla_project_key} +\alias{get_bugzilla_project_key} +\title{Returns the name of the Bugzilla project key for a specific project key index.} +\usage{ +get_bugzilla_project_key(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The Bugzilla project key name for project specified by key `project_key_index`. +} +\description{ +This function returns the name of the Bugzilla project key for +a specific project key, that is specified in the input parameter +`config_file`. The input, `config_file` must be a parsed configuration file. +The function will inform the user if the name of the Bugzilla project key +exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_cveid_regex.Rd b/man/get_cveid_regex.Rd new file mode 100644 index 00000000..3e6064e9 --- /dev/null +++ b/man/get_cveid_regex.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_cveid_regex} +\alias{get_cveid_regex} +\title{Returns the cve (Common Vulnerabilities and Exposures) regular expression +for commit messages.} +\usage{ +get_cveid_regex(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The commit message CVE regular expression. +} +\description{ +This function returns the cve regular expression for commit +messages, that is specified in the input parameter `config_file`. The input, +`config_file` must be a parsed configuration file. The function will inform +the user if the cve regular expression for commit messages exists in the +parsed configuration file, `config_file`. +} diff --git a/man/get_depends_code_language.Rd b/man/get_depends_code_language.Rd new file mode 100644 index 00000000..bc8cca83 --- /dev/null +++ b/man/get_depends_code_language.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_depends_code_language} +\alias{get_depends_code_language} +\title{Returns the depends code language for analysis.} +\usage{ +get_depends_code_language(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The code language for parsing file-file static dependencies. +} +\description{ +This function returns the specified code language that should +be used to parse file-file static dependencies with the depends tool, that +is specified in the input parameter `config_file`. The input, `config_file` +must be a parsed configuration file. The function will inform the user if +the depends code language exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_depends_keep_dependencies_type.Rd b/man/get_depends_keep_dependencies_type.Rd new file mode 100644 index 00000000..54897420 --- /dev/null +++ b/man/get_depends_keep_dependencies_type.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_depends_keep_dependencies_type} +\alias{get_depends_keep_dependencies_type} +\title{Returns a list of the types of dependencies to keep for analysis.} +\usage{ +get_depends_keep_dependencies_type(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +A list of the types of depends dependencies to keep for analysis. +} +\description{ +This function returns the specified types of dependencies to +keep for analysis with the depends tool, that is specified in the input +parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the list of the +types of dependencies exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_dv8_flaws_params.Rd b/man/get_dv8_flaws_params.Rd new file mode 100644 index 00000000..41a076f4 --- /dev/null +++ b/man/get_dv8_flaws_params.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_dv8_flaws_params} +\alias{get_dv8_flaws_params} +\title{Returns the list of architectural flaws thresholds for DV8 analysis.} +\usage{ +get_dv8_flaws_params(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The list of DV8 architectural flaws thresholds. +} +\description{ +This function returns the list of architectural flaws thresholds +for DV8 analysis, that is specified in the input parameter `config_file`. +The input, `config_file` must be a parsed configuration file. The function +will inform the user if the list of architectural flaws thresholds +exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_dv8_folder_path.Rd b/man/get_dv8_folder_path.Rd new file mode 100644 index 00000000..9c183712 --- /dev/null +++ b/man/get_dv8_folder_path.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_dv8_folder_path} +\alias{get_dv8_folder_path} +\title{Returns the path to the folder used to store files for DV8 analysis.} +\usage{ +get_dv8_folder_path(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The DV8 project folder path. +} +\description{ +This function returns the path to the folder that will be +used to store various intermediate files for DV8 analysis, that is specified +in the input parameter `config_file`. The input, `config_file` must be a +parsed configuration file. The function will inform the user if the path +path to the folder for intermediate file storage for DV8 analysis exists in +the parsed configuration file, `config_file`. +} diff --git a/man/get_enumeration_commits.Rd b/man/get_enumeration_commits.Rd new file mode 100644 index 00000000..9f910b75 --- /dev/null +++ b/man/get_enumeration_commits.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_enumeration_commits} +\alias{get_enumeration_commits} +\title{Returns the list of enumerated commit intervals for analysis.} +\usage{ +get_enumeration_commits(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The list of enumerated commit intervals. +} +\description{ +This function returns a list of enumerated commit intervals, +that is specified in the input parameter `config_file`. The input, +`config_file` must be a parsed configuration file. The function will inform +the user if the list of enumerated commit intervals exists in the parsed +configuration file, `config_file`. +} diff --git a/man/get_file_extensions.Rd b/man/get_file_extensions.Rd new file mode 100644 index 00000000..ea97656d --- /dev/null +++ b/man/get_file_extensions.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_file_extensions} +\alias{get_file_extensions} +\title{Returns the list of file extensions used for filtering files to keep.} +\usage{ +get_file_extensions(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The list of file extensions to keep. +} +\description{ +This function returns the list of file extensions that will be +used for filtering files specified in the input parameter `config_file`. The +input, `config_file` must be a parsed configuration file. The function will +inform the user if the list of file extensions exists in the parsed +configuration file, `config_file`. +} diff --git a/man/get_filter_commit_size.Rd b/man/get_filter_commit_size.Rd new file mode 100644 index 00000000..546be0cd --- /dev/null +++ b/man/get_filter_commit_size.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_filter_commit_size} +\alias{get_filter_commit_size} +\title{Returns the commit size threshold to remove file paths.} +\usage{ +get_filter_commit_size(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The commit size to filter out. +} +\description{ +This function returns an integer number that represents the +threshold for a commit size to remove file paths specified in the input +parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the commit size +threshold exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_git_branches.Rd b/man/get_git_branches.Rd new file mode 100644 index 00000000..4e89dca8 --- /dev/null +++ b/man/get_git_branches.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_git_branches} +\alias{get_git_branches} +\title{Returns the list of git branches used for analysis in the current project.} +\usage{ +get_git_branches(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The list of git branches. +} +\description{ +This function returns a list of the git branches used for +analysis in the current project specified in the input parameter +`config_file`. The input, `config_file` must be a parsed configuration file. +The function will inform the user if the list of branches to be analyzed +exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_git_repo_path.Rd b/man/get_git_repo_path.Rd new file mode 100644 index 00000000..5a02751e --- /dev/null +++ b/man/get_git_repo_path.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_git_repo_path} +\alias{get_git_repo_path} +\title{Returns the path to the .git of the project repository that is being analyzed.} +\usage{ +get_git_repo_path(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The local git repository path specified in `config_file`. +} +\description{ +This function returns the specific path to the .git of the +project repository that is being analyzed specified in the input parameter +`config_file`. The input, `config_file` must be a parsed configuration file. +The function will inform the user if the .git path of the project repository +exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_github_commit_path.Rd b/man/get_github_commit_path.Rd new file mode 100644 index 00000000..072cab45 --- /dev/null +++ b/man/get_github_commit_path.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_github_commit_path} +\alias{get_github_commit_path} +\title{Returns the local folder path for GitHub commits for a specific project key.} +\usage{ +get_github_commit_path(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The local folder path for GitHub commits for project specified by key `project_key_index`. +} +\description{ +This function returns the local folder path for GitHub commits +for a specific project key, that is specified in the input +parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the local folder +path for the commits exists in the parsed configuration file, +`config_file`. +} diff --git a/man/get_github_issue_event_path.Rd b/man/get_github_issue_event_path.Rd new file mode 100644 index 00000000..b5ed60d4 --- /dev/null +++ b/man/get_github_issue_event_path.Rd @@ -0,0 +1,25 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_github_issue_event_path} +\alias{get_github_issue_event_path} +\title{Returns the local folder path for GitHub issue events for a specific project +key.} +\usage{ +get_github_issue_event_path(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The local folder path for GitHub issue events for project specified by key `project_key_index`. +} +\description{ +This function returns the local folder path for GitHub issue +events for a specific project key, that is specified in the input +parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the local folder +path for the issue events exists in the parsed configuration file, +`config_file`. +} diff --git a/man/get_github_issue_or_pr_comment_path.Rd b/man/get_github_issue_or_pr_comment_path.Rd new file mode 100644 index 00000000..c41ef4ac --- /dev/null +++ b/man/get_github_issue_or_pr_comment_path.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_github_issue_or_pr_comment_path} +\alias{get_github_issue_or_pr_comment_path} +\title{Returns the local folder path for GitHub Issue or Pull Request comments for +a specific project key.} +\usage{ +get_github_issue_or_pr_comment_path(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The local folder path for GitHub Issues or PR comments for project specified by key `project_key_index`. +} +\description{ +This function returns the local folder path for GitHub Issue or +Pull Request comments for a specific project key, that is specified in the +input parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the local folder +path for the comments exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_github_issue_path.Rd b/man/get_github_issue_path.Rd new file mode 100644 index 00000000..40f4eb46 --- /dev/null +++ b/man/get_github_issue_path.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_github_issue_path} +\alias{get_github_issue_path} +\title{Returns the local folder path for GitHub issues for a specific project key.} +\usage{ +get_github_issue_path(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The local folder path for GitHub issues for project specified by key `project_key_index`. +} +\description{ +This function returns the local folder path for GitHub issues +for a specific project key, that is specified in the input parameter +`config_file`. The input, `config_file` must be a parsed configuration file. +The function will inform the user if the folder path for GitHub issues exists +in the parsed configuration file, `config_file`. +} diff --git a/man/get_github_issue_search_path.Rd b/man/get_github_issue_search_path.Rd new file mode 100644 index 00000000..b7b17056 --- /dev/null +++ b/man/get_github_issue_search_path.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_github_issue_search_path} +\alias{get_github_issue_search_path} +\title{Returns the local folder path for GitHub Issue Searches for a specific +project key.} +\usage{ +get_github_issue_search_path(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The local folder path for GitHub issue search for project specified by key `project_key_index`. +} +\description{ +This function returns the local folder path for GitHub Issue +Searches for a specific project key, that is specified in the input parameter +`config_file`. The input, `config_file` must be a parsed configuration file. +The function will inform the user if the local folder path for the issue +searches exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_github_keys.Rd b/man/get_github_keys.Rd new file mode 100644 index 00000000..884101e6 --- /dev/null +++ b/man/get_github_keys.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_github_keys} +\alias{get_github_keys} +\title{Returns the list of GitHub issue tracker project keys.} +\usage{ +get_github_keys(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The list of GitHub issue tracker project keys. +} +\description{ +This function returns the list of GitHub issue tracker project +keys, that is specified in the input parameter `config_file`. The input, +`config_file` must be a parsed configuration file. The function will inform +the user if the project keys exist in the parsed configuration +file, `config_file`. +} diff --git a/man/get_github_owner.Rd b/man/get_github_owner.Rd new file mode 100644 index 00000000..af80dfb8 --- /dev/null +++ b/man/get_github_owner.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_github_owner} +\alias{get_github_owner} +\title{Returns the owner for a GitHub repository for a specific project key.} +\usage{ +get_github_owner(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The GitHub project owner name for project specified by key `project_key_index`. +} +\description{ +This function returns the owner for a GitHub repository for a +specific project key, that is specified in the input parameter `config_file`. +The input, `config_file` must be a parsed configuration file. The function +will inform the user if the owner for the GitHub repository exists in the +parsed configuration file, `config_file`. +} diff --git a/man/get_github_pull_request_path.Rd b/man/get_github_pull_request_path.Rd new file mode 100644 index 00000000..75af220d --- /dev/null +++ b/man/get_github_pull_request_path.Rd @@ -0,0 +1,25 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_github_pull_request_path} +\alias{get_github_pull_request_path} +\title{Returns the local folder path for GitHub Pull Requests for a specific +project key.} +\usage{ +get_github_pull_request_path(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The local folder path for GitHub pull requests for project specified by key `project_key_index`. +} +\description{ +This function returns the local folder path for GitHub Pull +Requests for a specific project key, that is specified in the input +parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the local folder +path for the pull requests exists in the parsed configuration file, +`config_file`. +} diff --git a/man/get_github_repo.Rd b/man/get_github_repo.Rd new file mode 100644 index 00000000..5f474787 --- /dev/null +++ b/man/get_github_repo.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_github_repo} +\alias{get_github_repo} +\title{Returns the name of the GitHub repository for a specific project key.} +\usage{ +get_github_repo(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The name of the GitHub repository for project specified by key `project_key_index`. +} +\description{ +This function returns the name of the GitHub repository for a +specific project key, that is specified in the input parameter `config_file`. +The input, `config_file` must be a parsed configuration file. The function +will inform the user if the name of the GitHub repository exists in the +parsed configuration file, `config_file`. +} diff --git a/man/get_issue_id_regex.Rd b/man/get_issue_id_regex.Rd new file mode 100644 index 00000000..b8f47897 --- /dev/null +++ b/man/get_issue_id_regex.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_issue_id_regex} +\alias{get_issue_id_regex} +\title{Returns the issue Id regular expression for commit messages.} +\usage{ +get_issue_id_regex(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The commit message issue Id regular expression. +} +\description{ +This function returns the issue Id regular expression for commit +messages, that is specified in the input parameter `config_file`. The input, +`config_file` must be a parsed configuration file. The function will inform +the user if the issue Id regular expression for commit messages exists in the +parsed configuration file, `config_file`. +} diff --git a/man/get_jira_domain.Rd b/man/get_jira_domain.Rd new file mode 100644 index 00000000..7384713f --- /dev/null +++ b/man/get_jira_domain.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_jira_domain} +\alias{get_jira_domain} +\title{Returns the Jira project domain for a specific project key.} +\usage{ +get_jira_domain(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The Jira domain for project specified by key `project_key_index`. +} +\description{ +This function returns the Jira project domain for a specific +project key, that is specified in the input parameter `config_file`. +The input, `config_file` must be a parsed configuration file. The function +will inform the user if the domain exists in the parsed configuration file, +`config_file`. +} diff --git a/man/get_jira_issues_comments_path.Rd b/man/get_jira_issues_comments_path.Rd new file mode 100644 index 00000000..97078a2e --- /dev/null +++ b/man/get_jira_issues_comments_path.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_jira_issues_comments_path} +\alias{get_jira_issues_comments_path} +\title{Returns the local folder path for Jira issue comments for a specific +project key.} +\usage{ +get_jira_issues_comments_path(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The folder path for Jira issue comments for project specified by key `project_key_index`. +} +\description{ +This function returns the local folder path for Jira issue +comments for a specific project key, that is specified in the input +parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the local folder +path for the comments exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_jira_issues_path.Rd b/man/get_jira_issues_path.Rd new file mode 100644 index 00000000..6d3c31d9 --- /dev/null +++ b/man/get_jira_issues_path.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_jira_issues_path} +\alias{get_jira_issues_path} +\title{Returns the local folder path for Jira issues for a specific project key.} +\usage{ +get_jira_issues_path(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The Jira issue folder path for project specified by key `project_key_index`. +} +\description{ +This function returns the folder path for Jira issues for a +specific project key, that is specified in the input parameter `config_file`. +The input, `config_file` must be a parsed configuration file. The function +will inform the user if the folder path for Jira issues exists in the parsed +configuration file, `config_file`. +} diff --git a/man/get_jira_keys.Rd b/man/get_jira_keys.Rd new file mode 100644 index 00000000..46b1ca31 --- /dev/null +++ b/man/get_jira_keys.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_jira_keys} +\alias{get_jira_keys} +\title{Returns the list of Jira issue tracker project keys.} +\usage{ +get_jira_keys(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The list of Jira issue tracker project keys. +} +\description{ +This function returns the list of Jira issue tracker project +keys, that is specified in the input parameter `config_file`. The input, +`config_file` must be a parsed configuration file. The function will inform +the user if the project keys exist in the parsed configuration +file, `config_file`. +} diff --git a/man/get_jira_project_key_name.Rd b/man/get_jira_project_key_name.Rd new file mode 100644 index 00000000..bfe36336 --- /dev/null +++ b/man/get_jira_project_key_name.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_jira_project_key_name} +\alias{get_jira_project_key_name} +\title{Returns the name of the Jira project key for a specific project key.} +\usage{ +get_jira_project_key_name(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The Jira project key name for project specified by key `project_key_index`. +} +\description{ +This function returns the Jira project key name for a specific +project key, that is specified in the input parameter `config_file`. +The input, `config_file` must be a parsed configuration file. The function +will inform the user if the project key name exists in the parsed +configuration file, `config_file`. +} diff --git a/man/get_mbox_domain.Rd b/man/get_mbox_domain.Rd new file mode 100644 index 00000000..5ba02c6e --- /dev/null +++ b/man/get_mbox_domain.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_mbox_domain} +\alias{get_mbox_domain} +\title{Returns the URL to the archives for mbox for a specific project key.} +\usage{ +get_mbox_domain(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The URL of the mbox mailing list archive for project specified by key `project_key_index`. +} +\description{ +This function returns the URL to the archives for a specific +project key, `project_key_index`, that is specified in the input parameter +`config_file`. The input, `config_file` must be a parsed configuration file. +The function will inform the user if the specific URL to the archives for +mbox exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_mbox_input_file.Rd b/man/get_mbox_input_file.Rd new file mode 100644 index 00000000..ced74f7f --- /dev/null +++ b/man/get_mbox_input_file.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_mbox_input_file} +\alias{get_mbox_input_file} +\title{Returns the local input file for mbox for a specific project key.} +\usage{ +get_mbox_input_file(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The local input file mbox path for project specified by key `project_key_index`. +} +\description{ +This function returns the local file used for input for +mbox for a specific project key, `project_key_index`, that is specified +in the input parameter `config_file`. The input, `config_file` must be a +parsed configuration file. The function will inform the user if the specific +local input file path for mbox exists in the parsed configuration file, +`config_file`. +} diff --git a/man/get_mbox_key_indexes.Rd b/man/get_mbox_key_indexes.Rd new file mode 100644 index 00000000..541a0dec --- /dev/null +++ b/man/get_mbox_key_indexes.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_mbox_key_indexes} +\alias{get_mbox_key_indexes} +\title{Returns the list of mailing list mod mbox project keys.} +\usage{ +get_mbox_key_indexes(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The list of mod mbox mailing list keys. +} +\description{ +This function returns the list of mailing list mod mbox project +keys, that is specified in the input parameter `config_file`. The input, +`config_file` must be a parsed configuration file. The function will inform +the user if the project keys exist in the parsed configuration +file, `config_file`. +} diff --git a/man/get_mbox_path.Rd b/man/get_mbox_path.Rd new file mode 100644 index 00000000..527f212c --- /dev/null +++ b/man/get_mbox_path.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_mbox_path} +\alias{get_mbox_path} +\title{Returns the local folder path to store mbox data for a specific project key.} +\usage{ +get_mbox_path(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The local mbox path for project specified by key `project_key_index`. +} +\description{ +This function returns the local folder path used to store +mbox data for a specific project key, `project_key_index`, that is specified +in the input parameter `config_file`. The input, `config_file` must be a +parsed configuration file. The function will inform the user if the specific +local folder path to store mbox data exists in the parsed configuration +file, `config_file`. +} diff --git a/man/get_nvdfeed_folder_path.Rd b/man/get_nvdfeed_folder_path.Rd new file mode 100644 index 00000000..2ad4b850 --- /dev/null +++ b/man/get_nvdfeed_folder_path.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_nvdfeed_folder_path} +\alias{get_nvdfeed_folder_path} +\title{Returns the local folder path that contains the nvd (National Vulnerability +Database) feeds.} +\usage{ +get_nvdfeed_folder_path(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The folder path with nvd feeds. +} +\description{ +This function returns the local folder path for nvd feeds, +that is specified in the input parameter `config_file`. The input, +`config_file` must be a parsed configuration file. The function will inform +the user if the local folder path for the nvd feeds exists in the parsed +configuration file, `config_file`. +} diff --git a/man/get_pattern4_filepath.Rd b/man/get_pattern4_filepath.Rd new file mode 100644 index 00000000..54a7ad36 --- /dev/null +++ b/man/get_pattern4_filepath.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_pattern4_filepath} +\alias{get_pattern4_filepath} +\title{Returns the folder path for the output of the pattern4 analysis.} +\usage{ +get_pattern4_filepath(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The Pattern4 output folder path. +} +\description{ +This function returns the folder path that contains the +output of the pattern4 analysis for the project, that is specified in the +input parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the folder path +exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_pattern4_folder_path.Rd b/man/get_pattern4_folder_path.Rd new file mode 100644 index 00000000..8ecfe622 --- /dev/null +++ b/man/get_pattern4_folder_path.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_pattern4_folder_path} +\alias{get_pattern4_folder_path} +\title{Returns the folder path for class pattern4 analysis.} +\usage{ +get_pattern4_folder_path(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The Pattern4 class folder path. +} +\description{ +This function returns the folder path used to store the classes +for the pattern4 analysis for the project, that is specified in the input +parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the folder path +exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_pipermail_domain.Rd b/man/get_pipermail_domain.Rd new file mode 100644 index 00000000..6b258d37 --- /dev/null +++ b/man/get_pipermail_domain.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_pipermail_domain} +\alias{get_pipermail_domain} +\title{Returns the URL to the archives for pipermail for a specific project key.} +\usage{ +get_pipermail_domain(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The URL of the pipermail mailing list archive for project specified by key `project_key_index`. +} +\description{ +This function returns the URL to the archives for a specific +project key, `project_key_index`, that is specified in the input parameter +`config_file`. The input, `config_file` must be a parsed configuration file. +The function will inform the user if the specific URL to the archives for +pipermail exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_pipermail_input_file.Rd b/man/get_pipermail_input_file.Rd new file mode 100644 index 00000000..51e9a6b5 --- /dev/null +++ b/man/get_pipermail_input_file.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_pipermail_input_file} +\alias{get_pipermail_input_file} +\title{Returns the local input file for pipermail for a specific project key.} +\usage{ +get_pipermail_input_file(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The local input file pipermail path for project specified by key `project_key_index`. +} +\description{ +This function returns the local file used for input for +pipermail for a specific project key, `project_key_index`, that is specified +in the input parameter `config_file`. The input, `config_file` must be a +parsed configuration file. The function will inform the user if the specific +local input file path for pipermail exists in the parsed configuration file, +`config_file`. +} diff --git a/man/get_pipermail_path.Rd b/man/get_pipermail_path.Rd new file mode 100644 index 00000000..05d445bf --- /dev/null +++ b/man/get_pipermail_path.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_pipermail_path} +\alias{get_pipermail_path} +\title{Returns the local folder path to store pipermail data for a specific project key.} +\usage{ +get_pipermail_path(config_file, project_key_index) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} + +\item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} +} +\value{ +The local pipermail path for project specified by key `project_key_index`. +} +\description{ +This function returns the local folder path used to store +pipermail data for a specific project key, `project_key_index`, that is specified +in the input parameter `config_file`. The input, `config_file` must be a +parsed configuration file. The function will inform the user if the specific +local folder path to store pipermail data exists in the parsed configuration +file, `config_file`. +} diff --git a/man/get_srcml_filepath.Rd b/man/get_srcml_filepath.Rd new file mode 100644 index 00000000..3bd0d746 --- /dev/null +++ b/man/get_srcml_filepath.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_srcml_filepath} +\alias{get_srcml_filepath} +\title{Returns the file path for the output of the srcML analysis for the project.} +\usage{ +get_srcml_filepath(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The output file path for srcML analysis. +} +\description{ +This function returns the file path to be used to store the +output of the srcML analysis for the project, that is specified in the +input parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the file path +exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_substring_filepath.Rd b/man/get_substring_filepath.Rd new file mode 100644 index 00000000..cb6346b1 --- /dev/null +++ b/man/get_substring_filepath.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_substring_filepath} +\alias{get_substring_filepath} +\title{Returns the list of file extensions used for filtering files to remove.} +\usage{ +get_substring_filepath(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The list of file extensions to remove. +} +\description{ +This function returns the list of file extensions that will be +used for filtering files specified in the input parameter `config_file`. The +input, `config_file` must be a parsed configuration file. The function will +inform the user if the list of file extensions exists in the parsed +configuration file, `config_file`. +} diff --git a/man/get_tool_project.Rd b/man/get_tool_project.Rd new file mode 100644 index 00000000..26425912 --- /dev/null +++ b/man/get_tool_project.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_tool_project} +\alias{get_tool_project} +\title{Returns the specified tool project from a parsed tool configuration file.} +\usage{ +get_tool_project(tool_name, config_file) +} +\arguments{ +\item{tool_name}{The name of the tool (e.g. "perceval" or "dv8").} + +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The specified `tool_name` tool project from `config_file`. +} +\description{ +This function returns a path to a specified tool from a +specified parsed tool configuration file. The function takes the input +`tool_name` and uses it to index a specific tool project in a parsed +tool configuration file, `config_file`, where it then returns the specified +tool project. The function will inform the user if the specified attribute, +`tool_name`, exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_topics.Rd b/man/get_topics.Rd new file mode 100644 index 00000000..8de86b5d --- /dev/null +++ b/man/get_topics.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_topics} +\alias{get_topics} +\title{Returns the list of topics and keywords for analysis.} +\usage{ +get_topics(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The list of keywords and topics for analysis. +} +\description{ +This function returns the list of keywords and topics for +analysis, that is specified in the input parameter `config_file`. The +input, `config_file` must be a parsed configuration file. The function will +inform the user if the list of keywords and topics exists in the parsed +configuration file, `config_file`. +} diff --git a/man/get_uctags_line_types.Rd b/man/get_uctags_line_types.Rd new file mode 100644 index 00000000..cff7af2d --- /dev/null +++ b/man/get_uctags_line_types.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_uctags_line_types} +\alias{get_uctags_line_types} +\title{Returns the types to keep to to be considered for analysis.} +\usage{ +get_uctags_line_types(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The lines type to keep for analysis. +} +\description{ +This function returns the types of file-file dependencies that +should be considered, that are specified in the input parameter +`config_file`. The input, `config_file` must be a parsed configuration file. +The function will inform the user if the lines type to keep exists in the +parsed configuration file, `config_file`. +} diff --git a/man/get_understand_code_language.Rd b/man/get_understand_code_language.Rd new file mode 100644 index 00000000..3e761bc1 --- /dev/null +++ b/man/get_understand_code_language.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_understand_code_language} +\alias{get_understand_code_language} +\title{Returns the understand code language for analysis.} +\usage{ +get_understand_code_language(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The code language for parsing with the understand tool. +} +\description{ +This function returns the specified code language that should +be used to parse dependencies with the understand tool, that +is specified in the input parameter `config_file`. The input, `config_file` +must be a parsed configuration file. The function will inform the user if +the understand code language exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_understand_keep_dependencies_type.Rd b/man/get_understand_keep_dependencies_type.Rd new file mode 100644 index 00000000..1172afab --- /dev/null +++ b/man/get_understand_keep_dependencies_type.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_understand_keep_dependencies_type} +\alias{get_understand_keep_dependencies_type} +\title{Returns a list of the types of understand dependencies to keep for analysis.} +\usage{ +get_understand_keep_dependencies_type(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +A list of the types of understand dependencies to keep for analysis. +} +\description{ +This function returns the specified types of dependencies to +keep for analysis with the understand tool, that is specified in the input +parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the list of the +types of understand dependencies exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_understand_output_path.Rd b/man/get_understand_output_path.Rd new file mode 100644 index 00000000..7e314f03 --- /dev/null +++ b/man/get_understand_output_path.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_understand_output_path} +\alias{get_understand_output_path} +\title{Returns the folder path for the output of the understand analysis.} +\usage{ +get_understand_output_path(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The understand output folder path. +} +\description{ +This function returns the folder path that contains the +output of the understand analysis for the project, that is specified in the +input parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the folder path +exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_understand_project_path.Rd b/man/get_understand_project_path.Rd new file mode 100644 index 00000000..b2c2bc6d --- /dev/null +++ b/man/get_understand_project_path.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_understand_project_path} +\alias{get_understand_project_path} +\title{Returns the folder path for the input of the understand analysis.} +\usage{ +get_understand_project_path(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The understand project folder path. +} +\description{ +This function returns the folder path that contains the +input of the understand analysis for the project, that is specified in the +input parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the folder path +exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_window_end_commit.Rd b/man/get_window_end_commit.Rd new file mode 100644 index 00000000..20f24151 --- /dev/null +++ b/man/get_window_end_commit.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_window_end_commit} +\alias{get_window_end_commit} +\title{Returns the ending commit for a window for analysis.} +\usage{ +get_window_end_commit(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The end commit for a window for analysis. +} +\description{ +This function returns the ending commit for a window of time +for analysis (the time stamp is inferred from gitlog), that is specified in +the input parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the end commit +exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_window_size.Rd b/man/get_window_size.Rd new file mode 100644 index 00000000..d32899c9 --- /dev/null +++ b/man/get_window_size.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_window_size} +\alias{get_window_size} +\title{Returns the size of a window for analysis.} +\usage{ +get_window_size(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The size of a window for analysis. +} +\description{ +This function returns the size of a window, that is +specified in the input parameter `config_file`. The input, `config_file` +must be a parsed configuration file. The function will inform the user if +the window size exists in the parsed configuration file, `config_file`. +} diff --git a/man/get_window_start_commit.Rd b/man/get_window_start_commit.Rd new file mode 100644 index 00000000..75f25fcc --- /dev/null +++ b/man/get_window_start_commit.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{get_window_start_commit} +\alias{get_window_start_commit} +\title{Returns the starting commit for a window for analysis.} +\usage{ +get_window_start_commit(config_file) +} +\arguments{ +\item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} +} +\value{ +The start commit for a window for analysis. +} +\description{ +This function returns the starting commit for a window of time +for analysis (the time stamp is inferred from gitlog), that is specified in +the input parameter `config_file`. The input, `config_file` must be a parsed +configuration file. The function will inform the user if the start commit +exists in the parsed configuration file, `config_file`. +} diff --git a/man/metric_churn_per_commit_interval.Rd b/man/metric_churn_per_commit_interval.Rd index 21f5e494..6969492d 100644 --- a/man/metric_churn_per_commit_interval.Rd +++ b/man/metric_churn_per_commit_interval.Rd @@ -20,8 +20,8 @@ Calculates the churn metric for a sequence of commits Other {metrics}: \code{\link{commit_message_id_coverage}()}, -\code{\link{metric_churn_per_commit_per_file}()}, \code{\link{metric_churn}()}, +\code{\link{metric_churn_per_commit_per_file}()}, \code{\link{metric_file_bug_churn}()}, \code{\link{metric_file_bug_frequency}()}, \code{\link{metric_file_churn}()}, diff --git a/man/metric_churn_per_commit_per_file.Rd b/man/metric_churn_per_commit_per_file.Rd index 75b48c85..577d3f63 100644 --- a/man/metric_churn_per_commit_per_file.Rd +++ b/man/metric_churn_per_commit_per_file.Rd @@ -20,8 +20,8 @@ Calculates the churn metric for a sequence of commits per commit per file Other {metrics}: \code{\link{commit_message_id_coverage}()}, -\code{\link{metric_churn_per_commit_interval}()}, \code{\link{metric_churn}()}, +\code{\link{metric_churn_per_commit_interval}()}, \code{\link{metric_file_bug_churn}()}, \code{\link{metric_file_bug_frequency}()}, \code{\link{metric_file_churn}()}, diff --git a/man/metric_file_bug_churn.Rd b/man/metric_file_bug_churn.Rd index 29bef17d..7bea610e 100644 --- a/man/metric_file_bug_churn.Rd +++ b/man/metric_file_bug_churn.Rd @@ -20,9 +20,9 @@ The total churn sum of commits of all closed bug type issues the file was involv \seealso{ Other {metrics}: \code{\link{commit_message_id_coverage}()}, +\code{\link{metric_churn}()}, \code{\link{metric_churn_per_commit_interval}()}, \code{\link{metric_churn_per_commit_per_file}()}, -\code{\link{metric_churn}()}, \code{\link{metric_file_bug_frequency}()}, \code{\link{metric_file_churn}()}, \code{\link{metric_file_non_bug_churn}()}, diff --git a/man/metric_file_bug_frequency.Rd b/man/metric_file_bug_frequency.Rd index 607aef62..f978666e 100644 --- a/man/metric_file_bug_frequency.Rd +++ b/man/metric_file_bug_frequency.Rd @@ -20,9 +20,9 @@ The total number of commits of all closed bug type issues the file was involved. \seealso{ Other {metrics}: \code{\link{commit_message_id_coverage}()}, +\code{\link{metric_churn}()}, \code{\link{metric_churn_per_commit_interval}()}, \code{\link{metric_churn_per_commit_per_file}()}, -\code{\link{metric_churn}()}, \code{\link{metric_file_bug_churn}()}, \code{\link{metric_file_churn}()}, \code{\link{metric_file_non_bug_churn}()}, diff --git a/man/metric_file_churn.Rd b/man/metric_file_churn.Rd index 3e2babd4..67049ea5 100644 --- a/man/metric_file_churn.Rd +++ b/man/metric_file_churn.Rd @@ -18,9 +18,9 @@ The total churn of a file \seealso{ Other {metrics}: \code{\link{commit_message_id_coverage}()}, +\code{\link{metric_churn}()}, \code{\link{metric_churn_per_commit_interval}()}, \code{\link{metric_churn_per_commit_per_file}()}, -\code{\link{metric_churn}()}, \code{\link{metric_file_bug_churn}()}, \code{\link{metric_file_bug_frequency}()}, \code{\link{metric_file_non_bug_churn}()}, diff --git a/man/metric_file_non_bug_churn.Rd b/man/metric_file_non_bug_churn.Rd index bf35bb1c..049b9cd8 100644 --- a/man/metric_file_non_bug_churn.Rd +++ b/man/metric_file_non_bug_churn.Rd @@ -20,9 +20,9 @@ The total churn sum of commits of all closed non-bug type issues the file was in \seealso{ Other {metrics}: \code{\link{commit_message_id_coverage}()}, +\code{\link{metric_churn}()}, \code{\link{metric_churn_per_commit_interval}()}, \code{\link{metric_churn_per_commit_per_file}()}, -\code{\link{metric_churn}()}, \code{\link{metric_file_bug_churn}()}, \code{\link{metric_file_bug_frequency}()}, \code{\link{metric_file_churn}()}, diff --git a/man/metric_file_non_bug_frequency.Rd b/man/metric_file_non_bug_frequency.Rd index da87d00a..9516ce61 100644 --- a/man/metric_file_non_bug_frequency.Rd +++ b/man/metric_file_non_bug_frequency.Rd @@ -20,9 +20,9 @@ The total number of commits of all closed non-bug type issues the file was invol \seealso{ Other {metrics}: \code{\link{commit_message_id_coverage}()}, +\code{\link{metric_churn}()}, \code{\link{metric_churn_per_commit_interval}()}, \code{\link{metric_churn_per_commit_per_file}()}, -\code{\link{metric_churn}()}, \code{\link{metric_file_bug_churn}()}, \code{\link{metric_file_bug_frequency}()}, \code{\link{metric_file_churn}()}, diff --git a/man/motif_factory_anti_square.Rd b/man/motif_factory_anti_square.Rd index 06cefd8f..8850ff38 100644 --- a/man/motif_factory_anti_square.Rd +++ b/man/motif_factory_anti_square.Rd @@ -26,9 +26,9 @@ in IEEE Transactions on Software Engineering, vol. 48, no. 8, pp. 3159-3184, } \seealso{ Other motif: +\code{\link{motif_factory}()}, \code{\link{motif_factory_anti_triangle}()}, \code{\link{motif_factory_square}()}, -\code{\link{motif_factory_triangle}()}, -\code{\link{motif_factory}()} +\code{\link{motif_factory_triangle}()} } \concept{motif} diff --git a/man/motif_factory_anti_triangle.Rd b/man/motif_factory_anti_triangle.Rd index b5a789a8..349cce19 100644 --- a/man/motif_factory_anti_triangle.Rd +++ b/man/motif_factory_anti_triangle.Rd @@ -22,9 +22,9 @@ in IEEE Transactions on Software Engineering, vol. 48, no. 8, pp. 3159-3184, } \seealso{ Other motif: +\code{\link{motif_factory}()}, \code{\link{motif_factory_anti_square}()}, \code{\link{motif_factory_square}()}, -\code{\link{motif_factory_triangle}()}, -\code{\link{motif_factory}()} +\code{\link{motif_factory_triangle}()} } \concept{motif} diff --git a/man/motif_factory_square.Rd b/man/motif_factory_square.Rd index 74101dfd..1c94e2a3 100644 --- a/man/motif_factory_square.Rd +++ b/man/motif_factory_square.Rd @@ -26,9 +26,9 @@ in IEEE Transactions on Software Engineering, vol. 48, no. 8, pp. 3159-3184, } \seealso{ Other motif: +\code{\link{motif_factory}()}, \code{\link{motif_factory_anti_square}()}, \code{\link{motif_factory_anti_triangle}()}, -\code{\link{motif_factory_triangle}()}, -\code{\link{motif_factory}()} +\code{\link{motif_factory_triangle}()} } \concept{motif} diff --git a/man/motif_factory_triangle.Rd b/man/motif_factory_triangle.Rd index 61d81313..0a99faa8 100644 --- a/man/motif_factory_triangle.Rd +++ b/man/motif_factory_triangle.Rd @@ -22,9 +22,9 @@ in IEEE Transactions on Software Engineering, vol. 48, no. 8, pp. 3159-3184, } \seealso{ Other motif: +\code{\link{motif_factory}()}, \code{\link{motif_factory_anti_square}()}, \code{\link{motif_factory_anti_triangle}()}, -\code{\link{motif_factory_square}()}, -\code{\link{motif_factory}()} +\code{\link{motif_factory_square}()} } \concept{motif} diff --git a/man/openhub_api_analyses.Rd b/man/openhub_api_analyses.Rd new file mode 100644 index 00000000..b1ab2320 --- /dev/null +++ b/man/openhub_api_analyses.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{openhub_api_analyses} +\alias{openhub_api_analyses} +\title{placeholder} +\usage{ +openhub_api_analyses(token, openhub_api_parameters, page = 1) +} +\arguments{ +\item{token}{placeholder} + +\item{openhub_api_parameters}{placeholder} + +\item{page}{placeholder} +} +\value{ +placeholder +} +\description{ +placeholder +} diff --git a/man/openhub_api_iterate_pages.Rd b/man/openhub_api_iterate_pages.Rd new file mode 100644 index 00000000..6d78b9dc --- /dev/null +++ b/man/openhub_api_iterate_pages.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{openhub_api_iterate_pages} +\alias{openhub_api_iterate_pages} +\title{placeholder} +\usage{ +openhub_api_iterate_pages( + token, + openhub_api_function, + openhub_api_parameters, + max_pages = NULL +) +} +\arguments{ +\item{token}{placeholder} + +\item{openhub_api_function}{placeholder} + +\item{openhub_api_parameters}{placeholder} + +\item{max_pages}{placeholder} +} +\value{ +placeholder +} +\description{ +placeholder +} diff --git a/man/openhub_api_organizations.Rd b/man/openhub_api_organizations.Rd new file mode 100644 index 00000000..c237a923 --- /dev/null +++ b/man/openhub_api_organizations.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{openhub_api_organizations} +\alias{openhub_api_organizations} +\title{placeholder} +\usage{ +openhub_api_organizations(token, openhub_api_parameters, page = 1) +} +\arguments{ +\item{token}{placeholder} + +\item{openhub_api_parameters}{placeholder} + +\item{page}{placeholder} +} +\value{ +placeholder +} +\description{ +placeholder +} diff --git a/man/openhub_api_portfolio_projects.Rd b/man/openhub_api_portfolio_projects.Rd new file mode 100644 index 00000000..ca99cac4 --- /dev/null +++ b/man/openhub_api_portfolio_projects.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{openhub_api_portfolio_projects} +\alias{openhub_api_portfolio_projects} +\title{placeholder} +\usage{ +openhub_api_portfolio_projects(token, openhub_api_parameters, page = 1) +} +\arguments{ +\item{token}{placeholder} + +\item{openhub_api_parameters}{placeholder} + +\item{page}{placeholder} +} +\value{ +placeholder +} +\description{ +placeholder +} diff --git a/man/openhub_api_projects.Rd b/man/openhub_api_projects.Rd new file mode 100644 index 00000000..2cd15479 --- /dev/null +++ b/man/openhub_api_projects.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{openhub_api_projects} +\alias{openhub_api_projects} +\title{placeholder} +\usage{ +openhub_api_projects(token, openhub_api_parameters, page = 1) +} +\arguments{ +\item{token}{placeholder} + +\item{openhub_api_parameters}{placeholder} + +\item{page}{placeholder} +} +\value{ +placeholder +} +\description{ +placeholder +} diff --git a/man/openhub_parse_analyses.Rd b/man/openhub_parse_analyses.Rd new file mode 100644 index 00000000..72ceb532 --- /dev/null +++ b/man/openhub_parse_analyses.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{openhub_parse_analyses} +\alias{openhub_parse_analyses} +\title{placeholder} +\usage{ +openhub_parse_analyses(api_responses) +} +\arguments{ +\item{api_responses}{placeholder} +} +\value{ +placeholder +} +\description{ +placeholder +} diff --git a/man/openhub_parse_organizations.Rd b/man/openhub_parse_organizations.Rd new file mode 100644 index 00000000..5b5b83b3 --- /dev/null +++ b/man/openhub_parse_organizations.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{openhub_parse_organizations} +\alias{openhub_parse_organizations} +\title{placeholder} +\usage{ +openhub_parse_organizations(api_responses, openhub_api_parameters) +} +\arguments{ +\item{api_responses}{placeholder} + +\item{openhub_api_parameters}{placeholder} +} +\value{ +placeholder +} +\description{ +placeholder +} diff --git a/man/openhub_parse_portfolio_projects.Rd b/man/openhub_parse_portfolio_projects.Rd new file mode 100644 index 00000000..52ec7eec --- /dev/null +++ b/man/openhub_parse_portfolio_projects.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{openhub_parse_portfolio_projects} +\alias{openhub_parse_portfolio_projects} +\title{placeholder} +\usage{ +openhub_parse_portfolio_projects(api_responses, openhub_api_parameters) +} +\arguments{ +\item{api_responses}{placeholder} + +\item{openhub_api_parameters}{placeholder} +} +\value{ +placeholder +} +\description{ +placeholder +} diff --git a/man/openhub_parse_projects.Rd b/man/openhub_parse_projects.Rd new file mode 100644 index 00000000..b9b1f5b0 --- /dev/null +++ b/man/openhub_parse_projects.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{openhub_parse_projects} +\alias{openhub_parse_projects} +\title{placeholder} +\usage{ +openhub_parse_projects(api_responses, openhub_api_parameters) +} +\arguments{ +\item{api_responses}{placeholder} + +\item{openhub_api_parameters}{placeholder} +} +\value{ +placeholder +} +\description{ +placeholder +} diff --git a/man/parse_bugzilla_perceval_rest_issue_comments.Rd b/man/parse_bugzilla_perceval_rest_issue_comments.Rd index d8788d60..35774ea2 100644 --- a/man/parse_bugzilla_perceval_rest_issue_comments.Rd +++ b/man/parse_bugzilla_perceval_rest_issue_comments.Rd @@ -26,15 +26,15 @@ Parse Bugzilla data obtained from Perceval REST API Bugzilla backend Other parsers: \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, \code{\link{parse_bugzilla_rest_comments}()}, -\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_bugzilla_rest_issues}()}, +\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_commit_message_id}()}, \code{\link{parse_dependencies}()}, \code{\link{parse_dv8_clusters}()}, \code{\link{parse_gitlog}()}, +\code{\link{parse_jira}()}, \code{\link{parse_jira_latest_date}()}, \code{\link{parse_jira_rss_xml}()}, -\code{\link{parse_jira}()}, \code{\link{parse_mbox}()}, \code{\link{parse_nvdfeed}()} } diff --git a/man/parse_bugzilla_perceval_traditional_issue_comments.Rd b/man/parse_bugzilla_perceval_traditional_issue_comments.Rd index 06f9397d..7f9805fa 100644 --- a/man/parse_bugzilla_perceval_traditional_issue_comments.Rd +++ b/man/parse_bugzilla_perceval_traditional_issue_comments.Rd @@ -26,15 +26,15 @@ Parse Bugzilla data obtained from Perceval traditional Bugzilla backend Other parsers: \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, \code{\link{parse_bugzilla_rest_comments}()}, -\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_bugzilla_rest_issues}()}, +\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_commit_message_id}()}, \code{\link{parse_dependencies}()}, \code{\link{parse_dv8_clusters}()}, \code{\link{parse_gitlog}()}, +\code{\link{parse_jira}()}, \code{\link{parse_jira_latest_date}()}, \code{\link{parse_jira_rss_xml}()}, -\code{\link{parse_jira}()}, \code{\link{parse_mbox}()}, \code{\link{parse_nvdfeed}()} } diff --git a/man/parse_bugzilla_rest_comments.Rd b/man/parse_bugzilla_rest_comments.Rd index 8121d873..5e5924b6 100644 --- a/man/parse_bugzilla_rest_comments.Rd +++ b/man/parse_bugzilla_rest_comments.Rd @@ -19,15 +19,15 @@ Parse Bugzilla comments data obtained from json files from Bugzilla crawler \cod Other parsers: \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, -\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_bugzilla_rest_issues}()}, +\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_commit_message_id}()}, \code{\link{parse_dependencies}()}, \code{\link{parse_dv8_clusters}()}, \code{\link{parse_gitlog}()}, +\code{\link{parse_jira}()}, \code{\link{parse_jira_latest_date}()}, \code{\link{parse_jira_rss_xml}()}, -\code{\link{parse_jira}()}, \code{\link{parse_mbox}()}, \code{\link{parse_nvdfeed}()} } diff --git a/man/parse_bugzilla_rest_issues.Rd b/man/parse_bugzilla_rest_issues.Rd index 69d55e6b..351461b7 100644 --- a/man/parse_bugzilla_rest_issues.Rd +++ b/man/parse_bugzilla_rest_issues.Rd @@ -27,9 +27,9 @@ Other parsers: \code{\link{parse_dependencies}()}, \code{\link{parse_dv8_clusters}()}, \code{\link{parse_gitlog}()}, +\code{\link{parse_jira}()}, \code{\link{parse_jira_latest_date}()}, \code{\link{parse_jira_rss_xml}()}, -\code{\link{parse_jira}()}, \code{\link{parse_mbox}()}, \code{\link{parse_nvdfeed}()} } diff --git a/man/parse_bugzilla_rest_issues_comments.Rd b/man/parse_bugzilla_rest_issues_comments.Rd index 68939e2c..9ac99a67 100644 --- a/man/parse_bugzilla_rest_issues_comments.Rd +++ b/man/parse_bugzilla_rest_issues_comments.Rd @@ -29,9 +29,9 @@ Other parsers: \code{\link{parse_dependencies}()}, \code{\link{parse_dv8_clusters}()}, \code{\link{parse_gitlog}()}, +\code{\link{parse_jira}()}, \code{\link{parse_jira_latest_date}()}, \code{\link{parse_jira_rss_xml}()}, -\code{\link{parse_jira}()}, \code{\link{parse_mbox}()}, \code{\link{parse_nvdfeed}()} } diff --git a/man/parse_commit_message_id.Rd b/man/parse_commit_message_id.Rd index 1fe5fd3f..70a69a21 100644 --- a/man/parse_commit_message_id.Rd +++ b/man/parse_commit_message_id.Rd @@ -19,14 +19,14 @@ Other parsers: \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, \code{\link{parse_bugzilla_rest_comments}()}, -\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_bugzilla_rest_issues}()}, +\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_dependencies}()}, \code{\link{parse_dv8_clusters}()}, \code{\link{parse_gitlog}()}, +\code{\link{parse_jira}()}, \code{\link{parse_jira_latest_date}()}, \code{\link{parse_jira_rss_xml}()}, -\code{\link{parse_jira}()}, \code{\link{parse_mbox}()}, \code{\link{parse_nvdfeed}()} } diff --git a/man/parse_config.Rd b/man/parse_config.Rd new file mode 100644 index 00000000..5d5ef6cc --- /dev/null +++ b/man/parse_config.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/config.R +\name{parse_config} +\alias{parse_config} +\title{Returns the parsed configuration file (.yml).} +\usage{ +parse_config(config_path) +} +\arguments{ +\item{config_path}{The path of the config file from the kaiaulu directory (e.g. "conf/kaiaulu.yml").} +} +\value{ +The parsed config file whose path is specified by `config_path`. +} +\description{ +The input file is expected to be in the .yml format. +The function returns a parsed version of the input .yml file, and it will +inform the user if the input .yml file path does not exist. The contents +of the input .yml file may contain machine-dependent paths that may need to +be modified by the user. +} diff --git a/man/parse_dependencies.Rd b/man/parse_dependencies.Rd index 9cd9d487..ba678a58 100644 --- a/man/parse_dependencies.Rd +++ b/man/parse_dependencies.Rd @@ -28,14 +28,14 @@ Other parsers: \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, \code{\link{parse_bugzilla_rest_comments}()}, -\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_bugzilla_rest_issues}()}, +\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_commit_message_id}()}, \code{\link{parse_dv8_clusters}()}, \code{\link{parse_gitlog}()}, +\code{\link{parse_jira}()}, \code{\link{parse_jira_latest_date}()}, \code{\link{parse_jira_rss_xml}()}, -\code{\link{parse_jira}()}, \code{\link{parse_mbox}()}, \code{\link{parse_nvdfeed}()} } diff --git a/man/parse_dv8_clusters.Rd b/man/parse_dv8_clusters.Rd index 474205be..8a866134 100644 --- a/man/parse_dv8_clusters.Rd +++ b/man/parse_dv8_clusters.Rd @@ -17,14 +17,14 @@ Other parsers: \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, \code{\link{parse_bugzilla_rest_comments}()}, -\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_bugzilla_rest_issues}()}, +\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_commit_message_id}()}, \code{\link{parse_dependencies}()}, \code{\link{parse_gitlog}()}, +\code{\link{parse_jira}()}, \code{\link{parse_jira_latest_date}()}, \code{\link{parse_jira_rss_xml}()}, -\code{\link{parse_jira}()}, \code{\link{parse_mbox}()}, \code{\link{parse_nvdfeed}()} diff --git a/man/parse_gitlog.Rd b/man/parse_gitlog.Rd index 5552e83c..6799fc12 100644 --- a/man/parse_gitlog.Rd +++ b/man/parse_gitlog.Rd @@ -23,14 +23,14 @@ Other parsers: \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, \code{\link{parse_bugzilla_rest_comments}()}, -\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_bugzilla_rest_issues}()}, +\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_commit_message_id}()}, \code{\link{parse_dependencies}()}, \code{\link{parse_dv8_clusters}()}, +\code{\link{parse_jira}()}, \code{\link{parse_jira_latest_date}()}, \code{\link{parse_jira_rss_xml}()}, -\code{\link{parse_jira}()}, \code{\link{parse_mbox}()}, \code{\link{parse_nvdfeed}()} } diff --git a/man/parse_jira.Rd b/man/parse_jira.Rd index 26b2da1f..896ea0c4 100644 --- a/man/parse_jira.Rd +++ b/man/parse_jira.Rd @@ -33,8 +33,8 @@ Other parsers: \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, \code{\link{parse_bugzilla_rest_comments}()}, -\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_bugzilla_rest_issues}()}, +\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_commit_message_id}()}, \code{\link{parse_dependencies}()}, \code{\link{parse_dv8_clusters}()}, diff --git a/man/parse_jira_latest_date.Rd b/man/parse_jira_latest_date.Rd index f5b8b18f..d9c8f0f7 100644 --- a/man/parse_jira_latest_date.Rd +++ b/man/parse_jira_latest_date.Rd @@ -25,14 +25,14 @@ Other parsers: \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, \code{\link{parse_bugzilla_rest_comments}()}, -\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_bugzilla_rest_issues}()}, +\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_commit_message_id}()}, \code{\link{parse_dependencies}()}, \code{\link{parse_dv8_clusters}()}, \code{\link{parse_gitlog}()}, -\code{\link{parse_jira_rss_xml}()}, \code{\link{parse_jira}()}, +\code{\link{parse_jira_rss_xml}()}, \code{\link{parse_mbox}()}, \code{\link{parse_nvdfeed}()} } diff --git a/man/parse_jira_rss_xml.Rd b/man/parse_jira_rss_xml.Rd index 38bb6948..915677a0 100644 --- a/man/parse_jira_rss_xml.Rd +++ b/man/parse_jira_rss_xml.Rd @@ -28,14 +28,14 @@ Other parsers: \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, \code{\link{parse_bugzilla_rest_comments}()}, -\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_bugzilla_rest_issues}()}, +\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_commit_message_id}()}, \code{\link{parse_dependencies}()}, \code{\link{parse_dv8_clusters}()}, \code{\link{parse_gitlog}()}, -\code{\link{parse_jira_latest_date}()}, \code{\link{parse_jira}()}, +\code{\link{parse_jira_latest_date}()}, \code{\link{parse_mbox}()}, \code{\link{parse_nvdfeed}()} } diff --git a/man/parse_mbox.Rd b/man/parse_mbox.Rd index f048bd48..bc20d434 100644 --- a/man/parse_mbox.Rd +++ b/man/parse_mbox.Rd @@ -23,15 +23,15 @@ Other parsers: \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, \code{\link{parse_bugzilla_rest_comments}()}, -\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_bugzilla_rest_issues}()}, +\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_commit_message_id}()}, \code{\link{parse_dependencies}()}, \code{\link{parse_dv8_clusters}()}, \code{\link{parse_gitlog}()}, +\code{\link{parse_jira}()}, \code{\link{parse_jira_latest_date}()}, \code{\link{parse_jira_rss_xml}()}, -\code{\link{parse_jira}()}, \code{\link{parse_nvdfeed}()} } \concept{parsers} diff --git a/man/parse_nvdfeed.Rd b/man/parse_nvdfeed.Rd index e861f2a3..f52fedc6 100644 --- a/man/parse_nvdfeed.Rd +++ b/man/parse_nvdfeed.Rd @@ -18,15 +18,15 @@ Other parsers: \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, \code{\link{parse_bugzilla_rest_comments}()}, -\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_bugzilla_rest_issues}()}, +\code{\link{parse_bugzilla_rest_issues_comments}()}, \code{\link{parse_commit_message_id}()}, \code{\link{parse_dependencies}()}, \code{\link{parse_dv8_clusters}()}, \code{\link{parse_gitlog}()}, +\code{\link{parse_jira}()}, \code{\link{parse_jira_latest_date}()}, \code{\link{parse_jira_rss_xml}()}, -\code{\link{parse_jira}()}, \code{\link{parse_mbox}()} } \concept{parsers} diff --git a/man/refresh_jira_issues.Rd b/man/refresh_jira_issues.Rd index 6e7118eb..20be8882 100644 --- a/man/refresh_jira_issues.Rd +++ b/man/refresh_jira_issues.Rd @@ -61,14 +61,14 @@ data. \code{\link{parse_jira_latest_date}} to retrieve the file path of the latest issue key Other downloaders: +\code{\link{download_jira_issues}()}, \code{\link{download_jira_issues_by_date}()}, -\code{\link{download_jira_issues_by_issue_key}()}, -\code{\link{download_jira_issues}()} +\code{\link{download_jira_issues_by_issue_key}()} Other jira: +\code{\link{download_jira_issues}()}, \code{\link{download_jira_issues_by_date}()}, -\code{\link{download_jira_issues_by_issue_key}()}, -\code{\link{download_jira_issues}()} +\code{\link{download_jira_issues_by_issue_key}()} } \concept{downloaders} \concept{jira} diff --git a/vignettes/blamed_line_types_showcase.Rmd b/vignettes/blamed_line_types_showcase.Rmd index 3f12eb05..9e4fa6b4 100644 --- a/vignettes/blamed_line_types_showcase.Rmd +++ b/vignettes/blamed_line_types_showcase.Rmd @@ -84,22 +84,22 @@ filter: We load the above various sections of the single .yaml project configuration file as follows: ```{r} -tool <- yaml::read_yaml("../tools.yml") -conf <- yaml::read_yaml("../conf/apr.yml") +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/apr.yml") # 3rd Party Tools -perceval_path <- tool[["perceval"]] -utags_path <- tool[["utags"]] +perceval_path <- get_tool_project("perceval", tool) +utags_path <- get_tool_project("utags", tool) # Ctags Line Types -kinds <- conf[["tool"]][["uctags"]][["keep_lines_type"]] +kinds <- get_uctags_line_types(conf) # Local Git Repo Folder Path -git_repo_path <- conf[["version_control"]][["log"]] +git_repo_path <- get_git_repo_path(conf) # File Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) ``` diff --git a/vignettes/bug_count.Rmd b/vignettes/bug_count.Rmd index bcaf5774..894b9a87 100644 --- a/vignettes/bug_count.Rmd +++ b/vignettes/bug_count.Rmd @@ -36,19 +36,20 @@ This notebook leverages the JIRA issues data collected from the R Notebook `down As usual, the first step is to load the project configuration file. ```{r} -tool <- yaml::read_yaml("../tools.yml") -conf <- yaml::read_yaml("../conf/geronimo.yml") -perceval_path <- tool[["perceval"]] -git_repo_path <- conf[["version_control"]][["log"]] +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/geronimo.yml") +perceval_path <- get_tool_project("perceval", tool) +git_repo_path <- get_git_repo_path(conf) # Issue ID Regex on Commit Messages -issue_id_regex <- conf[["commit_message_id_regex"]][["issue_id"]] +issue_id_regex <- get_issue_id_regex(conf) # Path to Jira Issues (obtained using `download_jira_data Notebook`) -jira_issues_path <- conf[["issue_tracker"]][["jira"]][["issues"]] +# Specify project_key_index in get_jira_issues_path() (e.g. "project_key_1") +jira_issues_path <- get_jira_issues_path(conf, "project_key_1") # Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) ``` To establish bug count, we must map each file to its associated issue. In general (but not always), an open source project will adopt a commit message convention to label issue ids. For example, Kaiaulu uses `i #`. JIRA dictates issue ids in the format PROJECT-. We can use this assumption to find the issues that the git log commits are trying to fix. You can create your own regular expression by manually inspecting some of the commit messages (for example, compare the regular expression from the geronimo project used here against [its commit message](https://github.com/apache/geronimo/commits/trunk)). diff --git a/vignettes/causal_flaws.Rmd b/vignettes/causal_flaws.Rmd index a03cc3be..9676c2e2 100644 --- a/vignettes/causal_flaws.Rmd +++ b/vignettes/causal_flaws.Rmd @@ -44,46 +44,47 @@ For implementation details, please refer to the function reference documentation The first step is loading the project configuration file, which contains information for both the project data provenance, and the various parameters used for all the tools. Refer to [Kaiaulu's repo conf folder](https://github.com/sailuh/kaiaulu/tree/master/conf) for the configuration file of interest used in the code block below. ```{r} -tool <- yaml::read_yaml("../tools.yml") -#conf <- yaml::read_yaml("../conf/tse_cassandra.yml") -conf <- yaml::read_yaml("../conf/camel.yml") -perceval_path <- tool[["perceval"]] -dv8_path <- tool[["dv8"]] -scc_path <- tool[["scc"]] +tool <- parse_config("../tools.yml") +#conf <- parse_config("../conf/tse_cassandra.yml") +conf <- parse_config("../conf/camel.yml") +perceval_path <- get_tool_project("perceval", tool) +dv8_path <- get_tool_project("dv8", tool) +scc_path <- get_tool_project("scc", tool) # Gitlog parameters -git_repo_path <- conf[["version_control"]][["log"]] -git_branch <- conf[["version_control"]][["branch"]][1] # camel 1.6.0 +git_repo_path <- get_git_repo_path(conf) +git_branch <- get_git_branches(conf)[1] # camel 1.6.0 # Depends parameters -depends_jar_path <- tool[["depends"]] -language <- conf[["tool"]][["depends"]][["code_language"]] -keep_dependencies_type <- conf[["tool"]][["depends"]][["keep_dependencies_type"]] +depends_jar_path <- get_tool_project("depends", tool) +language <- get_depends_code_language(conf) +keep_dependencies_type <- get_depends_keep_dependencies_type(conf) # Mailing List -mbox_path <- conf[["mailing_list"]][["mbox"]] +# Specify project_key_index in get_mbox_path() (e.g. "project_key_1") +mbox_path <- get_mbox_path(conf, "project_key_1") # DV8 parameters -project_path <- conf[["tool"]][["dv8"]][["folder_path"]] +project_path <- get_dv8_folder_path(conf) project_name <- stringi::stri_split_regex(project_path,pattern = "/")[[1]] project_name <- project_name[length(project_name)] -flaws_params <- conf[["tool"]][["dv8"]][["architectural_flaws"]] +flaws_params <- get_dv8_flaws_params(conf) # Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] -filter_commit_size <- conf[["filter"]][["remove_filepaths_on_commit_size_greather_than"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) +filter_commit_size <- get_filter_commit_size(conf) # Issue ID Regex on Commit Messages -issue_id_regex <- conf[["commit_message_id_regex"]][["issue_id"]] +issue_id_regex <- get_issue_id_regex(conf) # Path to Jira Issues (obtained using `download_jira_data Notebook`) -jira_issues_path <- conf[["issue_tracker"]][["jira"]][["issues"]] -jira_issue_comments_path <- conf[["issue_tracker"]][["jira"]][["issue_comments"]] - - +# Specify project_key_index in get_jira_issues_path() (e.g. "project_key_1") +jira_issues_path <- get_jira_issues_path(conf, "project_key_1") +# Specify project_key_index in get_jira_issues_comments_path (e.g. "project_key_1") +jira_issue_comments_path <- get_jira_issues_comments_path(conf, "project_key_1") ``` # Raw Data Pre-Processing for DV8 diff --git a/vignettes/community_detection_showcase.Rmd b/vignettes/community_detection_showcase.Rmd index 5e77a4bd..ed9a9d74 100644 --- a/vignettes/community_detection_showcase.Rmd +++ b/vignettes/community_detection_showcase.Rmd @@ -48,24 +48,24 @@ The remainder of this Notebook illustrates two functions for some of Kaiaulu net As usual, the first step is to load the project configuration file. ```{r} -tool <- yaml::read_yaml("../tools.yml") -conf <- yaml::read_yaml("../conf/apr.yml") +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/apr.yml") # 3rd Party Tools -perceval_path <- tool[["perceval"]] -utags_path <- tool[["utags"]] -oslom_dir_path <- tool[["oslom_dir"]] -oslom_undir_path <- tool[["oslom_undir"]] +perceval_path <- get_tool_project("perceval", tool) +utags_path <- get_tool_project("utags", tool) +oslom_dir_path <- get_tool_project("oslom_dir", tool) +oslom_undir_path <- get_tool_project("oslom_undir", tool) # Ctags Line Types -kinds <- conf[["tool"]][["uctags"]][["keep_lines_type"]] +kinds <- get_uctags_line_types(conf) # Local Git Repo Folder Path -git_repo_path <- conf[["version_control"]][["log"]] +git_repo_path <- get_git_repo_path(conf) # File Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) ``` # Parse Git Log @@ -147,9 +147,9 @@ visIgraph(gcid,randomSeed = 1) ```{r} # Depends parameters -depends_jar_path <- tool[["depends"]] -language <- conf[["tool"]][["depends"]][["code_language"]] -keep_dependencies_type <- conf[["tool"]][["depends"]][["keep_dependencies_type"]] +depends_jar_path <- get_tool_project("depends", tool) +language <- get_depends_code_language(conf) +keep_dependencies_type <- get_depends_keep_dependencies_type(conf) ``` ```{r} diff --git a/vignettes/depends_showcase.Rmd b/vignettes/depends_showcase.Rmd index 925f5c23..d2c74e09 100644 --- a/vignettes/depends_showcase.Rmd +++ b/vignettes/depends_showcase.Rmd @@ -29,19 +29,19 @@ require(knitr) ``` ```{r} -tool <- yaml::read_yaml("../tools.yml") -#conf <- yaml::read_yaml("../conf/apr.yml") -conf <- yaml::read_yaml("../conf/helix.yml") -git_repo_path <- conf[["version_control"]][["log"]] +tool <- parse_config("../tools.yml") +#conf <- parse_config("../conf/apr.yml") +conf <- parse_config("../conf/helix.yml") +git_repo_path <- get_git_repo_path(conf) # Depends parameters -depends_jar_path <- tool[["depends"]] -language <- conf[["tool"]][["depends"]][["code_language"]] -keep_dependencies_type <- conf[["tool"]][["depends"]][["keep_dependencies_type"]] +depends_jar_path <- get_tool_project("depends", tool) +language <- get_depends_code_language(conf) +keep_dependencies_type <- get_depends_keep_dependencies_type(conf) # Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) ``` # Construct File Network diff --git a/vignettes/download_github_comments.Rmd b/vignettes/download_github_comments.Rmd index 2cbcdadd..da316741 100644 --- a/vignettes/download_github_comments.Rmd +++ b/vignettes/download_github_comments.Rmd @@ -44,10 +44,13 @@ Therefore, in this Notebook we have to rely on three endpoints from the GitHub A To use the pipeline, you must specify the organization and project of interest, and your token. Obtain a github token following the instructions [here](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). ```{r} -conf <- yaml::read_yaml("../conf/kaiaulu.yml") -save_path <- path.expand(conf[["issue_tracker"]][["github"]][["replies"]]) # Path you wish to save all raw data. A folder with the repo name and sub-folders will be created. -owner <- conf[["issue_tracker"]][["github"]][["owner"]] # Has to match github organization (e.g. github.com/sailuh) -repo <- conf[["issue_tracker"]][["github"]][["repo"]] # Has to match github repository (e.g. github.com/sailuh/perceive) +conf <- parse_config("../conf/kaiaulu.yml") +save_path_issue_or_pr_comments <- path.expand(get_github_issue_or_pr_comment_path(conf, "project_key_1")) +save_path_issue <- get_github_issue_path(conf, "project_key_1") +save_path_pull_request <- get_github_pull_request_path(conf, "project_key_1") +save_path_commit <- get_github_commit_path(conf, "project_key_1") +owner <- get_github_owner(conf, "project_key_1") # Has to match github organization (e.g. github.com/sailuh) +repo <- get_github_repo(conf, "project_key_1") # Has to match github repository (e.g. github.com/sailuh/perceive) # your file github_token (a text file) contains the GitHub token API token <- scan("~/.ssh/github_token",what="character",quiet=TRUE) ``` @@ -56,19 +59,10 @@ token <- scan("~/.ssh/github_token",what="character",quiet=TRUE) In this section we obtain the raw data (.json) containing all information the GitHub API endpoint provides. We parse the information of interest in the subsequent section. -```{r eval = FALSE} -dir.create(paste0(save_path)) -``` - ## Issues First we will obtain all the issues (i.e. "first comments"). -```{r} -save_path_issue <- paste0(save_path,"/issue/") -``` - - ```{r Collect all issues, eval = FALSE} gh_response <- github_api_project_issue(owner,repo,token) dir.create(save_path_issue) @@ -81,11 +75,6 @@ github_api_iterate_pages(token,gh_response, Next we obtain the "first comment" of every pull request. -```{r} -save_path_pull_request <- paste0(save_path,"/pull_request/") -``` - - ```{r Collect all pull requests, eval = FALSE} gh_response <- github_api_project_pull_request(owner,repo,token) dir.create(save_path_pull_request) @@ -98,11 +87,6 @@ github_api_iterate_pages(token,gh_response, Finally we obtain the comments of both issue and pull requests (which does not contain the data obtained in the prior two endpoints). -```{r} -save_path_issue_or_pr_comments <- paste0(save_path,"/issue_or_pr_comment/") -``` - - ```{r Collect all issue and pull request comments, eval = FALSE} gh_response <- github_api_project_issue_or_pr_comments(owner,repo,token) dir.create(save_path_issue_or_pr_comments) @@ -117,10 +101,6 @@ The three endpoints used above do not contain author and e-mail information, onl To do so, we can use the committer endpoint. -```{r} -save_path_commit <- paste0(save_path,"/commit/") -``` - ```{r Collect all authors and committers name and e-mail, eval = FALSE} gh_response <- github_api_project_commits(owner,repo,token) dir.create(save_path_commit) @@ -190,7 +170,7 @@ Note because we obtain the authors and committers name and e-mail, **only commen Below we show the result of such merge, including the name and e-mail fields obtained from the commit table. As before, we do not display the body column to prevent breaking the HTML format. ```{r} -replies <- parse_github_replies(save_path) +replies <- parse_github_replies(save_path_issue_or_pr_comments) tail(replies,2) %>% gt(auto_align = FALSE) diff --git a/vignettes/download_jira_issues.Rmd b/vignettes/download_jira_issues.Rmd index da2df744..3a699c61 100644 --- a/vignettes/download_jira_issues.Rmd +++ b/vignettes/download_jira_issues.Rmd @@ -45,16 +45,26 @@ To try out this Notebook, try the geronimo configuration file, and follow along First, we will load the Kaiaulu configuration file: ```{r} -conf <- yaml::read_yaml("../conf/kaiaulu.yml") +conf <- parse_config("../conf/kaiaulu.yml") + # Project domain -issue_tracker_domain <- conf[["issue_tracker"]][["jira"]][["domain"]] +# Specify project_key_index in get_jira_domain() (e.g. "project_key_1") +issue_tracker_domain <- get_jira_domain(conf, "project_key_1") + # Project key -issue_tracker_project_key <- conf[["issue_tracker"]][["jira"]][["project_key"]] +# Specify project_key_index in get_jira_project_key_name() (e.g. "project_key_1") +issue_tracker_project_key <- get_jira_project_key_name(conf, "project_key_1") + # Altered save paths. Important for naming conventions -save_path_issue_tracker_issues <- conf[["issue_tracker"]][["jira"]][["issues"]] -save_path_issue_tracker_issue_comments <- conf[["issue_tracker"]][["jira"]][["issue_comments"]] +# Specify project_key_index in get_jira_issues_path() (e.g. "project_key_1") +save_path_issue_tracker_issues <- get_jira_issues_path(conf, "project_key_1") + +# Specify project_key_index in get_jira_issues_comments_path() (e.g. "project_key_1") +save_path_issue_tracker_issue_comments <- get_jira_issues_comments_path(conf, "project_key_1") + # Unaltered save paths from config file for use with refresh function -refresh_issues <- conf[["issue_tracker"]][["jira"]][["issues"]] +# Specify project_key_index in get_jira_issues_path() (e.g. "project_key_1") +refresh_issues <- get_jira_issues_path(conf, "project_key_1") ``` If authentication is needed, save your username (e-mail) and password (API token) in a file, e.g. atlassian_credentials, where the first line is the username, and the second the API token, e.g. diff --git a/vignettes/download_mod_mbox.Rmd b/vignettes/download_mod_mbox.Rmd deleted file mode 100644 index 44a354b4..00000000 --- a/vignettes/download_mod_mbox.Rmd +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Download Mod Mbox Mailing List Archives" -output: - html_document: - toc: true - number_sections: true -vignette: > - %\VignetteEngine{knitr::rmarkdown} - %\VignetteIndexEntry{Download Mod Mbox Mailing List Archives} - %\VignetteEncoding{UTF-8} ---- - - -```{r} -rm(list = ls()) -seed <- 1 -set.seed(seed) -``` - -```{r warning=FALSE,message=FALSE} -require(kaiaulu) -require(data.table) -``` - -# Introduction - -Mailing list data is stored in a variety of archives (e.g. see [Apache Geronimo](https://geronimo.apache.org/mailing-lists.html)). This notebook showcases how to obtain data from mod_mbox archives, which is adopted by the Apache Software Foundation. - -## Project Configuration File - -As usual, the first step is to load the project configuration file. - -# Project Configuration File - -```{r} -conf <- yaml::read_yaml("../conf/helix.yml") -save_path_mbox <- conf[["mailing_list"]][["mbox"]] -mod_mbox_url <- conf[["mailing_list"]][["domain"]] -mailing_list <- conf[["mailing_list"]][["list_key"]] -start_year <- 2017 -end_year <- 2018 -``` - -```{r eval = FALSE} -mbox <- download_mod_mbox_per_month(base_url = mod_mbox_url, - mailing_list = mailing_list, - from_year=start_year, - to_year=end_year, - save_folder_path = save_path_mbox, - verbose = TRUE) -``` - diff --git a/vignettes/dv8_showcase.Rmd b/vignettes/dv8_showcase.Rmd index 3d95f145..2e3e9a3c 100644 --- a/vignettes/dv8_showcase.Rmd +++ b/vignettes/dv8_showcase.Rmd @@ -30,30 +30,30 @@ require(openxlsx) ``` ```{r} -tool <- yaml::read_yaml("../tools.yml") -conf <- yaml::read_yaml("../conf/calculator.yml") -perceval_path <- tool[["perceval"]] -dv8_path <- tool[["dv8"]] +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/calculator.yml") +perceval_path <- get_tool_project("perceval", tool) +dv8_path <- get_tool_project("dv8", tool) # Gitlog parameters -git_repo_path <- conf[["version_control"]][["log"]] +git_repo_path <- get_git_repo_path(conf) # Depends parameters -depends_jar_path <- tool[["depends"]] -language <- conf[["tool"]][["depends"]][["code_language"]] -keep_dependencies_type <- conf[["tool"]][["depends"]][["keep_dependencies_type"]] +depends_jar_path <- get_tool_project("depends", tool) +language <- get_depends_code_language(conf) +keep_dependencies_type <- get_depends_keep_dependencies_type(conf) # DV8 parameters -project_path <- conf[["tool"]][["dv8"]][["folder_path"]] +project_path <- get_dv8_folder_path(conf) project_name <- stringi::stri_split_regex(project_path,pattern = "/")[[1]] project_name <- project_name[length(project_name)] -flaws_params <- conf[["tool"]][["dv8"]][["architectural_flaws"]] +flaws_params <- get_dv8_flaws_params(conf) # Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] -filter_commit_size <- conf[["filter"]][["remove_filepaths_on_commit_size_greather_than"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) +filter_commit_size <- get_filter_commit_size(conf) ``` # Preparing Gitlog and Dependencies for DV8 diff --git a/vignettes/github_api_showcase.Rmd b/vignettes/github_api_showcase.Rmd index 588f4482..900c5451 100644 --- a/vignettes/github_api_showcase.Rmd +++ b/vignettes/github_api_showcase.Rmd @@ -45,10 +45,12 @@ The goal of the following steps is to obtain the data when a project started ass To use the pipeline, you must specify the organization and project of interest, and your token. ```{r} -conf <- yaml::read_yaml("../conf/kaiaulu.yml") -owner <- conf[["issue_tracker"]][["github"]][["owner"]] # Has to match github organization (e.g. github.com/sailuh) -repo <- conf[["issue_tracker"]][["github"]][["repo"]] # Has to match github repository (e.g. github.com/sailuh/perceive) -save_path <- path.expand(conf[["issue_tracker"]][["github"]][["replies"]]) # Path you wish to save all raw data. A folder with the repo name and sub-folders will be created. +conf <- parse_config("../conf/kaiaulu.yml") +owner <- get_github_owner(conf, "project_key_1") # Has to match github organization (e.g. github.com/sailuh) +repo <- get_github_repo(conf, "project_key_1") # Has to match github repository (e.g. github.com/sailuh/perceive) +save_path_issue_or_pr_comments <- path.expand(get_github_issue_or_pr_comment_path(conf, "project_key_1")) +save_path_issue_event <- get_github_issue_event_path(conf, "project_key_1") +save_path_commit <- get_github_commit_path(conf, "project_key_1") # your file github_token contains the GitHub token API obtained in the steps above token <- scan("~/.ssh/github_token",what="character",quiet=TRUE) ``` @@ -57,23 +59,12 @@ token <- scan("~/.ssh/github_token",what="character",quiet=TRUE) In this section we obtain the raw data (.json) containing all information the GitHub API endpoint provides. We parse the information of interest in the subsequent section. -```{r eval = FALSE} -dir.create(paste0(save_path)) -``` - - ## Issue Events First we obtain all issue events of the project, so we may later subset issue assignments. -```{r} -save_path_issue_event <- paste0(save_path,"/issue_event/") -``` - - ```{r Collect all issue events, eval = FALSE} gh_response <- github_api_project_issue_events(owner,repo,token) -dir.create(save_path_issue_event) github_api_iterate_pages(token,gh_response,save_path_issue_event,prefix="issue_event") ``` @@ -81,14 +72,8 @@ github_api_iterate_pages(token,gh_response,save_path_issue_event,prefix="issue_e Next we download commit data from GitHub API. This will be used to know which users in the issue events have or not merge permissions. -```{r} -save_path_commit <- paste0(save_path,"/commit/") -``` - - ```{r Collect all project commit messages, eval = FALSE} gh_response <- github_api_project_commits(owner,repo,token) -dir.create(save_path_commit) github_api_iterate_pages(token,gh_response,save_path_commit,prefix="commit") ``` diff --git a/vignettes/gitlog_entity_showcase.Rmd b/vignettes/gitlog_entity_showcase.Rmd index d6e4cbb8..87a8747b 100644 --- a/vignettes/gitlog_entity_showcase.Rmd +++ b/vignettes/gitlog_entity_showcase.Rmd @@ -32,22 +32,22 @@ require(knitr) # Project Configuration File ```{r} -tool <- yaml::read_yaml("../tools.yml") -conf <- yaml::read_yaml("../conf/kaiaulu.yml") +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/kaiaulu.yml") # 3rd Party Tools -perceval_path <- tool[["perceval"]] -utags_path <- tool[["utags"]] +perceval_path <- get_tool_project("perceval", tool) +utags_path <- get_tool_project("utags", tool) # Ctags Line Types -kinds <- conf[["tool"]][["uctags"]][["keep_lines_type"]] +kinds <- get_uctags_line_types(conf) # Local Git Repo Folder Path -git_repo_path <- conf[["version_control"]][["log"]] +git_repo_path <- get_git_repo_path(conf) # File Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) ``` # Construct Collaboration Network diff --git a/vignettes/gitlog_showcase.Rmd b/vignettes/gitlog_showcase.Rmd index 9e4a95b7..64854c2a 100644 --- a/vignettes/gitlog_showcase.Rmd +++ b/vignettes/gitlog_showcase.Rmd @@ -66,16 +66,16 @@ The file makes all assumptions explicit to you when using the code. Note these a The following code block reads the information explained just now: ```{r} -tool <- yaml::read_yaml("../tools.yml") -conf <- yaml::read_yaml("../conf/kaiaulu.yml") -perceval_path <- tool[["perceval"]] -git_repo_path <- conf[["version_control"]][["log"]] -git_branch <- conf[["version_control"]][["branch"]][1] -nvdfeed_folder_path <- conf[["vulnerabilities"]][["nvd_feed"]] +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/kaiaulu.yml") +perceval_path <- get_tool_project("perceval", tool) +git_repo_path <- get_git_repo_path(conf) +git_branch <- get_git_branches(conf)[1] +nvdfeed_folder_path <- get_nvdfeed_folder_path(conf) # Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) ``` This is all the project configuration files are used for. If you inspect the variables above, you will see they are just strings. As a reminder, the tools.yml is where you store the filepaths to third party software in your computer. Please see Kaiaulu's README.md for details. As a rule of thumb, any R Notebooks in Kaiaulu load the project configuration file at the start, much like you would normally initialize variables at the start of your source code. diff --git a/vignettes/gitlog_vulnerabilities_showcase.Rmd b/vignettes/gitlog_vulnerabilities_showcase.Rmd index 09474cdb..5ed6b745 100644 --- a/vignettes/gitlog_vulnerabilities_showcase.Rmd +++ b/vignettes/gitlog_vulnerabilities_showcase.Rmd @@ -28,16 +28,16 @@ require(yaml) Load config file. ```{r} -tool <- yaml::read_yaml("../tools.yml") -conf <- yaml::read_yaml("../conf/chromium.yml") -perceval_path <- tool[["perceval"]] -git_repo_path <- conf[["version_control"]][["log"]] -nvdfeed_folder_path <- conf[["vulnerabilities"]][["nvd_feed"]] -cveid_regex <- conf[["commit_message_id_regex"]][["cve_id"]] +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/chromium.yml") +perceval_path <- get_tool_project("perceval", tool) +git_repo_path <- get_git_repo_path(conf) +nvdfeed_folder_path <- get_nvdfeed_folder_path(conf) +cveid_regex <- get_cveid_regex(conf) # Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) ``` # Construct Contribution Network diff --git a/vignettes/graph_gof_showcase.Rmd b/vignettes/graph_gof_showcase.Rmd index f6f9d76a..19c3c89f 100644 --- a/vignettes/graph_gof_showcase.Rmd +++ b/vignettes/graph_gof_showcase.Rmd @@ -89,22 +89,22 @@ require(gt) ```{r} -tool <- yaml::read_yaml("../tools.yml") -conf <- yaml::read_yaml("../conf/junit5.yml") -srcml_path <- tool[["srcml"]] -pattern4_path <- tool[["pattern4"]] +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/junit5.yml") +srcml_path <- get_tool_project("srcml", tool) +pattern4_path <- get_tool_project("pattern4", tool) -git_repo_path <- conf[["version_control"]][["log"]] +git_repo_path <- get_git_repo_path(conf) folder_path <- stri_replace_last(git_repo_path,replacement="",regex=".git") # Tool Parameters -srcml_filepath <- conf[["tool"]][["srcml"]][["srcml_path"]] -class_folder_path <- conf[["tool"]][["pattern4"]][["class_folder_path"]] -pattern4_output_filepath <- conf[["tool"]][["pattern4"]][["output_filepath"]] +srcml_filepath <- get_srcml_filepath(conf) +class_folder_path <- get_pattern4_folder_path(conf) +pattern4_output_filepath <- get_pattern4_filepath(conf) # Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) ``` This is all the project configuration files are used for. If you inspect the variables above, you will see they are just strings. As a reminder, the tools.yml is where you store the filepaths to third party software in your computer. Please see Kaiaulu's README.md for details. As a rule of thumb, any R Notebooks in Kaiaulu load the project configuration file at the start, much like you would normally initialize variables at the start of your source code. diff --git a/vignettes/issue_social_smell_showcase.Rmd b/vignettes/issue_social_smell_showcase.Rmd index 42459ec0..8d537c54 100644 --- a/vignettes/issue_social_smell_showcase.Rmd +++ b/vignettes/issue_social_smell_showcase.Rmd @@ -55,33 +55,30 @@ At the scope of this notebook, **only the first branch** (top) specified in the We also provide the path for `tools.yml`. Kaiaulu does not implement all available functionality from scratch. Conversely, it will also not expect all dependencies to be installed. Every function defined in the API expects as parameter a filepath to the external dependency binary. Tools.yml is a convenience file that stores all the binary paths, so it can be set once during setup and reused multiple times for analysis. You can find an example of `tools.yml` on the github repo from Kaiaulu root directory. ```{r} -tools_path <- "../tools.yml" -conf_path <- "../conf/openssl.yml" +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/openssl.yml") -tool <- yaml::read_yaml(tools_path) -scc_path <- tool[["scc"]] +scc_path <- get_tool_project("scc", tool) -oslom_dir_path <- tool[["oslom_dir"]] -oslom_undir_path <- tool[["oslom_undir"]] +oslom_dir_path <- get_tool_project("oslom_dir", tool) +oslom_undir_path <- get_tool_project("oslom_undir", tool) -conf <- yaml::read_yaml(conf_path) +perceval_path <- get_tool_project("perceval", tool) +git_repo_path <- get_git_repo_path(conf) +git_branch <- get_git_branches(conf)[1] -perceval_path <- tool[["perceval"]] -git_repo_path <- conf[["version_control"]][["log"]] -git_branch <- conf[["version_control"]][["branch"]][1] +#start_commit <- get_window_start_commit(conf) +#end_commit <- get_window_end_commit(conf) +window_size <- get_window_size(conf) -#start_commit <- conf[["analysis"]][["window"]][["start_commit"]] -#end_commit <- conf[["analysis"]][["window"]][["end_commit"]] -window_size <- conf[["analysis"]][["window"]][["size_days"]] +mbox_path <- get_mbox_path(conf, "project_key_1") -mbox_path <- conf[["mailing_list"]][["mbox"]] - -nvdfeed_folder_path <- conf[["vulnerabilities"]][["nvd_feed"]] -cveid_regex <- conf[["commit_message_id_regex"]][["cve_id"]] +nvdfeed_folder_path <- get_nvdfeed_folder_path(conf) +cveid_regex <- get_cveid_regex(conf) # Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) ``` The remainder of this notebook does not require modifications. If you encounter an error in any code block below, chances are one or more parameters above have been specified incorrectly, or the project of choice may have led to an outlier case. Please open an issue if you encounter an error, or if not sure post on discussions in Kaiaulu's GitHub. **E-mailing bugs is discouraged as it is hard to track**. diff --git a/vignettes/line_metrics_showcase.Rmd b/vignettes/line_metrics_showcase.Rmd index 9bbd0d28..39b72d7d 100644 --- a/vignettes/line_metrics_showcase.Rmd +++ b/vignettes/line_metrics_showcase.Rmd @@ -57,16 +57,16 @@ filter: We load the necessary information in this code block: ```{r} -tool <- yaml::read_yaml("../tools.yml") -conf <- yaml::read_yaml("../conf/apr.yml") -scc_path <- tool[["scc"]] +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/apr.yml") +scc_path <- get_tool_project("scc", tool) -git_repo_path <- conf[["version_control"]][["log"]] -git_branch <- conf[["version_control"]][["branch"]][1] +git_repo_path <- get_git_repo_path(conf) +git_branch <- get_git_branches(conf)[1] # Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) ``` The loaded variables are just strings or numbers. You can always inspect any variable to double check what is being used in the analysis. For instance, we are interested on analyzing a specific release of APR here: diff --git a/vignettes/motif_analysis.Rmd b/vignettes/motif_analysis.Rmd index cd58df16..3b7de8d5 100644 --- a/vignettes/motif_analysis.Rmd +++ b/vignettes/motif_analysis.Rmd @@ -38,26 +38,23 @@ Kaiaulu re-implementation is easy to extend, and allow for any combination of mo We demonstrate here both the triangle and square motif as originally defined in our paper, which leverages all 3 types of the networks. The project of analysis is Kaiaulu itself, however, this can be applied to other open source projects! ```{r} -tools_path <- "../tools.yml" -conf_path <- "../conf/kaiaulu.yml" +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/kaiaulu.yml") -tool <- yaml::read_yaml(tools_path) -scc_path <- tool[["scc"]] +scc_path <- get_tool_project("scc", tool) -oslom_dir_path <- tool[["oslom_dir"]] -oslom_undir_path <- tool[["oslom_undir"]] +oslom_dir_path <- get_tool_project("oslom_dir", tool) +oslom_undir_path <- get_tool_project("oslom_undir", tool) -conf <- yaml::read_yaml(conf_path) +perceval_path <- get_tool_project("perceval", tool) +git_repo_path <- get_git_repo_path(conf) +git_branch <- get_git_branches(conf)[1] -perceval_path <- tool[["perceval"]] -git_repo_path <- conf[["version_control"]][["log"]] -git_branch <- conf[["version_control"]][["branch"]][1] - -github_replies_path <- conf[["issue_tracker"]][["github"]][["replies"]] +github_replies_path <- get_github_issue_or_pr_comment_path(conf, "project_key_1") # Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) ``` ## Parse Gitlog diff --git a/vignettes/openhub_project_search.Rmd b/vignettes/openhub_project_search.Rmd new file mode 100644 index 00000000..7aa7de6d --- /dev/null +++ b/vignettes/openhub_project_search.Rmd @@ -0,0 +1,119 @@ +--- +title: "OpenHub API Interfacing for Project Search" +output: + html_document: + toc: true + number_sections: true +vignette: > + %\VignetteEngine{knitr::rmarkdown} + %\VignetteIndexEntry{OpenHub API Interfacing for Project Search} + %\VignetteEncoding{UTF-8} +--- + +```{r warning=FALSE,message=FALSE} +rm(list = ls()) +require(kaiaulu) +require(data.table) +require(knitr) +require(XML) +require(httr) +``` + + +```{r} +openhub_api_parameters <- list() +# organization_name is case sensitive +openhub_api_parameters[["organization_name"]] <- "Apache Software Foundation" +# language is case sensitive +openhub_api_parameters[["language"]] <- "java" +# your file openhub_token (a text file) contains the OpenHub token API +token <- scan("~/.ssh/openhub_token",what="character",quiet=TRUE) +``` + + +```{r} +#organizations_api_request <- openhub_api_organizations(token, organization_name) +#print(organizations_api_request) +``` + + +```{r} +openhub_organization_api_requests <- openhub_api_iterate_pages(token, openhub_api_organizations, openhub_api_parameters, max_pages=1) +``` + +```{r} +openhub_organizations <- openhub_parse_organizations(openhub_organization_api_requests, openhub_api_parameters) +print(openhub_organizations) +``` + +```{r} +openhub_api_parameters[["portfolio_project_site"]] <- openhub_organizations[["html_url_projects"]][[1]] # grab the first project.xml link for organization specified by name: organization_name +#portfolio_projects_api_request <- openhub_api_portfolio_projects(token, openhub_api_parameters) # returns the first xml file for portfolio projects +``` + +```{r} +#MAKE SURE TO REMOVE MAX PAGE COUNT (temp_max_number_of_portfolio_projects_pages_to_search_through) TO GET ALL PROJECTS THAT USE JAVA +temp_max_number_of_portfolio_projects_pages_to_search_through <- 1 +portfolio_projects_api_requests <- openhub_api_iterate_pages(token, openhub_api_portfolio_projects, openhub_api_parameters, max_pages=temp_max_number_of_portfolio_projects_pages_to_search_through) # returns all api_responses for portfolio projects +``` + + +```{r} +openhub_portfolio_projects <- openhub_parse_portfolio_projects(portfolio_projects_api_requests, openhub_api_parameters) +print(openhub_portfolio_projects) # names of all portfolio projects under the organization that use java as the primary language +``` + +```{r} +#print(openhub_portfolio_projects[["name"]][[1]]) +#print(length(openhub_portfolio_projects[["name"]])) +``` + + +```{r} +#MAYBE REMOVE MAX PAGE COUNT (1) (IT'S USED TO LOOP THROUGH EACH PAGE TO FIND THE NAME OF THE PROJECT) +projects_api_requests <- list() +for (i in 1:length(openhub_portfolio_projects[["name"]])) { + project_name <- openhub_portfolio_projects[["name"]][[i]] + openhub_api_parameters[["project_name"]] <- project_name + projects_api_requests <- append(projects_api_requests, openhub_api_iterate_pages(token, openhub_api_projects, openhub_api_parameters, max_pages=1)) # returns the first page for api_response for projects (ctrl+f query that ohloh api does is good enough to where the first api requested page will return a project with the matching name, no need to waste more api calls to search through the other pages) +} +``` + +```{r} +openhub_projects <- list() +for (i in 1:length(projects_api_requests)) { + project_name <- openhub_portfolio_projects[["name"]][[i]] + openhub_api_parameters[["project_name"]] <- project_name + openhub_projects[[i]] <- openhub_parse_projects(projects_api_requests, openhub_api_parameters) +} +openhub_projects <- rbindlist(openhub_projects) +print(openhub_projects) +``` + +```{r} +openhub_combined_projects <- merge(openhub_projects, openhub_portfolio_projects, by = "name", all = FALSE) # performs inner-join by "name" column +print(openhub_combined_projects) +``` + +```{r} +analyses_api_requests <- list() +for (i in 1:length(openhub_combined_projects[["name"]])) { + project_id <- openhub_combined_projects[["id"]][[i]] + openhub_api_parameters[["project_id"]] <- project_id + analyses_api_requests[[i]] <- openhub_api_iterate_pages(token, openhub_api_analyses, openhub_api_parameters) # returns all api_responses for portfolio projects +} +``` + +```{r} +openhub_analyses <- list() +for (i in 1:length(analyses_api_requests)) { + openhub_analyses[[i]] <- openhub_parse_analyses(analyses_api_requests[[i]]) +} +openhub_analyses <- rbindlist(openhub_analyses) +print(openhub_analyses) +``` + +```{r} +openhub_combined_data <- merge(openhub_combined_projects, openhub_analyses, by = "id", all = FALSE) # performs inner-join by "id" column +print(openhub_combined_data) +``` diff --git a/vignettes/refactoringminer_showcase.Rmd b/vignettes/refactoringminer_showcase.Rmd index eb25a155..5d37ac2b 100644 --- a/vignettes/refactoringminer_showcase.Rmd +++ b/vignettes/refactoringminer_showcase.Rmd @@ -17,14 +17,12 @@ require(kaiaulu) This is a wrapper for [Refactoring Miner](https://github.com/tsantalis/RefactoringMiner#running-refactoringminer-from-the-command-line). See README.md for setup details. ```{r} -tool <- yaml::read_yaml("../tools.yml") -conf <- yaml::read_yaml("../conf/tomcat.yml") -rminer_path <- tool[["refactoring_miner"]] -git_repo_path <- conf[["version_control"]][["log"]] -start_commit <- conf[["analysis"]][["enumeration"]][["commit"]][1] -end_commit <- conf[["analysis"]][["enumeration"]][["commit"]][2] - - +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/tomcat.yml") +rminer_path <- get_tool_project("refactoring_miner", tool) +git_repo_path <- get_git_repo_path(conf) +start_commit <- get_enumeration_commits(conf)[1] +end_commit <- get_enumeration_commits(conf)[2] ``` A sample of parsed refactorings is shown below in json format: diff --git a/vignettes/reply_communication_showcase.Rmd b/vignettes/reply_communication_showcase.Rmd index ad11ddc9..e8206172 100644 --- a/vignettes/reply_communication_showcase.Rmd +++ b/vignettes/reply_communication_showcase.Rmd @@ -29,12 +29,11 @@ require(yaml) Load config file. ```{r} -tool <- yaml::read_yaml("../tools.yml") -conf <- yaml::read_yaml("../conf/helix.yml") -perceval_path <- tool[["perceval"]] - -mbox_path <- conf[["mailing_list"]][["mbox"]] -jira_issue_comments_path <- conf[["issue_tracker"]][["jira"]][["issue_comments"]] +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/helix.yml") +perceval_path <- get_tool_project("perceval", tool) +mbox_path <- get_mbox_path(conf, "project_key_1") +jira_issue_comments_path <- get_jira_issues_comments_path(conf, "project_key_1") ``` diff --git a/vignettes/social_smell_showcase.Rmd b/vignettes/social_smell_showcase.Rmd index eb34fb72..d2c6676e 100644 --- a/vignettes/social_smell_showcase.Rmd +++ b/vignettes/social_smell_showcase.Rmd @@ -55,35 +55,29 @@ At the scope of this notebook, **only the first branch** (top) specified in the We also provide the path for `tools.yml`. Kaiaulu does not implement all available functionality from scratch. Conversely, it will also not expect all dependencies to be installed. Every function defined in the API expects as parameter a filepath to the external dependency binary. Tools.yml is a convenience file that stores all the binary paths, so it can be set once during setup and reused multiple times for analysis. You can find an example of `tools.yml` on the github repo from Kaiaulu root directory. For this notebook, you will need to install Perceval (use version 0.12.24) and OSLOM. Instructions to do so are available in the Kaiaulu README.md. Once you are finished, set the "perceval," "oslom_dir," and "oslom_undir" paths in your `tools.yml`. ```{r} -tools_path <- "../tools.yml" -conf_path <- "../conf/helix.yml" +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/helix.yml") -tool <- yaml::read_yaml(tools_path) -scc_path <- tool[["scc"]] +scc_path <- get_tool_project("scc", tool) -oslom_dir_path <- tool[["oslom_dir"]] -oslom_undir_path <- tool[["oslom_undir"]] - -conf <- yaml::read_yaml(conf_path) - -perceval_path <- tool[["perceval"]] -git_repo_path <- conf[["version_control"]][["log"]] -git_branch <- conf[["version_control"]][["branch"]][1] - -start_commit <- conf[["analysis"]][["window"]][["start_commit"]] -end_commit <- conf[["analysis"]][["window"]][["end_commit"]] -window_size <- conf[["analysis"]][["window"]][["size_days"]] - -mbox_path <- conf[["mailing_list"]][["mbox"]] -github_replies_path <- conf[["issue_tracker"]][["github"]][["replies"]] -jira_issue_comments_path <- conf[["issue_tracker"]][["jira"]][["issue_comments"]] +oslom_dir_path <- get_tool_project("oslom_dir", tool) +oslom_undir_path <- get_tool_project("oslom_undir", tool) +perceval_path <- get_tool_project("perceval", tool) +git_repo_path <- get_git_repo_path(conf) +git_branch <- get_git_branches(conf)[1] +start_commit <- get_window_start_commit(conf) +end_commit <- get_window_end_commit(conf) +window_size <- get_window_size(conf) +mbox_path <- get_mbox_path(conf, "project_key_1") +github_replies_path <- get_github_issue_or_pr_comment_path(conf, "project_key_1") +jira_issue_comments_path <- get_jira_issues_comments_path(conf, "project_key_1") # Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) ``` The remainder of this notebook does not require modifications. If you encounter an error in any code block below, chances are one or more parameters above have been specified incorrectly, or the project of choice may have led to an outlier case. Please open an issue if you encounter an error, or if not sure post on discussions in Kaiaulu's GitHub. **E-mailing bugs is discouraged as it is hard to track**. diff --git a/vignettes/text_gof_showcase.Rmd b/vignettes/text_gof_showcase.Rmd index bdb69649..1f065cba 100644 --- a/vignettes/text_gof_showcase.Rmd +++ b/vignettes/text_gof_showcase.Rmd @@ -112,22 +112,22 @@ require(gt) ```{r} -tool <- yaml::read_yaml("../tools.yml") -conf <- yaml::read_yaml("../conf/junit5.yml") -srcml_path <- tool[["srcml"]] +tool <- parse_config("../tools.yml") +conf <- parse_config("../conf/junit5.yml") +srcml_path <- get_tool_project("srcml", tool) -git_repo_path <- conf[["version_control"]][["log"]] +git_repo_path <- get_git_repo_path(conf) folder_path <- stri_replace_last(git_repo_path,replacement="",regex=".git") # Tool Parameters -srcml_filepath <- conf[["tool"]][["srcml"]][["srcml_path"]] +srcml_filepath <- get_srcml_filepath(conf) # Filters -file_extensions <- conf[["filter"]][["keep_filepaths_ending_with"]] -substring_filepath <- conf[["filter"]][["remove_filepaths_containing"]] +file_extensions <- get_file_extensions(conf) +substring_filepath <- get_substring_filepath(conf) # Analysis -topics <- conf[["analysis"]][["topics"]] +topics <- get_topics(conf) ``` This is all the project configuration files are used for. If you inspect the variables above, you will see they are just strings. As a reminder, the tools.yml is where you store the filepaths to third party software in your computer. Please see Kaiaulu's README.md for details. As a rule of thumb, any R Notebooks in Kaiaulu load the project configuration file at the start, much like you would normally initialize variables at the start of your source code.