├── man ├── figures │ └── logo.png ├── split_name_email.Rd ├── format_name_email.Rd ├── parse_rfile_ast.Rd ├── read_temporary_file.Rd ├── parse_r_dependencies.Rd ├── normalized_levenshtein.Rd ├── git_head.Rd ├── make_temporary_file.Rd ├── parse_r_function_definition.Rd ├── github_parse_project_issue.Rd ├── github_parse_pull_request.Rd ├── github_parse_project_commits.Rd ├── parse_line_metrics.Rd ├── git_log.Rd ├── io_make_file.Rd ├── github_parse_project_issue_events.Rd ├── github_api_page_last.Rd ├── github_api_page_next.Rd ├── io_delete_folder.Rd ├── git_init.Rd ├── github_api_page_first.Rd ├── github_api_page_prev.Rd ├── io_make_folder.Rd ├── git_add.Rd ├── git_blame.Rd ├── create_status.Rd ├── create_votes.Rd ├── create_creator.Rd ├── create_reporter.Rd ├── create_watches.Rd ├── github_parse_project_issue_or_pr_comments.Rd ├── create_assignee.Rd ├── github_api_rate_limit.Rd ├── github_parse_project_pr_files.Rd ├── github_parse_project_pr_merge.Rd ├── parse_line_type_file.Rd ├── github_parse_project_pr_commits.Rd ├── create_components.Rd ├── create_priority.Rd ├── parse_dv8_metrics_decoupling_level.Rd ├── parse_jira_replies.Rd ├── filter_by_last_files_change.Rd ├── github_parse_project_pr_reviewers.Rd ├── assign_exact_identity.Rd ├── create_project.Rd ├── dv8_dsmb_to_dsmj.Rd ├── motif_factory.Rd ├── create_versions.Rd ├── example_jira_two_issues.Rd ├── is_same_identity.Rd ├── create_issue_type.Rd ├── git_checkout.Rd ├── create_issue_comments.Rd ├── example_jira_issue_comments.Rd ├── create_fix_versions.Rd ├── make_jira_issue_tracker.Rd ├── transform_r_dependencies_to_network.Rd ├── example_empty_repo.Rd ├── github_api_project_issue.Rd ├── example_different_branches.Rd ├── git_commit.Rd ├── github_parse_project_pull_request_reviews.Rd ├── git_mv.Rd ├── github_api_project_pull_request.Rd ├── get_window_size.Rd ├── example_renamed_file.Rd ├── github_parse_project_pull_request.Rd ├── example_large_sized_commits.Rd ├── dv8_gitlog_to_gitnumstat.Rd ├── github_api_project_contributors.Rd ├── query_src_text_namespace.Rd ├── example_function_in_files.Rd ├── get_jira_keys.Rd ├── example_mailing_list_two_threads.Rd ├── get_topics.Rd ├── example_jira_issue_components.Rd ├── github_api_pull_request.Rd ├── create_parent.Rd ├── get_github_keys.Rd ├── query_src_text_class_names.Rd ├── dv8_mdsmb_to_decoupling_level.Rd ├── example_notebook_alternating_function_in_files.Rd ├── parse_git_blame.Rd ├── parse_config.Rd ├── get_mbox_key_indexes.Rd ├── github_api_pr_files.Rd ├── get_date_from_commit_hash.Rd ├── git_delete_sample_log.Rd ├── github_api_pr_commits.Rd ├── example_notebook_function_in_code_blocks.Rd ├── get_git_branches.Rd ├── make_mbox_mailing_list.Rd ├── create_resolution.Rd ├── get_file_extensions.Rd ├── get_uctags_line_types.Rd ├── model_directed_graph.Rd ├── get_enumeration_commits.Rd ├── github_api_project_issue_events.Rd ├── example_github_issue_no_description.Rd ├── github_api_pr_merge.Rd ├── get_filter_commit_size.Rd ├── get_pattern4_filepath.Rd ├── get_pattern4_folder_path.Rd ├── get_issue_id_regex.Rd ├── get_srcml_filepath.Rd ├── get_substring_filepath.Rd ├── get_window_end_commit.Rd ├── github_parse_search_issues_refresh.Rd ├── recolor_network_by_community.Rd ├── get_cveid_regex.Rd ├── get_nvdfeed_folder_path.Rd ├── get_dv8_flaws_params.Rd ├── get_window_start_commit.Rd ├── get_understand_output_path.Rd ├── github_api_pull_request_reviews.Rd ├── get_understand_project_path.Rd ├── get_git_repo_path.Rd ├── github_api_pr_reviewers.Rd ├── git_create_sample_log.Rd ├── get_understand_code_language.Rd ├── annotate_src_text.Rd ├── example_test_example_src_repo.Rd ├── get_depends_code_language.Rd ├── get_dv8_folder_path.Rd ├── github_api_project_commits.Rd ├── metric_file_churn.Rd ├── process_gz_to_mbox_in_folder.Rd ├── get_depends_keep_dependencies_type.Rd ├── get_jira_domain.Rd ├── get_understand_keep_dependencies_type.Rd ├── get_github_owner.Rd ├── get_github_repo.Rd ├── get_jira_issues_path.Rd ├── get_jira_project_key_name.Rd ├── get_mbox_domain.Rd ├── get_tool_project.Rd ├── download_bugzilla_rest_comments.Rd ├── get_mbox_path.Rd ├── get_github_issue_path.Rd ├── get_bugzilla_project_key.Rd ├── dv8_gitnumstat_to_hdsmb.Rd ├── get_mbox_input_file.Rd ├── get_bugzilla_issue_path.Rd ├── get_github_commit_path.Rd ├── metric_churn_per_commit_interval.Rd ├── metric_churn_per_commit_per_file.Rd ├── filter_by_file_extension.Rd ├── get_pipermail_domain.Rd ├── get_pipermail_path.Rd ├── parse_gof_patterns.Rd ├── query_src_text.Rd ├── get_pipermail_input_file.Rd ├── get_github_pr_files_path.Rd ├── get_jira_issues_comments_path.Rd ├── metric_file_bug_churn.Rd ├── get_github_issue_event_path.Rd ├── metric_churn.Rd ├── parse_java_code_refactoring_json.Rd ├── get_github_issue_search_path.Rd ├── get_github_pr_review_path.Rd ├── get_github_pr_commits_path.Rd ├── get_github_pull_request_path.Rd ├── get_github_pr_merge_path.Rd ├── metric_file_bug_frequency.Rd ├── bipartite_graph_projection.Rd ├── community_oslom.Rd ├── get_bugzilla_issue_comment_path.Rd ├── metric_file_non_bug_churn.Rd ├── filter_by_commit_interval.Rd ├── metric_file_non_bug_frequency.Rd ├── filter_by_filepath_substring.Rd ├── get_github_pr_comments_path.Rd ├── get_github_pr_reviewers_path.Rd ├── github_api_pull_pr_comments.Rd ├── dv8_mdsmb_drhier_to_excel.Rd ├── dv8_mdsmb_to_hierclsxb.Rd ├── get_github_issue_or_pr_comment_path.Rd ├── motif_factory_triangle.Rd ├── motif_factory_anti_triangle.Rd ├── parse_r_function_dependencies.Rd ├── format_submitted_at_from_file.Rd ├── smell_radio_silence.Rd ├── commit_message_id_coverage.Rd ├── filter_by_commit_size.Rd ├── github_api_issue_pr_comments.Rd ├── write_gof_patterns.Rd ├── transform_reply_to_bipartite_network.Rd ├── github_api_project_pull_request_inline_comments.Rd ├── dv8_clsxj_to_clsxb.Rd ├── dv8_clsxb_to_clsxj.Rd ├── transform_dependencies_to_network.Rd ├── github_api_project_issue_or_pr_comments.Rd ├── format_created_at_from_file.Rd ├── transform_cve_cwe_file_to_network.Rd ├── download_bugzilla_perceval_traditional_issue_comments.Rd ├── motif_factory_square.Rd ├── transform_understand_dependencies_to_network.Rd ├── motif_factory_anti_square.Rd ├── parse_nvdfeed.Rd ├── smell_organizational_silo.Rd ├── download_bugzilla_rest_issues_comments.Rd ├── transform_commit_message_id_to_network.Rd ├── transform_gitlog_to_bipartite_network.Rd ├── weight_scheme_sum_edges.Rd ├── parse_understand_dependencies.Rd ├── parse_github_replies.Rd ├── transform_gitlog_to_entity_bipartite_network.Rd ├── dv8_depends_to_sdsmj.Rd ├── interval_commit_metric.Rd ├── smell_missing_links.Rd ├── parse_commit_message_id.Rd ├── identity_match.Rd └── parse_mbox_latest_date.Rd ├── tests ├── testthat.R └── testthat │ ├── test-github.R │ ├── testdata │ └── tools.yml │ └── test-src.R ├── .Rbuildignore ├── .gitignore ├── kaiaulu.Rproj ├── R └── reply.R ├── tools.yml └── vignettes ├── _refactoringminer_showcase.Rmd └── kaiaulu_architecture.Rmd /man/figures/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailuh/kaiaulu/HEAD/man/figures/logo.png -------------------------------------------------------------------------------- /tests/testthat.R: -------------------------------------------------------------------------------- 1 | library(testthat) 2 | library(kaiaulu) 3 | 4 | test_check("kaiaulu") 5 | -------------------------------------------------------------------------------- /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^.*\.Rproj$ 2 | ^\.Rproj\.user$ 3 | ^_pkgdown\.yml$ 4 | ^docs$ 5 | ^pkgdown$ 6 | _*\.Rmd$ 7 | depends.log 8 | ^rawdata$ 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Rproj.user 2 | .Rhistory 3 | .RData 4 | .Ruserdata 5 | depends.log 6 | .DS_Store 7 | docs 8 | pkgdown 9 | rawdata 10 | .Rproj.user 11 | -------------------------------------------------------------------------------- /man/split_name_email.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/identity.R 3 | \name{split_name_email} 4 | \alias{split_name_email} 5 | \title{Split Name and Email} 6 | \usage{ 7 | split_name_email(name_email) 8 | } 9 | \arguments{ 10 | \item{name_email}{A formatted name and email.} 11 | } 12 | \description{ 13 | Split Name and Email 14 | } 15 | -------------------------------------------------------------------------------- /man/format_name_email.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/identity.R 3 | \name{format_name_email} 4 | \alias{format_name_email} 5 | \title{Format Name and Email} 6 | \usage{ 7 | format_name_email(name_email) 8 | } 9 | \arguments{ 10 | \item{name_email}{A string containing name and email} 11 | } 12 | \description{ 13 | Format Name and Email 14 | } 15 | -------------------------------------------------------------------------------- /man/parse_rfile_ast.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/ast.R 3 | \name{parse_rfile_ast} 4 | \alias{parse_rfile_ast} 5 | \title{Parse R Abstract Syntax Tree} 6 | \usage{ 7 | parse_rfile_ast(filepath) 8 | } 9 | \arguments{ 10 | \item{filepath}{The filepath of an R file} 11 | } 12 | \description{ 13 | Parse R Abstract Syntax Tree 14 | } 15 | \keyword{internal} 16 | -------------------------------------------------------------------------------- /man/read_temporary_file.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/io.R 3 | \name{read_temporary_file} 4 | \alias{read_temporary_file} 5 | \title{Read Temporary File} 6 | \usage{ 7 | read_temporary_file(temp) 8 | } 9 | \arguments{ 10 | \item{temp}{A temporary file created by \code{make_temporary_file}} 11 | } 12 | \description{ 13 | Read a temporary file. 14 | } 15 | -------------------------------------------------------------------------------- /man/parse_r_dependencies.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{parse_r_dependencies} 4 | \alias{parse_r_dependencies} 5 | \title{Parse R File and Function Dependencies} 6 | \usage{ 7 | parse_r_dependencies(folder_path) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path to an R folder path} 11 | } 12 | \description{ 13 | Parse R File and Function Dependencies 14 | } 15 | -------------------------------------------------------------------------------- /man/normalized_levenshtein.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/identity.R 3 | \name{normalized_levenshtein} 4 | \alias{normalized_levenshtein} 5 | \title{Edit Distance of two words} 6 | \usage{ 7 | normalized_levenshtein(a, b) 8 | } 9 | \arguments{ 10 | \item{a}{a string} 11 | 12 | \item{b}{a string} 13 | } 14 | \description{ 15 | Edit Distance of two words 16 | } 17 | \keyword{internal} 18 | -------------------------------------------------------------------------------- /man/git_head.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{git_head} 4 | \alias{git_head} 5 | \title{Gets the current commit hash head of the git repo} 6 | \usage{ 7 | git_head(git_repo_path) 8 | } 9 | \arguments{ 10 | \item{git_repo_path}{The git repo path} 11 | } 12 | \value{ 13 | A commit hash character 14 | } 15 | \description{ 16 | Gets the current commit hash head of the git repo 17 | } 18 | -------------------------------------------------------------------------------- /man/make_temporary_file.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/io.R 3 | \name{make_temporary_file} 4 | \alias{make_temporary_file} 5 | \title{Make Temporary File} 6 | \usage{ 7 | make_temporary_file(content, extension) 8 | } 9 | \arguments{ 10 | \item{content}{Textual content to be added to the file} 11 | 12 | \item{extension}{File extension (e.g. .c, .txt, .md, etc)} 13 | } 14 | \description{ 15 | Creates a temporary file 16 | } 17 | -------------------------------------------------------------------------------- /man/parse_r_function_definition.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/ast.R 3 | \name{parse_r_function_definition} 4 | \alias{parse_r_function_definition} 5 | \title{Parse R Function Definitions} 6 | \usage{ 7 | parse_r_function_definition(parsed_r_file) 8 | } 9 | \arguments{ 10 | \item{parsed_r_file}{A parsed R file (see \code{\link{parse_rfile_ast}})} 11 | } 12 | \description{ 13 | Parse R Function Definitions 14 | } 15 | \keyword{internal} 16 | -------------------------------------------------------------------------------- /man/github_parse_project_issue.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_parse_project_issue} 4 | \alias{github_parse_project_issue} 5 | \title{Parse Issues JSON to Table} 6 | \usage{ 7 | github_parse_project_issue(api_responses) 8 | } 9 | \arguments{ 10 | \item{api_responses}{API response obtained from github_api_* function.} 11 | } 12 | \description{ 13 | Note not all columns available in the downloaded json are parsed. 14 | } 15 | -------------------------------------------------------------------------------- /man/github_parse_pull_request.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_parse_pull_request} 4 | \alias{github_parse_pull_request} 5 | \title{Parse Pull Requests JSON to Table} 6 | \usage{ 7 | github_parse_pull_request(api_responses) 8 | } 9 | \arguments{ 10 | \item{api_responses}{API response obtained from github_api_* function.} 11 | } 12 | \description{ 13 | Note not all columns available in the downloaded json are parsed. 14 | } 15 | -------------------------------------------------------------------------------- /man/github_parse_project_commits.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_parse_project_commits} 4 | \alias{github_parse_project_commits} 5 | \title{Parse Commits JSON to Table} 6 | \usage{ 7 | github_parse_project_commits(api_responses) 8 | } 9 | \arguments{ 10 | \item{api_responses}{API response obtained from github_api_* function.} 11 | } 12 | \description{ 13 | Note not all columns available in the downloaded json are parsed. 14 | } 15 | -------------------------------------------------------------------------------- /man/parse_line_metrics.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{parse_line_metrics} 4 | \alias{parse_line_metrics} 5 | \title{Parse File Line Metrics} 6 | \usage{ 7 | parse_line_metrics(scc_path, git_repo_path) 8 | } 9 | \arguments{ 10 | \item{scc_path}{The path to scc binary. 11 | See \url{https://github.com/boyter/scc}} 12 | 13 | \item{git_repo_path}{path to git repo (ends in .git)} 14 | } 15 | \description{ 16 | Parse File Line Metrics 17 | } 18 | -------------------------------------------------------------------------------- /man/git_log.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{git_log} 4 | \alias{git_log} 5 | \title{Saves gitlog to a path} 6 | \usage{ 7 | git_log(git_repo_path, flags, save_path) 8 | } 9 | \arguments{ 10 | \item{git_repo_path}{The git repo path} 11 | 12 | \item{flags}{Optional flags for git log command} 13 | 14 | \item{save_path}{the filepath to save the file} 15 | } 16 | \description{ 17 | Saves the `.git` of a github repository as a gitlog at the specified path 18 | } 19 | -------------------------------------------------------------------------------- /man/io_make_file.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/io.R 3 | \name{io_make_file} 4 | \alias{io_make_file} 5 | \title{Make File} 6 | \usage{ 7 | io_make_file(file_path, body) 8 | } 9 | \arguments{ 10 | \item{file_path}{The path of the file that is being saved} 11 | 12 | \item{body}{The contents of the file} 13 | } 14 | \value{ 15 | file with specified path and body 16 | } 17 | \description{ 18 | This function creates a local file on disk with 19 | the specified content. 20 | } 21 | -------------------------------------------------------------------------------- /man/github_parse_project_issue_events.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_parse_project_issue_events} 4 | \alias{github_parse_project_issue_events} 5 | \title{Parse Issue Events JSON to Table} 6 | \usage{ 7 | github_parse_project_issue_events(api_responses) 8 | } 9 | \arguments{ 10 | \item{api_responses}{API response obtained from github_api_* function.} 11 | } 12 | \description{ 13 | Note not all columns available in the downloaded json are parsed. 14 | } 15 | -------------------------------------------------------------------------------- /man/github_api_page_last.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_page_last} 4 | \alias{github_api_page_last} 5 | \title{Obtain the last GitHub response page.} 6 | \usage{ 7 | github_api_page_last(gh_response) 8 | } 9 | \arguments{ 10 | \item{gh_response}{A response returned by any GitHub endpoint which is paginated (e.g. \code{\link{github_api_project_commits}}).} 11 | } 12 | \description{ 13 | Obtain the last GitHub response page. 14 | } 15 | \keyword{internal} 16 | -------------------------------------------------------------------------------- /man/github_api_page_next.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_page_next} 4 | \alias{github_api_page_next} 5 | \title{Obtain the next GitHub response page.} 6 | \usage{ 7 | github_api_page_next(gh_response) 8 | } 9 | \arguments{ 10 | \item{gh_response}{A response returned by any GitHub endpoint which is paginated (e.g. \code{\link{github_api_project_commits}}).} 11 | } 12 | \description{ 13 | Obtain the next GitHub response page. 14 | } 15 | \keyword{internal} 16 | -------------------------------------------------------------------------------- /man/io_delete_folder.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/io.R 3 | \name{io_delete_folder} 4 | \alias{io_delete_folder} 5 | \title{Delete Folder} 6 | \usage{ 7 | io_delete_folder(folder_path, folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{Path of folder where the folder to be deleted is. Default set to /tmp} 11 | 12 | \item{folder_name}{Name of folder to be deleted} 13 | } 14 | \value{ 15 | The deleted folder_path 16 | } 17 | \description{ 18 | Deletes a folder on disk. 19 | } 20 | -------------------------------------------------------------------------------- /man/git_init.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{git_init} 4 | \alias{git_init} 5 | \title{Git Init} 6 | \usage{ 7 | git_init(folder_path) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path to the folder where the Git repository should be initialized.} 11 | } 12 | \value{ 13 | The path to the newly created Git repository. 14 | } 15 | \description{ 16 | Initializes a new Git repository in the specified folder. 17 | The Git Init command creates a hidden `.git` folder. 18 | } 19 | -------------------------------------------------------------------------------- /man/github_api_page_first.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_page_first} 4 | \alias{github_api_page_first} 5 | \title{Obtain the first GitHub response page.} 6 | \usage{ 7 | github_api_page_first(gh_response) 8 | } 9 | \arguments{ 10 | \item{gh_response}{A response returned by any GitHub endpoint which is paginated (e.g. \code{\link{github_api_project_commits}}).} 11 | } 12 | \description{ 13 | Obtain the first GitHub response page. 14 | } 15 | \keyword{internal} 16 | -------------------------------------------------------------------------------- /man/github_api_page_prev.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_page_prev} 4 | \alias{github_api_page_prev} 5 | \title{Obtain the previous GitHub response page.} 6 | \usage{ 7 | github_api_page_prev(gh_response) 8 | } 9 | \arguments{ 10 | \item{gh_response}{A response returned by any GitHub endpoint which is paginated (e.g. \code{\link{github_api_project_commits}}).} 11 | } 12 | \description{ 13 | Obtain the previous GitHub response page. 14 | } 15 | \keyword{internal} 16 | -------------------------------------------------------------------------------- /man/io_make_folder.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/io.R 3 | \name{io_make_folder} 4 | \alias{io_make_folder} 5 | \title{Make Folder} 6 | \usage{ 7 | io_make_folder(folder_path, folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{Path of folder where new folder will be, default set to /tmp} 11 | 12 | \item{folder_name}{Name of newly created folder} 13 | } 14 | \value{ 15 | The new folder_path with its updated contents 16 | } 17 | \description{ 18 | Creates a new folder on disk. 19 | } 20 | -------------------------------------------------------------------------------- /kaiaulu.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | ProjectId: 824d379d-d39e-4523-a2b5-a50fad39eea3 3 | 4 | RestoreWorkspace: Default 5 | SaveWorkspace: Default 6 | AlwaysSaveHistory: Default 7 | 8 | EnableCodeIndexing: Yes 9 | UseSpacesForTab: Yes 10 | NumSpacesForTab: 2 11 | Encoding: UTF-8 12 | 13 | RnwWeave: Sweave 14 | LaTeX: pdfLaTeX 15 | 16 | AutoAppendNewline: Yes 17 | StripTrailingWhitespace: Yes 18 | 19 | BuildType: Package 20 | PackageUseDevtools: Yes 21 | PackageInstallArgs: --no-multiarch --with-keep.source 22 | PackageRoxygenize: rd,collate,namespace 23 | -------------------------------------------------------------------------------- /man/git_add.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{git_add} 4 | \alias{git_add} 5 | \title{Git Add} 6 | \usage{ 7 | git_add(git_repo, folder_path, filepath) 8 | } 9 | \arguments{ 10 | \item{git_repo}{The git repo path} 11 | 12 | \item{folder_path}{The worktree path} 13 | 14 | \item{filepath}{The filepath we want to add} 15 | } 16 | \value{ 17 | The path to the sample .git file. 18 | } 19 | \description{ 20 | Performs the `git add` command, which stages a given 21 | file in the repo. 22 | } 23 | -------------------------------------------------------------------------------- /man/git_blame.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{git_blame} 4 | \alias{git_blame} 5 | \title{Git blame wrapper} 6 | \usage{ 7 | git_blame(git_repo_path, flags, commit_hash, file_path) 8 | } 9 | \arguments{ 10 | \item{git_repo_path}{The git repo pat} 11 | 12 | \item{flags}{Optional flags for git log command} 13 | 14 | \item{commit_hash}{The commit hash of the file we will blame} 15 | 16 | \item{file_path}{The file we will blame} 17 | } 18 | \description{ 19 | Git blame wrapper 20 | } 21 | -------------------------------------------------------------------------------- /man/create_status.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_status} 4 | \alias{create_status} 5 | \title{Create Status} 6 | \usage{ 7 | create_status(jira_domain_url, status) 8 | } 9 | \arguments{ 10 | \item{jira_domain_url}{URL of JIRA domain} 11 | 12 | \item{status}{description of status} 13 | } 14 | \value{ 15 | A list named 'status' containing the status of the issue 16 | } 17 | \description{ 18 | Creates a status cell for \code{\link{make_jira_issue}}. 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /man/create_votes.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_votes} 4 | \alias{create_votes} 5 | \title{Create Votes} 6 | \usage{ 7 | create_votes(jira_domain_url, issue_key) 8 | } 9 | \arguments{ 10 | \item{jira_domain_url}{URL of JIRA domain} 11 | 12 | \item{issue_key}{issue key of JIRA issue} 13 | } 14 | \value{ 15 | A list named 'votes' that has the number of votes for the issue 16 | } 17 | \description{ 18 | Create a votes cell for \code{\link{make_jira_issue}}. 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /man/create_creator.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_creator} 4 | \alias{create_creator} 5 | \title{Create Creator} 6 | \usage{ 7 | create_creator(jira_domain_url, creator_name) 8 | } 9 | \arguments{ 10 | \item{jira_domain_url}{URL of JIRA domain} 11 | 12 | \item{creator_name}{name of creator} 13 | } 14 | \value{ 15 | A list named 'creator' that has creator's information 16 | } 17 | \description{ 18 | Creates the issue creator cell for \code{\link{make_jira_issue}}. 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /man/create_reporter.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_reporter} 4 | \alias{create_reporter} 5 | \title{Create Reporter} 6 | \usage{ 7 | create_reporter(jira_domain_url, reporter_name) 8 | } 9 | \arguments{ 10 | \item{jira_domain_url}{URL of JIRA domain} 11 | 12 | \item{reporter_name}{name of reporter} 13 | } 14 | \value{ 15 | A list named 'reporter' which contains the reporter's information 16 | } 17 | \description{ 18 | Creates a reporter cell for \code{\link{make_jira_issue}} 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /man/create_watches.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_watches} 4 | \alias{create_watches} 5 | \title{Create Watches} 6 | \usage{ 7 | create_watches(jira_domain_url, issue_key) 8 | } 9 | \arguments{ 10 | \item{jira_domain_url}{URL of JIRA domain} 11 | 12 | \item{issue_key}{issue key of JIRA issue} 13 | } 14 | \value{ 15 | A list named 'watches' that has the number of watchers for the issue 16 | } 17 | \description{ 18 | Create a watches cell for \code{\link{make_jira_issue}}. 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /man/github_parse_project_issue_or_pr_comments.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_parse_project_issue_or_pr_comments} 4 | \alias{github_parse_project_issue_or_pr_comments} 5 | \title{Parse Issues' or Pull Requests' Comments JSON to Table} 6 | \usage{ 7 | github_parse_project_issue_or_pr_comments(api_responses) 8 | } 9 | \arguments{ 10 | \item{api_responses}{API response obtained from github_api_* function.} 11 | } 12 | \description{ 13 | Note not all columns available in the downloaded json are parsed. 14 | } 15 | -------------------------------------------------------------------------------- /man/create_assignee.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_assignee} 4 | \alias{create_assignee} 5 | \title{Create Assignee} 6 | \usage{ 7 | create_assignee(jira_domain_url, assignee_name) 8 | } 9 | \arguments{ 10 | \item{jira_domain_url}{URL of JIRA domain} 11 | 12 | \item{assignee_name}{name of assignee} 13 | } 14 | \value{ 15 | A list named 'assignee' which contains the assignee's information 16 | } 17 | \description{ 18 | Creates an assignee cell for \code{\link{make_jira_issue}}. 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /man/github_api_rate_limit.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_rate_limit} 4 | \alias{github_api_rate_limit} 5 | \title{Returns token remaining available requests.} 6 | \usage{ 7 | github_api_rate_limit(token) 8 | } 9 | \arguments{ 10 | \item{token}{Your GitHub API token} 11 | } 12 | \description{ 13 | Returns token remaining available requests. 14 | } 15 | \references{ 16 | For more details see \url{https://docs.github.com/en/free-pro-team@latest/rest/overview/resources-in-the-rest-api#rate-limiting}. 17 | } 18 | -------------------------------------------------------------------------------- /man/github_parse_project_pr_files.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_parse_project_pr_files} 4 | \alias{github_parse_project_pr_files} 5 | \title{Parse Pull Requests' Files JSON to Table} 6 | \usage{ 7 | github_parse_project_pr_files(api_responses) 8 | } 9 | \arguments{ 10 | \item{api_responses}{API response obtained from github_api_* function.} 11 | } 12 | \description{ 13 | Note not all columns available in the downloaded json are parsed. 14 | This function only parses for the files made on the pull request. 15 | } 16 | -------------------------------------------------------------------------------- /man/github_parse_project_pr_merge.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_parse_project_pr_merge} 4 | \alias{github_parse_project_pr_merge} 5 | \title{Parse Pull Requests' Merge Status JSON to Table} 6 | \usage{ 7 | github_parse_project_pr_merge(api_responses) 8 | } 9 | \arguments{ 10 | \item{api_responses}{API response obtained from github_api_* function.} 11 | } 12 | \description{ 13 | Note not all columns available in the downloaded json are parsed. 14 | This function only checks for the merge status for a pull request. 15 | } 16 | -------------------------------------------------------------------------------- /man/parse_line_type_file.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{parse_line_type_file} 4 | \alias{parse_line_type_file} 5 | \title{Parse File Line Type} 6 | \usage{ 7 | parse_line_type_file(utags_path, filepath, kinds) 8 | } 9 | \arguments{ 10 | \item{utags_path}{The path to utags binary. 11 | See \url{https://github.com/universal-ctags/ctags}} 12 | 13 | \item{filepath}{path to file} 14 | 15 | \item{kinds}{the entity kinds utags should identify per line.} 16 | } 17 | \description{ 18 | Parse File Line Type 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /man/github_parse_project_pr_commits.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_parse_project_pr_commits} 4 | \alias{github_parse_project_pr_commits} 5 | \title{Parse Pull Requests' Commits JSON to Table} 6 | \usage{ 7 | github_parse_project_pr_commits(api_responses) 8 | } 9 | \arguments{ 10 | \item{api_responses}{API response obtained from github_api_* function.} 11 | } 12 | \description{ 13 | Note not all columns available in the downloaded json are parsed. 14 | This function only parses for the commits made on the pull request. 15 | } 16 | -------------------------------------------------------------------------------- /man/create_components.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_components} 4 | \alias{create_components} 5 | \title{Create Components} 6 | \usage{ 7 | create_components(jira_domain_url, components) 8 | } 9 | \arguments{ 10 | \item{jira_domain_url}{URL of JIRA domain} 11 | 12 | \item{components}{list of names of components} 13 | } 14 | \value{ 15 | A list named 'components' which contains each component and its details 16 | } 17 | \description{ 18 | Creates the component cells for \code{\link{make_jira_issue}}. 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /man/create_priority.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_priority} 4 | \alias{create_priority} 5 | \title{Create Priority} 6 | \usage{ 7 | create_priority(jira_domain_url, priority) 8 | } 9 | \arguments{ 10 | \item{jira_domain_url}{URL of JIRA domain} 11 | 12 | \item{priority}{the name of the priority of the issue (Major, Minor, Trivial)} 13 | } 14 | \value{ 15 | A list named 'priority' containing the priority of the issue 16 | } 17 | \description{ 18 | Create a priority cell for \code{\link{make_jira_issue}}. 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /man/parse_dv8_metrics_decoupling_level.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dv8.R 3 | \name{parse_dv8_metrics_decoupling_level} 4 | \alias{parse_dv8_metrics_decoupling_level} 5 | \title{Parses the decoupling level JSON file} 6 | \usage{ 7 | parse_dv8_metrics_decoupling_level(dl_path) 8 | } 9 | \arguments{ 10 | \item{dl_path}{path to decoupling metric json file created by \code{\link{dv8_mdsmb_to_decoupling_level}}} 11 | } 12 | \value{ 13 | data.table object with decoupling metrics 14 | } 15 | \description{ 16 | Creates a data.table object from a *.json file 17 | } 18 | -------------------------------------------------------------------------------- /man/parse_jira_replies.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{parse_jira_replies} 4 | \alias{parse_jira_replies} 5 | \title{Format Parsed Jira to Replies} 6 | \usage{ 7 | parse_jira_replies(parsed_jira) 8 | } 9 | \arguments{ 10 | \item{parsed_jira}{A project's jira including issues and comments from \code{\link{parse_jira}}.} 11 | } 12 | \value{ 13 | A reply table. 14 | } 15 | \description{ 16 | Combines the JIRA issue author and description to the comments author and 17 | description into a reply table suitable for communication analysis. 18 | } 19 | -------------------------------------------------------------------------------- /man/filter_by_last_files_change.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/filter.R 3 | \name{filter_by_last_files_change} 4 | \alias{filter_by_last_files_change} 5 | \title{Filter Git Log by all last files changes in snapshot} 6 | \usage{ 7 | filter_by_last_files_change(git_log, p_commit_hash) 8 | } 9 | \arguments{ 10 | \item{git_log}{A parsed git project by \code{parse_gitlog}.} 11 | 12 | \item{p_commit_hash}{A commit hash from git_log} 13 | } 14 | \description{ 15 | Filter a git log to show the last commit change made 16 | to a file since the start of the project. 17 | } 18 | -------------------------------------------------------------------------------- /man/github_parse_project_pr_reviewers.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_parse_project_pr_reviewers} 4 | \alias{github_parse_project_pr_reviewers} 5 | \title{Parse Pull Requests' Requested Reviewers JSON to Table} 6 | \usage{ 7 | github_parse_project_pr_reviewers(api_responses) 8 | } 9 | \arguments{ 10 | \item{api_responses}{API response obtained from github_api_* function.} 11 | } 12 | \description{ 13 | Note not all columns available in the downloaded json are parsed. 14 | This function only parses for the files made on the pull request. 15 | } 16 | -------------------------------------------------------------------------------- /man/assign_exact_identity.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/identity.R 3 | \name{assign_exact_identity} 4 | \alias{assign_exact_identity} 5 | \title{Identify authors with different names and emails} 6 | \usage{ 7 | assign_exact_identity(unique_name_email, use_name_only = FALSE) 8 | } 9 | \arguments{ 10 | \item{unique_name_email}{A single string containing name and email as used in git and mailinglists.} 11 | 12 | \item{use_name_only}{Uses only the name field (i.e. disregard the e-mail field)} 13 | } 14 | \description{ 15 | Identify authors with different names and emails 16 | } 17 | -------------------------------------------------------------------------------- /man/create_project.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_project} 4 | \alias{create_project} 5 | \title{Create Project} 6 | \usage{ 7 | create_project(jira_domain_url, project_key) 8 | } 9 | \arguments{ 10 | \item{jira_domain_url}{URL of JIRA domain} 11 | 12 | \item{project_key}{key of the project that contains the JIRA issue (e.g. "SPARK" or "GERONIMO")} 13 | } 14 | \value{ 15 | A list named 'project' that contains the project's information 16 | } 17 | \description{ 18 | Create a project cell for \code{\link{make_jira_issue}}. 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /man/dv8_dsmb_to_dsmj.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dv8.R 3 | \name{dv8_dsmb_to_dsmj} 4 | \alias{dv8_dsmb_to_dsmj} 5 | \title{Export a dsmb binary file as a separate json file} 6 | \usage{ 7 | dv8_dsmb_to_dsmj(dv8_path, dsmb_path, dsmj_path) 8 | } 9 | \arguments{ 10 | \item{dv8_path}{path to DV8 binary} 11 | 12 | \item{dsmb_path}{path to dsmb binary file created by \code{\link{dv8_gitnumstat_to_hdsmb}}} 13 | 14 | \item{dsmj_path}{path to json file} 15 | } 16 | \value{ 17 | the dsmj_path 18 | } 19 | \description{ 20 | Takes a \*.dv8-dsm file and exports as \*.json file 21 | } 22 | -------------------------------------------------------------------------------- /man/motif_factory.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/motif.R 3 | \name{motif_factory} 4 | \alias{motif_factory} 5 | \title{Motif Factory} 6 | \usage{ 7 | motif_factory(type) 8 | } 9 | \arguments{ 10 | \item{type}{The type of motif to construct.} 11 | } 12 | \description{ 13 | A simple factory function to generate available 14 | motifs. 15 | } 16 | \seealso{ 17 | Other motif: 18 | \code{\link{motif_factory_anti_square}()}, 19 | \code{\link{motif_factory_anti_triangle}()}, 20 | \code{\link{motif_factory_square}()}, 21 | \code{\link{motif_factory_triangle}()} 22 | } 23 | \concept{motif} 24 | -------------------------------------------------------------------------------- /man/create_versions.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_versions} 4 | \alias{create_versions} 5 | \title{Create Versions} 6 | \usage{ 7 | create_versions(jira_domain_url, affects_versions) 8 | } 9 | \arguments{ 10 | \item{jira_domain_url}{URL of JIRA domain} 11 | 12 | \item{affects_versions}{list of version names for the issue} 13 | } 14 | \value{ 15 | A list named 'versions' with a list of versions 16 | } 17 | \description{ 18 | Create a versions cell for \code{\link{make_jira_issue}}. This cell represents 19 | the 'Affects Version/s' label in JIRA 20 | } 21 | \keyword{internal} 22 | -------------------------------------------------------------------------------- /man/example_jira_two_issues.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/example.R 3 | \name{example_jira_two_issues} 4 | \alias{example_jira_two_issues} 5 | \title{Example JIRA Issue Tracker No Comments} 6 | \usage{ 7 | example_jira_two_issues(folder_path, folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path where the folder will be created} 11 | 12 | \item{folder_name}{The name of the folder} 13 | } 14 | \value{ 15 | the JSON folder path of the newly created issue issue tracker 16 | } 17 | \description{ 18 | Create fake JIRA issue tracker with 2 issues, no comments 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /man/is_same_identity.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/identity.R 3 | \name{is_same_identity} 4 | \alias{is_same_identity} 5 | \title{Compares identities in a list by index} 6 | \usage{ 7 | is_same_identity(i, j, parsed_name_email, use_name_only = FALSE) 8 | } 9 | \arguments{ 10 | \item{i}{Index of the first identity} 11 | 12 | \item{j}{Index of the second identity} 13 | 14 | \item{parsed_name_email}{The list of name and email identities} 15 | 16 | \item{use_name_only}{Uses only the name field (i.e. disregard the e-mail field)} 17 | } 18 | \description{ 19 | Compares identities in a list by index 20 | } 21 | -------------------------------------------------------------------------------- /man/create_issue_type.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_issue_type} 4 | \alias{create_issue_type} 5 | \title{Create Issue Type} 6 | \usage{ 7 | create_issue_type(jira_domain_url, issue_type) 8 | } 9 | \arguments{ 10 | \item{jira_domain_url}{URL of JIRA domain} 11 | 12 | \item{issue_type}{name of the issue type (e.g. New Feature)} 13 | } 14 | \value{ 15 | A list named 'issue_type' that represents the issue type of the JIRA issue 16 | } 17 | \description{ 18 | Create issue type cell for \code{\link{make_jira_issue}}. This represents the 'Type' 19 | label in JIRA 20 | } 21 | \keyword{internal} 22 | -------------------------------------------------------------------------------- /man/git_checkout.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{git_checkout} 4 | \alias{git_checkout} 5 | \title{Performs a git checkout on specified repo} 6 | \usage{ 7 | git_checkout(commit_hash, git_repo_path, new_branch = FALSE) 8 | } 9 | \arguments{ 10 | \item{commit_hash}{The commit hash the repo should be checkout} 11 | 12 | \item{git_repo_path}{The git repo path} 13 | 14 | \item{new_branch}{Boolean indicating if we want to create a new branch (default is FALSE)} 15 | } 16 | \value{ 17 | Any error message generated by git 18 | } 19 | \description{ 20 | Performs a git checkout on specified repo 21 | } 22 | -------------------------------------------------------------------------------- /man/create_issue_comments.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_issue_comments} 4 | \alias{create_issue_comments} 5 | \title{Create Issue Comments} 6 | \usage{ 7 | create_issue_comments(comments) 8 | } 9 | \arguments{ 10 | \item{comments}{A character list containing the comment body.} 11 | } 12 | \value{ 13 | A list named 'comments_list' that has a list of comments 14 | } 15 | \description{ 16 | Create issue comments cell for \code{\link{make_jira_issue}}. 17 | Other parameters associated to the comments, such as the author 18 | and update author are currently hardcoded. 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /man/example_jira_issue_comments.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/example.R 3 | \name{example_jira_issue_comments} 4 | \alias{example_jira_issue_comments} 5 | \title{Example Jira Issue Tracker With Comments} 6 | \usage{ 7 | example_jira_issue_comments(folder_path, folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path where the folder will be created} 11 | 12 | \item{folder_name}{The name of the folder} 13 | } 14 | \value{ 15 | the JSON folder path of the newly created issue issue tracker 16 | } 17 | \description{ 18 | Create fake jira issue tracker with one issue with 2 comments 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /man/create_fix_versions.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_fix_versions} 4 | \alias{create_fix_versions} 5 | \title{Create Fix Version} 6 | \usage{ 7 | create_fix_versions(jira_domain_url, fix_versions) 8 | } 9 | \arguments{ 10 | \item{jira_domain_url}{URL of JIRA domain} 11 | 12 | \item{fix_versions}{list of fixed versions for the issue} 13 | } 14 | \value{ 15 | A list named 'fixVersions' with a list of fixed versions and version information 16 | } 17 | \description{ 18 | Create a fixVersions cell for \code{\link{make_jira_issue}}. This represents the 19 | 'Fixed Version/s' label in JIRA 20 | } 21 | \keyword{internal} 22 | -------------------------------------------------------------------------------- /man/make_jira_issue_tracker.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{make_jira_issue_tracker} 4 | \alias{make_jira_issue_tracker} 5 | \title{Make Jira Issue Tracker} 6 | \usage{ 7 | make_jira_issue_tracker(issues, save_filepath) 8 | } 9 | \arguments{ 10 | \item{issues}{list of issues obtained from cell for \code{\link{make_jira_issue}}.} 11 | 12 | \item{save_filepath}{the filepath where the JSON should be saved, including 13 | file name and extension.} 14 | } 15 | \value{ 16 | The `save_filepath` specified. 17 | } 18 | \description{ 19 | Create a full JIRA Issue Tracker with multiple issues using 20 | \code{\link{make_jira_issue}}. 21 | } 22 | -------------------------------------------------------------------------------- /man/transform_r_dependencies_to_network.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{transform_r_dependencies_to_network} 4 | \alias{transform_r_dependencies_to_network} 5 | \title{Transform parsed R dependencies into a graph} 6 | \usage{ 7 | transform_r_dependencies_to_network( 8 | r_dependencies_edgelist, 9 | dependency_type = c("function", "file") 10 | ) 11 | } 12 | \arguments{ 13 | \item{r_dependencies_edgelist}{A parsed R folder by \code{\link{parse_r_dependencies}}.} 14 | 15 | \item{dependency_type}{The type of dependency to be parsed: Function or File} 16 | } 17 | \description{ 18 | Transform parsed R dependencies into a graph 19 | } 20 | -------------------------------------------------------------------------------- /man/example_empty_repo.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/example.R 3 | \name{example_empty_repo} 4 | \alias{example_empty_repo} 5 | \title{Example Empty Repo} 6 | \usage{ 7 | example_empty_repo(folder_path, folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path where the folder will be created} 11 | 12 | \item{folder_name}{The name of the folder} 13 | } 14 | \value{ 15 | git_repo_path of newly created empty repo 16 | } 17 | \description{ 18 | Creates an empty git repo named "empty_repo". 19 | } 20 | \details{ 21 | Useful to test the behavior of git_log exporter and parse_gitlog 22 | on repositories with no commits. 23 | } 24 | \keyword{internal} 25 | -------------------------------------------------------------------------------- /man/github_api_project_issue.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_project_issue} 4 | \alias{github_api_project_issue} 5 | \title{Download Project Issues} 6 | \usage{ 7 | github_api_project_issue(owner, repo, token) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{token}{Your GitHub API token} 15 | } 16 | \description{ 17 | Download Issues from "GET /repos/{owner}/{repo}/issues" endpoint. 18 | } 19 | \references{ 20 | For details, see \url{https://docs.github.com/en/rest/reference/issues#list-repository-issues}. 21 | } 22 | -------------------------------------------------------------------------------- /man/example_different_branches.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/example.R 3 | \name{example_different_branches} 4 | \alias{example_different_branches} 5 | \title{Example Commit Different Branches} 6 | \usage{ 7 | example_different_branches(folder_path, folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path where the folder will be created} 11 | 12 | \item{folder_name}{The name of the folder} 13 | } 14 | \value{ 15 | git_repo_path of newly created empty repo 16 | } 17 | \description{ 18 | One commit in two different with branches with 1 file each. 19 | } 20 | \details{ 21 | Useful to check parser includes commits from different branches. 22 | } 23 | \keyword{internal} 24 | -------------------------------------------------------------------------------- /man/git_commit.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{git_commit} 4 | \alias{git_commit} 5 | \title{Git Commit} 6 | \usage{ 7 | git_commit(git_repo, folder_path, commit_msg, author, email) 8 | } 9 | \arguments{ 10 | \item{git_repo}{The git repo path.} 11 | 12 | \item{folder_path}{The worktree path.} 13 | 14 | \item{commit_msg}{The commit associated with the commit.} 15 | 16 | \item{author}{The author associated with the commit.} 17 | 18 | \item{email}{The email of the author associated with the commit.} 19 | } 20 | \value{ 21 | The path to the sample .git file. 22 | } 23 | \description{ 24 | Executes the `git commit` command on the target 25 | git repository. 26 | } 27 | -------------------------------------------------------------------------------- /man/github_parse_project_pull_request_reviews.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_parse_project_pull_request_reviews} 4 | \alias{github_parse_project_pull_request_reviews} 5 | \title{Parse Pull Requests' Reviews JSON to Table} 6 | \usage{ 7 | github_parse_project_pull_request_reviews(api_responses) 8 | } 9 | \arguments{ 10 | \item{api_responses}{API response obtained from \code{\link{github_api_project_pull_request_review_refresh}}.} 11 | } 12 | \description{ 13 | Parse pull request data obtained by \code{\link{github_api_project_pull_request_review_refresh}}. 14 | } 15 | \details{ 16 | Note not all columns available in the downloaded json are parsed. 17 | } 18 | -------------------------------------------------------------------------------- /man/git_mv.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{git_mv} 4 | \alias{git_mv} 5 | \title{Git Mv} 6 | \usage{ 7 | git_mv(git_repo, folder_path, old_name, new_name) 8 | } 9 | \arguments{ 10 | \item{git_repo}{The git repo path} 11 | 12 | \item{folder_path}{The worktree path} 13 | 14 | \item{old_name}{The name of the file/folder that you are going to change or move} 15 | 16 | \item{new_name}{The new name of the file/folder} 17 | } 18 | \description{ 19 | Performs a `git mv`, which serves to 20 | rename a folder or file. Specifically, 21 | The `git mv` command combines `mv` and `git add` 22 | command for the new folder/file name and the old 23 | folder/file name in one command. 24 | } 25 | -------------------------------------------------------------------------------- /man/github_api_project_pull_request.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_project_pull_request} 4 | \alias{github_api_project_pull_request} 5 | \title{Download Project Pull Requests} 6 | \usage{ 7 | github_api_project_pull_request(owner, repo, token) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{token}{Your GitHub API token} 15 | } 16 | \description{ 17 | Download Pull Requests from "GET /repos/{owner}/{repo}/pulls" endpoint. 18 | } 19 | \references{ 20 | For details, see \url{https://docs.github.com/en/rest/reference/pulls#list-pull-requests}. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_window_size.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_window_size} 4 | \alias{get_window_size} 5 | \title{Returns the size of a window for analysis.} 6 | \usage{ 7 | get_window_size(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The size of a window for analysis. 14 | } 15 | \description{ 16 | This function returns the size of a window, that is 17 | specified in the input parameter `config_file`. The input, `config_file` 18 | must be a parsed configuration file. The function will inform the user if 19 | the window size exists in the parsed configuration file, `config_file`. 20 | } 21 | -------------------------------------------------------------------------------- /man/example_renamed_file.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/example.R 3 | \name{example_renamed_file} 4 | \alias{example_renamed_file} 5 | \title{Example Renamed File Repo} 6 | \usage{ 7 | example_renamed_file(folder_path, folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path where the folder will be created} 11 | 12 | \item{folder_name}{The name of the folder} 13 | } 14 | \value{ 15 | git_repo of newly created empty repo 16 | } 17 | \description{ 18 | A repo with 3 commits. The first adds hello.R, , the second 19 | renames the file to hi.R. and the third adds a second file bye.R. 20 | } 21 | \details{ 22 | This example can be used to test how parsers trace file renaming. 23 | } 24 | \keyword{internal} 25 | -------------------------------------------------------------------------------- /man/github_parse_project_pull_request.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_parse_project_pull_request} 4 | \alias{github_parse_project_pull_request} 5 | \title{Parse Pull Requests JSON to Table} 6 | \usage{ 7 | github_parse_project_pull_request(api_responses) 8 | } 9 | \arguments{ 10 | \item{api_responses}{API response obtained from \code{\link{github_api_project_pull_request_refresh}}.} 11 | } 12 | \description{ 13 | Parses pull request description (first comment) downloaded by \code{\link{github_api_project_pull_request_refresh}}. 14 | This function serves as an alias to \code{\link{github_parse_search_issues_refresh}}. 15 | Note not all columns available in the downloaded json are parsed. 16 | } 17 | -------------------------------------------------------------------------------- /tests/testthat/test-github.R: -------------------------------------------------------------------------------- 1 | test_that("github issue without description can be parsed as NA", { 2 | 3 | # Generate synthetic GitHub issue 4 | github_json_path <- example_github_issue_no_description("/tmp", "github_issue_no_desc") 5 | 6 | # Read JSON 7 | all_issue <- lapply(list.files(github_json_path, 8 | full.names = TRUE), jsonlite::read_json) 9 | 10 | # Bind as data.table 11 | all_issue <- lapply(all_issue, 12 | github_parse_project_issue) 13 | 14 | all_issue <- rbindlist(all_issue,fill=TRUE) 15 | 16 | expect_true(is.na(all_issue$body[1])) 17 | 18 | if (dir.exists(file.path("/tmp", "github_issue_no_desc"))) { 19 | io_delete_folder("/tmp", "github_issue_no_desc") 20 | } 21 | }) 22 | -------------------------------------------------------------------------------- /man/example_large_sized_commits.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/example.R 3 | \name{example_large_sized_commits} 4 | \alias{example_large_sized_commits} 5 | \title{Example Different Files Commit} 6 | \usage{ 7 | example_large_sized_commits(folder_path, folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path where the folder will be created} 11 | 12 | \item{folder_name}{The name of the folder} 13 | } 14 | \value{ 15 | git_repo_path of newly created empty repo 16 | } 17 | \description{ 18 | Repo with 2 commits. The first commit contains 5 files modified, and 19 | second commit contains only one file modified. 20 | } 21 | \details{ 22 | Useful to test unbalanced sized commits and filters. 23 | } 24 | \keyword{internal} 25 | -------------------------------------------------------------------------------- /man/dv8_gitlog_to_gitnumstat.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dv8.R 3 | \name{dv8_gitlog_to_gitnumstat} 4 | \alias{dv8_gitlog_to_gitnumstat} 5 | \title{Transforms a git log to a git numstat file.} 6 | \usage{ 7 | dv8_gitlog_to_gitnumstat(git_repo_path, git_numstat_path) 8 | } 9 | \arguments{ 10 | \item{git_repo_path}{path to local project git repository} 11 | 12 | \item{git_numstat_path}{path to save gitlog numstat} 13 | } 14 | \value{ 15 | the git_numstat_path 16 | } 17 | \description{ 18 | Comverts a git folder \*.git, to a gitlog numstat file \*.txt 19 | } 20 | \seealso{ 21 | \code{\link{dv8_gitnumstat_to_hdsmb}} to covert to `*-hdsm.dv8-dsm` and 22 | \code{\link{dv8_hdsmb_sdsmb_to_mdsmb}} to merge DSMs into `*-merge.dv8-dsm`. 23 | } 24 | -------------------------------------------------------------------------------- /man/github_api_project_contributors.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_project_contributors} 4 | \alias{github_api_project_contributors} 5 | \title{Download Project Contributors} 6 | \usage{ 7 | github_api_project_contributors(owner, repo, token) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{token}{Your GitHub API token} 15 | } 16 | \description{ 17 | Download project contributors from GET /repos/{owner}/{repo}/contributors" endpoint. 18 | } 19 | \references{ 20 | For more details see \url{https://docs.github.com/en/free-pro-team@latest/rest/reference/repos#list-repository-contributors}. 21 | } 22 | -------------------------------------------------------------------------------- /man/query_src_text_namespace.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{query_src_text_namespace} 4 | \alias{query_src_text_namespace} 5 | \title{Query srcML Namespace} 6 | \usage{ 7 | query_src_text_namespace(srcml_path, srcml_filepath) 8 | } 9 | \arguments{ 10 | \item{srcml_path}{The path to srcML binary} 11 | 12 | \item{srcml_filepath}{The path to the srcML file to be queried 13 | (see \code{\link{annotate_src_text}}).} 14 | } 15 | \value{ 16 | A data.table containing Namespace. 17 | } 18 | \description{ 19 | This is a convenience function to parse namespace names out of a project. 20 | \url{https://www.srcml.org/documentation.html}. 21 | } 22 | \references{ 23 | For details, see \url{https://www.srcml.org/documentation.html}. 24 | } 25 | -------------------------------------------------------------------------------- /man/example_function_in_files.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/example.R 3 | \name{example_function_in_files} 4 | \alias{example_function_in_files} 5 | \title{Example Commit of R Function Declarations} 6 | \usage{ 7 | example_function_in_files(folder_path, folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path where the folder will be created} 11 | 12 | \item{folder_name}{The name of the folder} 13 | } 14 | \value{ 15 | git_repo_path of newly created empty repo 16 | } 17 | \description{ 18 | One commit that defines the function by Dev 1, then 19 | one commit that modifies the same function by Dev 2. 20 | } 21 | \details{ 22 | Useful to check how git log entity behaves with files it should 23 | recognize. 24 | } 25 | \keyword{internal} 26 | -------------------------------------------------------------------------------- /man/get_jira_keys.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_jira_keys} 4 | \alias{get_jira_keys} 5 | \title{Returns the list of Jira issue tracker project keys.} 6 | \usage{ 7 | get_jira_keys(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The list of Jira issue tracker project keys. 14 | } 15 | \description{ 16 | This function returns the list of Jira issue tracker project 17 | keys, that is specified in the input parameter `config_file`. The input, 18 | `config_file` must be a parsed configuration file. The function will inform 19 | the user if the project keys exist in the parsed configuration 20 | file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /tests/testthat/testdata/tools.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/chaoss/grimoirelab-perceval 2 | perceval: /Library/Frameworks/Python.framework/Versions/3.12/bin/perceval 3 | # https://github.com/multilang-depends/depends 4 | depends: ~/depends-0.9.6/depends.jar 5 | # https://github.com/tsantalis/RefactoringMiner#running-refactoringminer-from-the-command-line 6 | refactoring_miner: ~/RefactoringMiner-1.0/bin/RefactoringMiner 7 | # https://github.com/boyter/scc 8 | scc: ~/scc/scc 9 | # universal-ctags 10 | utags: /usr/local/Cellar/universal-ctags/HEAD-62f0144/bin/ctags 11 | # https://archdia.com/ 12 | dv8: /Applications/DV84/bin/dv8-console 13 | # OSLOM: http://oslom.org/ 14 | oslom_dir: ~/OSLOM2/oslom_dir 15 | oslom_undir: ~/OSLOM2/oslom_undir 16 | # Temporary folder path for intermediate files 17 | tmp: /tmp 18 | -------------------------------------------------------------------------------- /man/example_mailing_list_two_threads.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/example.R 3 | \name{example_mailing_list_two_threads} 4 | \alias{example_mailing_list_two_threads} 5 | \title{Two Thread and Three Replies Mailing List} 6 | \usage{ 7 | example_mailing_list_two_threads(folder_path, folder_name, file_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The folder path to create the example} 11 | 12 | \item{folder_name}{Name of the example folder} 13 | 14 | \item{file_name}{Name of the file where .mbox will be stored} 15 | } 16 | \value{ 17 | Folder path of .mbox sample file that was created 18 | } 19 | \description{ 20 | Create a mailing list of two e-mail threads, with 21 | two and one reply respectively by two developers. 22 | } 23 | \keyword{internal} 24 | -------------------------------------------------------------------------------- /man/get_topics.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_topics} 4 | \alias{get_topics} 5 | \title{Returns the list of topics and keywords for analysis.} 6 | \usage{ 7 | get_topics(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The list of keywords and topics for analysis. 14 | } 15 | \description{ 16 | This function returns the list of keywords and topics for 17 | analysis, that is specified in the input parameter `config_file`. The 18 | input, `config_file` must be a parsed configuration file. The function will 19 | inform the user if the list of keywords and topics exists in the parsed 20 | configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/example_jira_issue_components.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/example.R 3 | \name{example_jira_issue_components} 4 | \alias{example_jira_issue_components} 5 | \title{Create one No-Comment Issue with Two Components} 6 | \usage{ 7 | example_jira_issue_components(folder_path, folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path where the folder will be created} 11 | 12 | \item{folder_name}{The name of the folder} 13 | } 14 | \value{ 15 | the JSON folder path of the newly created issue issue tracker 16 | } 17 | \description{ 18 | This example can be used to evaluate the parser does not replicate 19 | new components on new issues, which would severely bias metrics 20 | associated to issues such as bugs (see #244). 21 | } 22 | \keyword{internal} 23 | -------------------------------------------------------------------------------- /man/github_api_pull_request.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_pull_request} 4 | \alias{github_api_pull_request} 5 | \title{Download Specific Pull Requests} 6 | \usage{ 7 | github_api_pull_request(owner, repo, pull_number, token) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{pull_number}{The number that identifies the pull request.} 15 | 16 | \item{token}{Your GitHub API token} 17 | } 18 | \description{ 19 | Download Pull Requests from "GET /repos/{owner}/{repo}/pulls/{pull_number}" endpoint. 20 | } 21 | \references{ 22 | For details, see \url{https://docs.github.com/en/rest/reference/pulls#list-pull-requests}. 23 | } 24 | -------------------------------------------------------------------------------- /man/create_parent.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_parent} 4 | \alias{create_parent} 5 | \title{Create Parent} 6 | \usage{ 7 | create_parent(jira_domain_url, issue_key, status, priority, issue_type) 8 | } 9 | \arguments{ 10 | \item{jira_domain_url}{URL of JIRA domain} 11 | 12 | \item{status}{status of issue for development} 13 | 14 | \item{priority}{the name of the priority of the issue} 15 | 16 | \item{issue_type}{type of JIRA issue} 17 | } 18 | \value{ 19 | A list named 'parent' that contains a parent issue and it's fields 20 | } 21 | \description{ 22 | Create a parent cell for \code{\link{make_jira_issue}}. Currently, the parent has the same 23 | issue_key, status, priority, and issue_type as the base issue 24 | } 25 | \keyword{internal} 26 | -------------------------------------------------------------------------------- /man/get_github_keys.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_keys} 4 | \alias{get_github_keys} 5 | \title{Returns the list of GitHub issue tracker project keys.} 6 | \usage{ 7 | get_github_keys(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The list of GitHub issue tracker project keys. 14 | } 15 | \description{ 16 | This function returns the list of GitHub issue tracker project 17 | keys, that is specified in the input parameter `config_file`. The input, 18 | `config_file` must be a parsed configuration file. The function will inform 19 | the user if the project keys exist in the parsed configuration 20 | file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/query_src_text_class_names.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{query_src_text_class_names} 4 | \alias{query_src_text_class_names} 5 | \title{Query srcML Class Names} 6 | \usage{ 7 | query_src_text_class_names(srcml_path, srcml_filepath) 8 | } 9 | \arguments{ 10 | \item{srcml_path}{The path to srcML binary} 11 | 12 | \item{srcml_filepath}{The path to the srcML file to be queried 13 | (see \code{\link{annotate_src_text}}).} 14 | } 15 | \value{ 16 | A data.table containing filepath and class name. 17 | } 18 | \description{ 19 | This is a convenience function to parse class names out of a project. 20 | \url{https://www.srcml.org/documentation.html}. 21 | } 22 | \references{ 23 | For details, see \url{https://www.srcml.org/documentation.html}. 24 | } 25 | -------------------------------------------------------------------------------- /man/dv8_mdsmb_to_decoupling_level.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dv8.R 3 | \name{dv8_mdsmb_to_decoupling_level} 4 | \alias{dv8_mdsmb_to_decoupling_level} 5 | \title{Computes the Decoupling Level from a mdsm binary file} 6 | \usage{ 7 | dv8_mdsmb_to_decoupling_level(dv8_path, mdsmb_path, dl_path) 8 | } 9 | \arguments{ 10 | \item{dv8_path}{path to DV8 binary} 11 | 12 | \item{mdsmb_path}{path to mdsm binary file created by \code{\link{dv8_gitnumstat_to_hdsmb}}} 13 | 14 | \item{dl_path}{name of output file} 15 | } 16 | \value{ 17 | the dl_path 18 | } 19 | \description{ 20 | Creates a \*.json file with decoupling metrics from \*.dv8-dsm file 21 | } 22 | \seealso{ 23 | \code{\link{parse_dv8_metrics_decoupling_level}} to parse decoupling level JSON file `-dl.json` 24 | } 25 | -------------------------------------------------------------------------------- /man/example_notebook_alternating_function_in_files.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/example.R 3 | \name{example_notebook_alternating_function_in_files} 4 | \alias{example_notebook_alternating_function_in_files} 5 | \title{Example Alternating Undecided Developers} 6 | \usage{ 7 | example_notebook_alternating_function_in_files(folder_path, folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path where the folder will be created} 11 | 12 | \item{folder_name}{The name of the folder} 13 | } 14 | \value{ 15 | git_repo_path of newly created empty repo 16 | } 17 | \description{ 18 | Developers keep alternating the lines changes. 19 | } 20 | \details{ 21 | Useful to check how git log entity behaves with files it should 22 | recognize. 23 | } 24 | \keyword{internal} 25 | -------------------------------------------------------------------------------- /man/parse_git_blame.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{parse_git_blame} 4 | \alias{parse_git_blame} 5 | \title{Parse the git blame message of a file} 6 | \usage{ 7 | parse_git_blame(git_repo_path, commit_hash, file_path) 8 | } 9 | \arguments{ 10 | \item{git_repo_path}{git_repo_path path to git repo (ends in .git)} 11 | 12 | \item{commit_hash}{a commit hash which indicates the specific version of the file (the commit must exist in `git_log`)} 13 | 14 | \item{file_path}{the filepath to the file which will be blamed} 15 | } 16 | \value{ 17 | a data.table which contains blame commits for each line of a file and metadata of the commits. 18 | } 19 | \description{ 20 | Create a data.table with the blame data of each line of a file in a specific commit. 21 | } 22 | -------------------------------------------------------------------------------- /man/parse_config.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{parse_config} 4 | \alias{parse_config} 5 | \title{Returns the parsed configuration file (.yml).} 6 | \usage{ 7 | parse_config(config_path) 8 | } 9 | \arguments{ 10 | \item{config_path}{The path of the config file from the kaiaulu directory (e.g. "conf/kaiaulu.yml").} 11 | } 12 | \value{ 13 | The parsed config file whose path is specified by `config_path`. 14 | } 15 | \description{ 16 | The input file is expected to be in the .yml format. 17 | The function returns a parsed version of the input .yml file, and it will 18 | inform the user if the input .yml file path does not exist. The contents 19 | of the input .yml file may contain machine-dependent paths that may need to 20 | be modified by the user. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_mbox_key_indexes.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_mbox_key_indexes} 4 | \alias{get_mbox_key_indexes} 5 | \title{Returns the list of mailing list mod mbox project keys.} 6 | \usage{ 7 | get_mbox_key_indexes(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The list of mod mbox mailing list keys. 14 | } 15 | \description{ 16 | This function returns the list of mailing list mod mbox project 17 | keys, that is specified in the input parameter `config_file`. The input, 18 | `config_file` must be a parsed configuration file. The function will inform 19 | the user if the project keys exist in the parsed configuration 20 | file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/github_api_pr_files.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_pr_files} 4 | \alias{github_api_pr_files} 5 | \title{Download Pull Request Files} 6 | \usage{ 7 | github_api_pr_files(owner, repo, pull_number, token) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{pull_number}{The number that identifies the pull request.} 15 | 16 | \item{token}{Your GitHub API token} 17 | } 18 | \description{ 19 | Download Pull Request Files from "GET /repos/{owner}/{repo}/pulls/{pull_number}/files" endpoint. 20 | } 21 | \references{ 22 | For details, see \url{https://docs.github.com/en/free-pro-team@latest/rest/reference/repos#list-files-on-a-pull-request}. 23 | } 24 | -------------------------------------------------------------------------------- /man/get_date_from_commit_hash.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/interval.R 3 | \name{get_date_from_commit_hash} 4 | \alias{get_date_from_commit_hash} 5 | \title{Get datetime from commit hash in a git log} 6 | \usage{ 7 | get_date_from_commit_hash(git_log, p_commit_hash) 8 | } 9 | \arguments{ 10 | \item{git_log}{a data.table where the key is commit+file} 11 | 12 | \item{p_commit_hash}{a string character with the commit hash we want to obtain the datetime from 13 | commit interval on the form `commitsha1-commitsha2`} 14 | } 15 | \value{ 16 | a numeric vector of `metric_function` values for each commit interval specified in `dt_range` 17 | } 18 | \description{ 19 | Locates the commit hash in `git_log` and obtains the timestamp. Assumes `git_log` contains a `data.AuthorDate`` 20 | column. 21 | } 22 | -------------------------------------------------------------------------------- /man/git_delete_sample_log.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{git_delete_sample_log} 4 | \alias{git_delete_sample_log} 5 | \title{Removes sample folder and git log} 6 | \usage{ 7 | git_delete_sample_log(folder_path = "/tmp") 8 | } 9 | \arguments{ 10 | \item{folder_path}{An optional path to where the sample .git should be created.} 11 | } 12 | \value{ 13 | The path to the sample .git file. 14 | } 15 | \description{ 16 | This is a TearDown helper function for Kaiaulu unit tests 17 | that manipulates git logs. 18 | } 19 | \details{ 20 | A folder kaiaulu_sample is assumed to have been created by \code{\link{git_create_sample_log}}, and is deleted by this function. 21 | } 22 | \seealso{ 23 | Other unittest: 24 | \code{\link{git_create_sample_log}()} 25 | } 26 | \concept{unittest} 27 | -------------------------------------------------------------------------------- /man/github_api_pr_commits.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_pr_commits} 4 | \alias{github_api_pr_commits} 5 | \title{Download Pull Request Commits} 6 | \usage{ 7 | github_api_pr_commits(owner, repo, pull_number, token) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{pull_number}{The number that identifies the pull request.} 15 | 16 | \item{token}{Your GitHub API token} 17 | } 18 | \description{ 19 | Download Pull Request Commits from "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits" endpoint. 20 | } 21 | \references{ 22 | For details, see \url{https://docs.github.com/en/rest/pulls/pulls?apiVersion=2022-11-28#list-commits-on-a-pull-request}. 23 | } 24 | -------------------------------------------------------------------------------- /man/example_notebook_function_in_code_blocks.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/example.R 3 | \name{example_notebook_function_in_code_blocks} 4 | \alias{example_notebook_function_in_code_blocks} 5 | \title{Example Commit of R Notebooks} 6 | \usage{ 7 | example_notebook_function_in_code_blocks(folder_path, folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path where the folder will be created} 11 | 12 | \item{folder_name}{The name of the folder} 13 | } 14 | \value{ 15 | git_repo_path of newly created empty repo 16 | } 17 | \description{ 18 | One commit that defines the function by Dev 1, then 19 | one commit that modifies the same function by Dev 2. 20 | } 21 | \details{ 22 | Useful to check how git log entity behaves with files it does 23 | not recognize. 24 | } 25 | \keyword{internal} 26 | -------------------------------------------------------------------------------- /man/get_git_branches.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_git_branches} 4 | \alias{get_git_branches} 5 | \title{Returns the list of git branches used for analysis in the current project.} 6 | \usage{ 7 | get_git_branches(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The list of git branches. 14 | } 15 | \description{ 16 | This function returns a list of the git branches used for 17 | analysis in the current project specified in the input parameter 18 | `config_file`. The input, `config_file` must be a parsed configuration file. 19 | The function will inform the user if the list of branches to be analyzed 20 | exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/make_mbox_mailing_list.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/mail.R 3 | \name{make_mbox_mailing_list} 4 | \alias{make_mbox_mailing_list} 5 | \title{Takes in mbox replies and creates a .mbox file} 6 | \usage{ 7 | make_mbox_mailing_list(replies, folder_path = "/tmp", file_name) 8 | } 9 | \arguments{ 10 | \item{replies}{An array of replies that have been created with \code{\link{make_mbox_reply}}} 11 | 12 | \item{folder_path}{Folder path for the .mbox file being created. Defaulted at /tmp} 13 | 14 | \item{file_name}{Name of the file that will store the .mbox file} 15 | } 16 | \value{ 17 | the path of the .mbox file that was created 18 | } 19 | \description{ 20 | Takes a list of mbox replies generated with create_fake_mbox_replies function and compiles them all into a single 21 | fake .mbox file 22 | } 23 | -------------------------------------------------------------------------------- /man/create_resolution.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/jira.R 3 | \name{create_resolution} 4 | \alias{create_resolution} 5 | \title{Create Resolution} 6 | \usage{ 7 | create_resolution( 8 | self_url = "https://domain.org/jira/rest/api/2/resolution/1", 9 | id = "1", 10 | description = "A fix for this issue is checked into the tree and tested.", 11 | name = "Fixed" 12 | ) 13 | } 14 | \arguments{ 15 | \item{self_url}{URL of API endpoint} 16 | 17 | \item{id}{ID associated with resolution} 18 | 19 | \item{description}{Description of resolution} 20 | 21 | \item{name}{Name of Resolution} 22 | } 23 | \value{ 24 | A list named 'resolution' which contains the resolution's information 25 | } 26 | \description{ 27 | Creates a resolution cell for \code{\link{make_jira_issue}}. 28 | } 29 | \keyword{internal} 30 | -------------------------------------------------------------------------------- /man/get_file_extensions.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_file_extensions} 4 | \alias{get_file_extensions} 5 | \title{Returns the list of file extensions used for filtering files to keep.} 6 | \usage{ 7 | get_file_extensions(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The list of file extensions to keep. 14 | } 15 | \description{ 16 | This function returns the list of file extensions that will be 17 | used for filtering files specified in the input parameter `config_file`. The 18 | input, `config_file` must be a parsed configuration file. The function will 19 | inform the user if the list of file extensions exists in the parsed 20 | configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_uctags_line_types.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_uctags_line_types} 4 | \alias{get_uctags_line_types} 5 | \title{Returns the types to keep to to be considered for analysis.} 6 | \usage{ 7 | get_uctags_line_types(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The lines type to keep for analysis. 14 | } 15 | \description{ 16 | This function returns the types of file-file dependencies that 17 | should be considered, that are specified in the input parameter 18 | `config_file`. The input, `config_file` must be a parsed configuration file. 19 | The function will inform the user if the lines type to keep exists in the 20 | parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/model_directed_graph.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/graph.R 3 | \name{model_directed_graph} 4 | \alias{model_directed_graph} 5 | \title{Create a directed graph model} 6 | \usage{ 7 | model_directed_graph(edgelist, is_bipartite, color, aggregate_duplicate = TRUE) 8 | } 9 | \arguments{ 10 | \item{edgelist}{a 2-column data.table containing named columns 11 | `from` and `to` in any order.} 12 | 13 | \item{is_bipartite}{boolean specifying if network is bipartite: TRUE or FALSE} 14 | 15 | \item{color}{a character vector of length 1 or 2 specifying the hexacolor} 16 | 17 | \item{aggregate_duplicate}{If duplicated rows are encoutered, define a weight column which counts them} 18 | } 19 | \value{ 20 | a named list list(nodes,edgelist). 21 | } 22 | \description{ 23 | Create a directed graph model 24 | } 25 | -------------------------------------------------------------------------------- /man/get_enumeration_commits.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_enumeration_commits} 4 | \alias{get_enumeration_commits} 5 | \title{Returns the list of enumerated commit intervals for analysis.} 6 | \usage{ 7 | get_enumeration_commits(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The list of enumerated commit intervals. 14 | } 15 | \description{ 16 | This function returns a list of enumerated commit intervals, 17 | that is specified in the input parameter `config_file`. The input, 18 | `config_file` must be a parsed configuration file. The function will inform 19 | the user if the list of enumerated commit intervals exists in the parsed 20 | configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/github_api_project_issue_events.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_project_issue_events} 4 | \alias{github_api_project_issue_events} 5 | \title{Download Project Issue Events} 6 | \usage{ 7 | github_api_project_issue_events(owner, repo, token) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{token}{Your GitHub API token} 15 | } 16 | \description{ 17 | Download Issues from "GET /repos/{owner}/{repo}/issues/events" endpoint. 18 | } 19 | \references{ 20 | For details, see \url{https://docs.github.com/en/free-pro-team@latest/rest/reference/issues#events} 21 | and \url{https://docs.github.com/en/free-pro-team@latest/developers/webhooks-and-events/issue-event-types}. 22 | } 23 | -------------------------------------------------------------------------------- /man/example_github_issue_no_description.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/example.R 3 | \name{example_github_issue_no_description} 4 | \alias{example_github_issue_no_description} 5 | \title{Example GitHub Issue Without Description} 6 | \usage{ 7 | example_github_issue_no_description(folder_path = "/tmp", folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path where the folder will be created} 11 | 12 | \item{folder_name}{The name of the folder} 13 | } 14 | \value{ 15 | The JSON folder path of the newly created GitHub issue 16 | } 17 | \description{ 18 | This function creates a synthetic GitHub issue JSON with a missing description (`body = NULL`). 19 | The JSON is written to a temporary folder for testing how parsers handle GitHub issues 20 | with null description fields. 21 | } 22 | \keyword{internal} 23 | -------------------------------------------------------------------------------- /man/github_api_pr_merge.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_pr_merge} 4 | \alias{github_api_pr_merge} 5 | \title{Download Pull Request Merge Status} 6 | \usage{ 7 | github_api_pr_merge(owner, repo, pull_number, token) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{pull_number}{The number that identifies the pull request.} 15 | 16 | \item{token}{Your GitHub API token} 17 | } 18 | \description{ 19 | Download Pull Request Requested Reviewers from "GET /repos/{owner}/{repo}/pulls/{pull_number}/merge" endpoint. 20 | } 21 | \references{ 22 | For details, see \url{https://docs.github.com/en/free-pro-team@latest/rest/reference/repos#check-if-a-pull-request-has-been-merged}. 23 | } 24 | -------------------------------------------------------------------------------- /man/get_filter_commit_size.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_filter_commit_size} 4 | \alias{get_filter_commit_size} 5 | \title{Returns the commit size threshold to remove file paths.} 6 | \usage{ 7 | get_filter_commit_size(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The commit size to filter out. 14 | } 15 | \description{ 16 | This function returns an integer number that represents the 17 | threshold for a commit size to remove file paths specified in the input 18 | parameter `config_file`. The input, `config_file` must be a parsed 19 | configuration file. The function will inform the user if the commit size 20 | threshold exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_pattern4_filepath.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_pattern4_filepath} 4 | \alias{get_pattern4_filepath} 5 | \title{Returns the folder path for the output of the pattern4 analysis.} 6 | \usage{ 7 | get_pattern4_filepath(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The Pattern4 output folder path. 14 | } 15 | \description{ 16 | This function returns the folder path that contains the 17 | output of the pattern4 analysis for the project, that is specified in the 18 | input parameter `config_file`. The input, `config_file` must be a parsed 19 | configuration file. The function will inform the user if the folder path 20 | exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_pattern4_folder_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_pattern4_folder_path} 4 | \alias{get_pattern4_folder_path} 5 | \title{Returns the folder path for class pattern4 analysis.} 6 | \usage{ 7 | get_pattern4_folder_path(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The Pattern4 class folder path. 14 | } 15 | \description{ 16 | This function returns the folder path used to store the classes 17 | for the pattern4 analysis for the project, that is specified in the input 18 | parameter `config_file`. The input, `config_file` must be a parsed 19 | configuration file. The function will inform the user if the folder path 20 | exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_issue_id_regex.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_issue_id_regex} 4 | \alias{get_issue_id_regex} 5 | \title{Returns the issue Id regular expression for commit messages.} 6 | \usage{ 7 | get_issue_id_regex(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The commit message issue Id regular expression. 14 | } 15 | \description{ 16 | This function returns the issue Id regular expression for commit 17 | messages, that is specified in the input parameter `config_file`. The input, 18 | `config_file` must be a parsed configuration file. The function will inform 19 | the user if the issue Id regular expression for commit messages exists in the 20 | parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_srcml_filepath.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_srcml_filepath} 4 | \alias{get_srcml_filepath} 5 | \title{Returns the file path for the output of the srcML analysis for the project.} 6 | \usage{ 7 | get_srcml_filepath(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The output file path for srcML analysis. 14 | } 15 | \description{ 16 | This function returns the file path to be used to store the 17 | output of the srcML analysis for the project, that is specified in the 18 | input parameter `config_file`. The input, `config_file` must be a parsed 19 | configuration file. The function will inform the user if the file path 20 | exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_substring_filepath.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_substring_filepath} 4 | \alias{get_substring_filepath} 5 | \title{Returns the list of file extensions used for filtering files to remove.} 6 | \usage{ 7 | get_substring_filepath(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The list of file extensions to remove. 14 | } 15 | \description{ 16 | This function returns the list of file extensions that will be 17 | used for filtering files specified in the input parameter `config_file`. The 18 | input, `config_file` must be a parsed configuration file. The function will 19 | inform the user if the list of file extensions exists in the parsed 20 | configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_window_end_commit.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_window_end_commit} 4 | \alias{get_window_end_commit} 5 | \title{Returns the ending commit for a window for analysis.} 6 | \usage{ 7 | get_window_end_commit(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The end commit for a window for analysis. 14 | } 15 | \description{ 16 | This function returns the ending commit for a window of time 17 | for analysis (the time stamp is inferred from gitlog), that is specified in 18 | the input parameter `config_file`. The input, `config_file` must be a parsed 19 | configuration file. The function will inform the user if the end commit 20 | exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/github_parse_search_issues_refresh.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_parse_search_issues_refresh} 4 | \alias{github_parse_search_issues_refresh} 5 | \title{Parse Issues JSON from refresh to Table} 6 | \usage{ 7 | github_parse_search_issues_refresh(api_responses) 8 | } 9 | \arguments{ 10 | \item{api_responses}{API response obtained from github_api_* function.} 11 | } 12 | \description{ 13 | Note not all columns available in the downloaded json are parsed. This parser 14 | is adapted from \code{link{github_parse_project_issue}} to parse data 15 | from the refresh_issue folder. This data is downloaded from the Github API 16 | search endpoint and has a different level of nesting than the original data 17 | } 18 | \seealso{ 19 | \code{link{github_api_project_issue_refresh}} to refresh issue data 20 | } 21 | -------------------------------------------------------------------------------- /man/recolor_network_by_community.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/graph.R 3 | \name{recolor_network_by_community} 4 | \alias{recolor_network_by_community} 5 | \title{Re-color OSLOM Community IDs} 6 | \usage{ 7 | recolor_network_by_community(network, community) 8 | } 9 | \arguments{ 10 | \item{network}{A network returned by transform_to_network_* functions.} 11 | 12 | \item{community}{A community detection returned by \code{community_oslom}.} 13 | } 14 | \description{ 15 | Re-color a graph color column using the OSLOM communities 16 | } 17 | \references{ 18 | Finding statistically significant communities in networks 19 | A. Lancichinetti, F. Radicchi, J.J. Ramasco and 20 | S. Fortunato PLoS ONE 6, e18961 (2011). 21 | } 22 | \seealso{ 23 | Other community: 24 | \code{\link{community_oslom}()} 25 | } 26 | \concept{community} 27 | -------------------------------------------------------------------------------- /man/get_cveid_regex.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_cveid_regex} 4 | \alias{get_cveid_regex} 5 | \title{Returns the cve (Common Vulnerabilities and Exposures) regular expression 6 | for commit messages.} 7 | \usage{ 8 | get_cveid_regex(config_file) 9 | } 10 | \arguments{ 11 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 12 | } 13 | \value{ 14 | The commit message CVE regular expression. 15 | } 16 | \description{ 17 | This function returns the cve regular expression for commit 18 | messages, that is specified in the input parameter `config_file`. The input, 19 | `config_file` must be a parsed configuration file. The function will inform 20 | the user if the cve regular expression for commit messages exists in the 21 | parsed configuration file, `config_file`. 22 | } 23 | -------------------------------------------------------------------------------- /man/get_nvdfeed_folder_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_nvdfeed_folder_path} 4 | \alias{get_nvdfeed_folder_path} 5 | \title{Returns the local folder path that contains the nvd (National Vulnerability 6 | Database) feeds.} 7 | \usage{ 8 | get_nvdfeed_folder_path(config_file) 9 | } 10 | \arguments{ 11 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 12 | } 13 | \value{ 14 | The folder path with nvd feeds. 15 | } 16 | \description{ 17 | This function returns the local folder path for nvd feeds, 18 | that is specified in the input parameter `config_file`. The input, 19 | `config_file` must be a parsed configuration file. The function will inform 20 | the user if the local folder path for the nvd feeds exists in the parsed 21 | configuration file, `config_file`. 22 | } 23 | -------------------------------------------------------------------------------- /man/get_dv8_flaws_params.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_dv8_flaws_params} 4 | \alias{get_dv8_flaws_params} 5 | \title{Returns the list of architectural flaws thresholds for DV8 analysis.} 6 | \usage{ 7 | get_dv8_flaws_params(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The list of DV8 architectural flaws thresholds. 14 | } 15 | \description{ 16 | This function returns the list of architectural flaws thresholds 17 | for DV8 analysis, that is specified in the input parameter `config_file`. 18 | The input, `config_file` must be a parsed configuration file. The function 19 | will inform the user if the list of architectural flaws thresholds 20 | exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_window_start_commit.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_window_start_commit} 4 | \alias{get_window_start_commit} 5 | \title{Returns the starting commit for a window for analysis.} 6 | \usage{ 7 | get_window_start_commit(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The start commit for a window for analysis. 14 | } 15 | \description{ 16 | This function returns the starting commit for a window of time 17 | for analysis (the time stamp is inferred from gitlog), that is specified in 18 | the input parameter `config_file`. The input, `config_file` must be a parsed 19 | configuration file. The function will inform the user if the start commit 20 | exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_understand_output_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_understand_output_path} 4 | \alias{get_understand_output_path} 5 | \title{Returns the folder path for the output of the understand analysis.} 6 | \usage{ 7 | get_understand_output_path(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The understand output folder path. 14 | } 15 | \description{ 16 | This function returns the folder path that contains the 17 | output of the understand analysis for the project, that is specified in the 18 | input parameter `config_file`. The input, `config_file` must be a parsed 19 | configuration file. The function will inform the user if the folder path 20 | exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/github_api_pull_request_reviews.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_pull_request_reviews} 4 | \alias{github_api_pull_request_reviews} 5 | \title{Download Pull Request Reviews} 6 | \usage{ 7 | github_api_pull_request_reviews(owner, repo, pull_number, token) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{pull_number}{Required pull request number to make API request} 15 | 16 | \item{token}{Your GitHub API token} 17 | } 18 | \description{ 19 | Download Pull Request Reviews from "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews" endpoint. 20 | } 21 | \references{ 22 | For details, see \url{https://docs.github.com/en/free-pro-team@latest/rest/reference/repos#list-reviews-for-a-pull-request}. 23 | } 24 | -------------------------------------------------------------------------------- /man/get_understand_project_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_understand_project_path} 4 | \alias{get_understand_project_path} 5 | \title{Returns the folder path for the input of the understand analysis.} 6 | \usage{ 7 | get_understand_project_path(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The understand project folder path. 14 | } 15 | \description{ 16 | This function returns the folder path that contains the 17 | input of the understand analysis for the project, that is specified in the 18 | input parameter `config_file`. The input, `config_file` must be a parsed 19 | configuration file. The function will inform the user if the folder path 20 | exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_git_repo_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_git_repo_path} 4 | \alias{get_git_repo_path} 5 | \title{Returns the path to the .git of the project repository that is being analyzed.} 6 | \usage{ 7 | get_git_repo_path(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The local git repository path specified in `config_file`. 14 | } 15 | \description{ 16 | This function returns the specific path to the .git of the 17 | project repository that is being analyzed specified in the input parameter 18 | `config_file`. The input, `config_file` must be a parsed configuration file. 19 | The function will inform the user if the .git path of the project repository 20 | exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/github_api_pr_reviewers.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_pr_reviewers} 4 | \alias{github_api_pr_reviewers} 5 | \title{Download Pull Request Requested Reviewers} 6 | \usage{ 7 | github_api_pr_reviewers(owner, repo, pull_number, token) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{pull_number}{The number that identifies the pull request.} 15 | 16 | \item{token}{Your GitHub API token} 17 | } 18 | \description{ 19 | Download Pull Request Requested Reviewers from "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" endpoint. 20 | } 21 | \references{ 22 | For details, see \url{https://docs.github.com/en/free-pro-team@latest/rest/reference/repos#get-all-requested-reviewers-for-a-pull-request}. 23 | } 24 | -------------------------------------------------------------------------------- /man/git_create_sample_log.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{git_create_sample_log} 4 | \alias{git_create_sample_log} 5 | \title{Creates a sample git log with one commit} 6 | \usage{ 7 | git_create_sample_log(folder_path = "/tmp") 8 | } 9 | \arguments{ 10 | \item{folder_path}{An optional path to where the sample .git should be created.} 11 | } 12 | \value{ 13 | The path to the sample .git file. 14 | } 15 | \description{ 16 | This is a SetUp helper function for Kaiaulu unit tests 17 | that manipulates git logs. 18 | } 19 | \details{ 20 | A folder kaiaulu_sample is created in /tmp by default. A file, 21 | hello.R with a single print is then added to the folder. 22 | Git init is performed, the file is git add, and commit to 23 | the git log. 24 | } 25 | \seealso{ 26 | Other unittest: 27 | \code{\link{git_delete_sample_log}()} 28 | } 29 | \concept{unittest} 30 | -------------------------------------------------------------------------------- /man/get_understand_code_language.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_understand_code_language} 4 | \alias{get_understand_code_language} 5 | \title{Returns the understand code language for analysis.} 6 | \usage{ 7 | get_understand_code_language(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The code language for parsing with the understand tool. 14 | } 15 | \description{ 16 | This function returns the specified code language that should 17 | be used to parse dependencies with the understand tool, that 18 | is specified in the input parameter `config_file`. The input, `config_file` 19 | must be a parsed configuration file. The function will inform the user if 20 | the understand code language exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/annotate_src_text.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{annotate_src_text} 4 | \alias{annotate_src_text} 5 | \title{Creates srcML XML} 6 | \usage{ 7 | annotate_src_text(srcml_path, src_folder, srcml_filepath) 8 | } 9 | \arguments{ 10 | \item{srcml_path}{The path to srcML binary} 11 | 12 | \item{src_folder}{The path to the source code zip, folder or file of analysis} 13 | 14 | \item{srcml_filepath}{The path, filename and extension (.xml) of the output XML file.} 15 | } 16 | \value{ 17 | The path where the output xml was saved (i.e. srcml_filepath) 18 | } 19 | \description{ 20 | Parses src code zip, folder or file and outputs the annotated 21 | XML representation of the file. 22 | } 23 | \references{ 24 | For details, see \url{https://www.srcml.org/tutorials/creating-srcml.html}. 25 | } 26 | \seealso{ 27 | \code{\link{query_src_text}} to query the output file. 28 | } 29 | -------------------------------------------------------------------------------- /man/example_test_example_src_repo.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/example.R 3 | \name{example_test_example_src_repo} 4 | \alias{example_test_example_src_repo} 5 | \title{Example Unit Test and Examples Repository} 6 | \usage{ 7 | example_test_example_src_repo(folder_path, folder_name) 8 | } 9 | \arguments{ 10 | \item{folder_path}{The path where the folder will be created} 11 | 12 | \item{folder_name}{The name of the folder} 13 | } 14 | \value{ 15 | git_repo of newly created empty repo 16 | } 17 | \description{ 18 | A repository which contains test, example and 19 | source files. Can be useful to test filter functions. 20 | } 21 | \details{ 22 | The repo contains 3 commits, where 1 file has as prefix 23 | \_test.R, 1 file has the suffix example\_*.R, and 1 file 24 | hello.R. The second renames the file to hi.R. 25 | The third adds a second file bye.R 26 | } 27 | \keyword{internal} 28 | -------------------------------------------------------------------------------- /man/get_depends_code_language.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_depends_code_language} 4 | \alias{get_depends_code_language} 5 | \title{Returns the depends code language for analysis.} 6 | \usage{ 7 | get_depends_code_language(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The code language for parsing file-file static dependencies. 14 | } 15 | \description{ 16 | This function returns the specified code language that should 17 | be used to parse file-file static dependencies with the depends tool, that 18 | is specified in the input parameter `config_file`. The input, `config_file` 19 | must be a parsed configuration file. The function will inform the user if 20 | the depends code language exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_dv8_folder_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_dv8_folder_path} 4 | \alias{get_dv8_folder_path} 5 | \title{Returns the path to the folder used to store files for DV8 analysis.} 6 | \usage{ 7 | get_dv8_folder_path(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | The DV8 project folder path. 14 | } 15 | \description{ 16 | This function returns the path to the folder that will be 17 | used to store various intermediate files for DV8 analysis, that is specified 18 | in the input parameter `config_file`. The input, `config_file` must be a 19 | parsed configuration file. The function will inform the user if the path 20 | path to the folder for intermediate file storage for DV8 analysis exists in 21 | the parsed configuration file, `config_file`. 22 | } 23 | -------------------------------------------------------------------------------- /man/github_api_project_commits.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_project_commits} 4 | \alias{github_api_project_commits} 5 | \title{Download Project Commits} 6 | \usage{ 7 | github_api_project_commits(owner, repo, token) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{token}{Your GitHub API token} 15 | } 16 | \description{ 17 | Download Commits from "GET /repos/{owner}/{repo}/commits" endpoint. 18 | Differently from parsing commits by git cloning the repository, this JSON provides 19 | the GitHub user id, which allows for linking file changes and issue events by the 20 | same author without relying on identity matching heuristics. 21 | } 22 | \references{ 23 | For details, see \url{https://docs.github.com/en/rest/reference/repos#commits}. 24 | } 25 | -------------------------------------------------------------------------------- /man/metric_file_churn.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/metric.R 3 | \name{metric_file_churn} 4 | \alias{metric_file_churn} 5 | \title{File Churn} 6 | \usage{ 7 | metric_file_churn(project_git) 8 | } 9 | \arguments{ 10 | \item{project_git}{a parsed git log obtained from \code{\link{parse_gitlog}}} 11 | } 12 | \value{ 13 | a two column data.table of the form file_pathname | file_churn 14 | } 15 | \description{ 16 | The total churn of a file 17 | } 18 | \seealso{ 19 | Other metrics: 20 | \code{\link{commit_message_id_coverage}()}, 21 | \code{\link{metric_churn_per_commit_interval}()}, 22 | \code{\link{metric_churn_per_commit_per_file}()}, 23 | \code{\link{metric_churn}()}, 24 | \code{\link{metric_file_bug_churn}()}, 25 | \code{\link{metric_file_bug_frequency}()}, 26 | \code{\link{metric_file_non_bug_churn}()}, 27 | \code{\link{metric_file_non_bug_frequency}()} 28 | } 29 | \concept{metrics} 30 | -------------------------------------------------------------------------------- /man/process_gz_to_mbox_in_folder.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/mail.R 3 | \name{process_gz_to_mbox_in_folder} 4 | \alias{process_gz_to_mbox_in_folder} 5 | \title{Gz to Mbox Converter} 6 | \usage{ 7 | process_gz_to_mbox_in_folder(save_folder_path, verbose = TRUE) 8 | } 9 | \arguments{ 10 | \item{save_folder_path}{The path to the folder containing both .gz and .mbox files.} 11 | 12 | \item{verbose}{if TRUE, prints diagnostic messages during processing.} 13 | } 14 | \value{ 15 | A list of the .mbox files that were created or updated. 16 | } 17 | \description{ 18 | This function scans a specified folder for any .gz files, unzips them, 19 | and renames them to the .mbox format. After unzipping, the original .gz files are deleted. 20 | If a .mbox file with the same name already exists, it will be overwritten. 21 | This makes sure that all the files in the folder are in .mbox format, ready for parsing. 22 | } 23 | -------------------------------------------------------------------------------- /R/reply.R: -------------------------------------------------------------------------------- 1 | # Kaiaulu - https://github.com/sailuh/kaiaulu 2 | # 3 | # This Source Code Form is subject to the terms of the Mozilla Public 4 | # License, v. 2.0. If a copy of the MPL was not distributed with this 5 | # file, You can obtain one at https://mozilla.org/MPL/2.0/. 6 | 7 | ############## Network Transform ############## 8 | 9 | 10 | #' Transform parsed mbox or parsed jira replies into a network 11 | #' 12 | #' @param project_reply A parsed mbox by \code{\link{parse_mbox}} or \code{\link{parse_jira_replies}}. 13 | #' @export 14 | #' @family edgelists 15 | transform_reply_to_bipartite_network <- function(project_reply){ 16 | data.From <- data.Subject <- data.Date <- NULL # due to NSE notes in R CMD check 17 | 18 | git_graph <- model_directed_graph(project_reply[,.(from=reply_from,to=reply_subject)], 19 | is_bipartite=TRUE, 20 | color=c("black","lightblue")) 21 | return(git_graph) 22 | } 23 | -------------------------------------------------------------------------------- /man/get_depends_keep_dependencies_type.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_depends_keep_dependencies_type} 4 | \alias{get_depends_keep_dependencies_type} 5 | \title{Returns a list of the types of dependencies to keep for analysis.} 6 | \usage{ 7 | get_depends_keep_dependencies_type(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | A list of the types of depends dependencies to keep for analysis. 14 | } 15 | \description{ 16 | This function returns the specified types of dependencies to 17 | keep for analysis with the depends tool, that is specified in the input 18 | parameter `config_file`. The input, `config_file` must be a parsed 19 | configuration file. The function will inform the user if the list of the 20 | types of dependencies exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_jira_domain.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_jira_domain} 4 | \alias{get_jira_domain} 5 | \title{Returns the Jira project domain for a specific project key.} 6 | \usage{ 7 | get_jira_domain(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The Jira domain for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the Jira project domain for a specific 19 | project key, that is specified in the input parameter `config_file`. 20 | The input, `config_file` must be a parsed configuration file. The function 21 | will inform the user if the domain exists in the parsed configuration file, 22 | `config_file`. 23 | } 24 | -------------------------------------------------------------------------------- /tests/testthat/test-src.R: -------------------------------------------------------------------------------- 1 | tools_path <- test_path("testdata", "tools.yml") 2 | conf_path <- test_path("testdata", "thrift.yml") 3 | 4 | test_that("filters can be used to delete unit tests and example files without deleting source code", { 5 | # Create a temporary directory for the Git repository 6 | tools_path <- file.path(tools_path) 7 | tool <- yaml::read_yaml(tools_path) 8 | perceval_path <- tool[["perceval"]] 9 | git_repo_path <- example_test_example_src_repo(folder_path = "/tmp", 10 | folder_name = "test_example_and_src_repo") 11 | result <- parse_gitlog(perceval_path, git_repo_path) 12 | filtered_result <- result %>% filter_by_filepath_substring(c("example",'test'),"file_pathname") 13 | # expect only 1 because prefix test files and suffix example files are ignored. 14 | expect_equal(nrow(filtered_result), 1) 15 | io_delete_folder(folder_path = "/tmp",folder_name = "test_example_and_src_repo") 16 | 17 | }) 18 | -------------------------------------------------------------------------------- /man/get_understand_keep_dependencies_type.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_understand_keep_dependencies_type} 4 | \alias{get_understand_keep_dependencies_type} 5 | \title{Returns a list of the types of understand dependencies to keep for analysis.} 6 | \usage{ 7 | get_understand_keep_dependencies_type(config_file) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | } 12 | \value{ 13 | A list of the types of understand dependencies to keep for analysis. 14 | } 15 | \description{ 16 | This function returns the specified types of dependencies to 17 | keep for analysis with the understand tool, that is specified in the input 18 | parameter `config_file`. The input, `config_file` must be a parsed 19 | configuration file. The function will inform the user if the list of the 20 | types of understand dependencies exists in the parsed configuration file, `config_file`. 21 | } 22 | -------------------------------------------------------------------------------- /man/get_github_owner.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_owner} 4 | \alias{get_github_owner} 5 | \title{Returns the owner for a GitHub repository for a specific project key.} 6 | \usage{ 7 | get_github_owner(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The GitHub project owner name for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the owner for a GitHub repository for a 19 | specific project key, that is specified in the input parameter `config_file`. 20 | The input, `config_file` must be a parsed configuration file. The function 21 | will inform the user if the owner for the GitHub repository exists in the 22 | parsed configuration file, `config_file`. 23 | } 24 | -------------------------------------------------------------------------------- /man/get_github_repo.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_repo} 4 | \alias{get_github_repo} 5 | \title{Returns the name of the GitHub repository for a specific project key.} 6 | \usage{ 7 | get_github_repo(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The name of the GitHub repository for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the name of the GitHub repository for a 19 | specific project key, that is specified in the input parameter `config_file`. 20 | The input, `config_file` must be a parsed configuration file. The function 21 | will inform the user if the name of the GitHub repository exists in the 22 | parsed configuration file, `config_file`. 23 | } 24 | -------------------------------------------------------------------------------- /man/get_jira_issues_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_jira_issues_path} 4 | \alias{get_jira_issues_path} 5 | \title{Returns the local folder path for Jira issues for a specific project key.} 6 | \usage{ 7 | get_jira_issues_path(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The Jira issue folder path for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the folder path for Jira issues for a 19 | specific project key, that is specified in the input parameter `config_file`. 20 | The input, `config_file` must be a parsed configuration file. The function 21 | will inform the user if the folder path for Jira issues exists in the parsed 22 | configuration file, `config_file`. 23 | } 24 | -------------------------------------------------------------------------------- /man/get_jira_project_key_name.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_jira_project_key_name} 4 | \alias{get_jira_project_key_name} 5 | \title{Returns the name of the Jira project key for a specific project key.} 6 | \usage{ 7 | get_jira_project_key_name(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The Jira project key name for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the Jira project key name for a specific 19 | project key, that is specified in the input parameter `config_file`. 20 | The input, `config_file` must be a parsed configuration file. The function 21 | will inform the user if the project key name exists in the parsed 22 | configuration file, `config_file`. 23 | } 24 | -------------------------------------------------------------------------------- /man/get_mbox_domain.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_mbox_domain} 4 | \alias{get_mbox_domain} 5 | \title{Returns the URL to the archives for mbox for a specific project key.} 6 | \usage{ 7 | get_mbox_domain(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The URL of the mbox mailing list archive for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the URL to the archives for a specific 19 | project key, `project_key_index`, that is specified in the input parameter 20 | `config_file`. The input, `config_file` must be a parsed configuration file. 21 | The function will inform the user if the specific URL to the archives for 22 | mbox exists in the parsed configuration file, `config_file`. 23 | } 24 | -------------------------------------------------------------------------------- /man/get_tool_project.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_tool_project} 4 | \alias{get_tool_project} 5 | \title{Returns the specified tool project from a parsed tool configuration file.} 6 | \usage{ 7 | get_tool_project(tool_name, config_file) 8 | } 9 | \arguments{ 10 | \item{tool_name}{The name of the tool (e.g. "perceval" or "dv8").} 11 | 12 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 13 | } 14 | \value{ 15 | The specified `tool_name` tool project from `config_file`. 16 | } 17 | \description{ 18 | This function returns a path to a specified tool from a 19 | specified parsed tool configuration file. The function takes the input 20 | `tool_name` and uses it to index a specific tool project in a parsed 21 | tool configuration file, `config_file`, where it then returns the specified 22 | tool project. The function will inform the user if the specified attribute, 23 | `tool_name`, exists in the parsed configuration file, `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /man/download_bugzilla_rest_comments.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/bugzilla.R 3 | \name{download_bugzilla_rest_comments} 4 | \alias{download_bugzilla_rest_comments} 5 | \title{Download Bugzilla comments using the Bugzilla REST API} 6 | \usage{ 7 | download_bugzilla_rest_comments(bugzilla_site, bug_ids, save_folder_path) 8 | } 9 | \arguments{ 10 | \item{bugzilla_site}{URL to specific bugzilla site} 11 | 12 | \item{bug_ids}{the ids of the bugs to extract comments for from \code{\link{download_bugzilla_rest_issues}}} 13 | 14 | \item{save_folder_path}{the full *folder* path where the bugzilla comments will be stored} 15 | } 16 | \description{ 17 | Downloads comments associated with each bug id returned from \code{\link{download_bugzilla_rest_issues}}. 18 | Each file saved contains a group of comments associated with a particular bug, where the filename is the corresponding bug id. 19 | } 20 | \seealso{ 21 | \code{\link{download_bugzilla_rest_issues}} a downloader function to download the bugzilla issues data 22 | } 23 | -------------------------------------------------------------------------------- /man/get_mbox_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_mbox_path} 4 | \alias{get_mbox_path} 5 | \title{Returns the local folder path to store mbox data for a specific project key.} 6 | \usage{ 7 | get_mbox_path(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The local mbox path for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the local folder path used to store 19 | mbox data for a specific project key, `project_key_index`, that is specified 20 | in the input parameter `config_file`. The input, `config_file` must be a 21 | parsed configuration file. The function will inform the user if the specific 22 | local folder path to store mbox data exists in the parsed configuration 23 | file, `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /man/get_github_issue_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_issue_path} 4 | \alias{get_github_issue_path} 5 | \title{Returns the local folder path for GitHub issues for a specific project key.} 6 | \usage{ 7 | get_github_issue_path(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The local folder path for GitHub issues for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the local folder path for GitHub issues 19 | for a specific project key, that is specified in the input parameter 20 | `config_file`. The input, `config_file` must be a parsed configuration file. 21 | The function will inform the user if the folder path for GitHub issues exists 22 | in the parsed configuration file, `config_file`. 23 | } 24 | -------------------------------------------------------------------------------- /man/get_bugzilla_project_key.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_bugzilla_project_key} 4 | \alias{get_bugzilla_project_key} 5 | \title{Returns the name of the Bugzilla project key for a specific project key index.} 6 | \usage{ 7 | get_bugzilla_project_key(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The Bugzilla project key name for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the name of the Bugzilla project key for 19 | a specific project key, that is specified in the input parameter 20 | `config_file`. The input, `config_file` must be a parsed configuration file. 21 | The function will inform the user if the name of the Bugzilla project key 22 | exists in the parsed configuration file, `config_file`. 23 | } 24 | -------------------------------------------------------------------------------- /man/dv8_gitnumstat_to_hdsmb.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dv8.R 3 | \name{dv8_gitnumstat_to_hdsmb} 4 | \alias{dv8_gitnumstat_to_hdsmb} 5 | \title{Converts a git log text file into a hdsmb binary file} 6 | \usage{ 7 | dv8_gitnumstat_to_hdsmb( 8 | dv8_path, 9 | git_numstat_path, 10 | hdsmb_path, 11 | max_cochange_count = 1000, 12 | params_output_file = "" 13 | ) 14 | } 15 | \arguments{ 16 | \item{dv8_path}{path to DV8 binary} 17 | 18 | \item{git_numstat_path}{path to local git log text file obtained by \code{\link{dv8_gitlog_to_gitnumstat}}} 19 | 20 | \item{hdsmb_path}{name of output hdsmb binary file, defaults to name of input} 21 | 22 | \item{max_cochange_count}{maximum count of co-changed files per commit, default 1000} 23 | 24 | \item{params_output_file}{output file used to record parameters} 25 | } 26 | \value{ 27 | the hdsmb_path 28 | } 29 | \description{ 30 | An input file \*.txt is converted to \*.dv8-dsm 31 | } 32 | \seealso{ 33 | \code{\link{dv8_hdsmb_sdsmb_to_mdsmb}} to merge DSMs into `*-merge.dv8-dsm`. 34 | } 35 | -------------------------------------------------------------------------------- /man/get_mbox_input_file.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_mbox_input_file} 4 | \alias{get_mbox_input_file} 5 | \title{Returns the local input file for mbox for a specific project key.} 6 | \usage{ 7 | get_mbox_input_file(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The local input file mbox path for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the local file used for input for 19 | mbox for a specific project key, `project_key_index`, that is specified 20 | in the input parameter `config_file`. The input, `config_file` must be a 21 | parsed configuration file. The function will inform the user if the specific 22 | local input file path for mbox exists in the parsed configuration file, 23 | `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /tools.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/chaoss/grimoirelab-perceval 2 | perceval: /Library/Frameworks/Python.framework/Versions/3.12/bin/perceval 3 | # https://github.com/multilang-depends/depends 4 | depends: ~/depends-0.9.6/depends.jar 5 | # https://github.com/tsantalis/RefactoringMiner#running-refactoringminer-from-the-command-line 6 | refactoring_miner: ~/RefactoringMiner-1.0/bin/RefactoringMiner 7 | # https://github.com/boyter/scc 8 | scc: ~/scc/scc 9 | # universal-ctags 10 | utags: /usr/local/Cellar/universal-ctags/HEAD-62f0144/bin/ctags 11 | # https://archdia.com/ 12 | dv8: /Applications/DV84/bin/dv8-console 13 | # OSLOM: http://oslom.org/ 14 | oslom_dir: ~/OSLOM2/oslom_dir 15 | oslom_undir: ~/OSLOM2/oslom_undir 16 | # srcML: https://www.srcml.org/ 17 | srcml: /usr/local/bin/srcml 18 | # pattern4: https://users.encs.concordia.ca/~nikolaos/pattern_detection.html 19 | pattern4: ~/Desktop/kaiaulu/tools/pattern4.jar 20 | # Scitools Understand: https://scitools.com/ 21 | scitools: /Applications/Understand.app/Contents/MacOS/und 22 | # Temporary folder path for intermediate files 23 | tmp: /tmp 24 | -------------------------------------------------------------------------------- /man/get_bugzilla_issue_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_bugzilla_issue_path} 4 | \alias{get_bugzilla_issue_path} 5 | \title{Returns the local folder path for Bugzilla issues for a specific project key.} 6 | \usage{ 7 | get_bugzilla_issue_path(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The local folder path for Bugzilla issues for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the local folder path for Bugzilla issues 19 | for a specific project key, that is specified in the input parameter 20 | `config_file`. The input, `config_file` must be a parsed configuration file. 21 | The function will inform the user if the folder path for Bugzilla issues 22 | exists in the parsed configuration file, `config_file`. 23 | } 24 | -------------------------------------------------------------------------------- /man/get_github_commit_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_commit_path} 4 | \alias{get_github_commit_path} 5 | \title{Returns the local folder path for GitHub commits for a specific project key.} 6 | \usage{ 7 | get_github_commit_path(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The local folder path for GitHub commits for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the local folder path for GitHub commits 19 | for a specific project key, that is specified in the input 20 | parameter `config_file`. The input, `config_file` must be a parsed 21 | configuration file. The function will inform the user if the local folder 22 | path for the commits exists in the parsed configuration file, 23 | `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /man/metric_churn_per_commit_interval.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/metric.R 3 | \name{metric_churn_per_commit_interval} 4 | \alias{metric_churn_per_commit_interval} 5 | \title{Churn Metric per Commit Interval} 6 | \usage{ 7 | metric_churn_per_commit_interval(git_log) 8 | } 9 | \arguments{ 10 | \item{git_log}{a parsed git log table where each row is identified by commit+file} 11 | } 12 | \value{ 13 | a single value with the sum of all churn in the commit interval 14 | } 15 | \description{ 16 | Calculates the churn metric for a sequence of commits 17 | } 18 | \seealso{ 19 | \code{\link{parse_gitlog}} to obtain `git_log`` 20 | 21 | Other metrics: 22 | \code{\link{commit_message_id_coverage}()}, 23 | \code{\link{metric_churn_per_commit_per_file}()}, 24 | \code{\link{metric_churn}()}, 25 | \code{\link{metric_file_bug_churn}()}, 26 | \code{\link{metric_file_bug_frequency}()}, 27 | \code{\link{metric_file_churn}()}, 28 | \code{\link{metric_file_non_bug_churn}()}, 29 | \code{\link{metric_file_non_bug_frequency}()} 30 | } 31 | \concept{metrics} 32 | -------------------------------------------------------------------------------- /man/metric_churn_per_commit_per_file.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/metric.R 3 | \name{metric_churn_per_commit_per_file} 4 | \alias{metric_churn_per_commit_per_file} 5 | \title{Churn Metric per Commit per File} 6 | \usage{ 7 | metric_churn_per_commit_per_file(git_log) 8 | } 9 | \arguments{ 10 | \item{git_log}{a parsed git log table where each row is identified by commit+file} 11 | } 12 | \value{ 13 | `git_log` with an additional `churn` column. 14 | } 15 | \description{ 16 | Calculates the churn metric for a sequence of commits per commit per file 17 | } 18 | \seealso{ 19 | \code{\link{parse_gitlog}} to obtain `git_log` 20 | 21 | Other metrics: 22 | \code{\link{commit_message_id_coverage}()}, 23 | \code{\link{metric_churn_per_commit_interval}()}, 24 | \code{\link{metric_churn}()}, 25 | \code{\link{metric_file_bug_churn}()}, 26 | \code{\link{metric_file_bug_frequency}()}, 27 | \code{\link{metric_file_churn}()}, 28 | \code{\link{metric_file_non_bug_churn}()}, 29 | \code{\link{metric_file_non_bug_frequency}()} 30 | } 31 | \concept{metrics} 32 | -------------------------------------------------------------------------------- /man/filter_by_file_extension.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/filter.R 3 | \name{filter_by_file_extension} 4 | \alias{filter_by_file_extension} 5 | \title{Filter commit files by extension} 6 | \usage{ 7 | filter_by_file_extension(dt_file, extension, file_column_name) 8 | } 9 | \arguments{ 10 | \item{dt_file}{any data.table containing filepaths} 11 | 12 | \item{extension}{a character vector of extensions (e.g. c(py,java)) to *keep* 13 | in the table} 14 | 15 | \item{file_column_name}{a string indicating the column name which contains filepaths} 16 | } 17 | \value{ 18 | a data.table which contains only filepaths with the specified extensions 19 | } 20 | \description{ 21 | Filters a data.table containing filepaths using the specified extensions 22 | } 23 | \seealso{ 24 | \code{\link{parse_gitlog}} and \code{\link{parse_dependencies}} to create dt_file 25 | 26 | Other filters: 27 | \code{\link{filter_by_commit_interval}()}, 28 | \code{\link{filter_by_commit_size}()}, 29 | \code{\link{filter_by_filepath_substring}()} 30 | } 31 | \concept{filters} 32 | -------------------------------------------------------------------------------- /man/get_pipermail_domain.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_pipermail_domain} 4 | \alias{get_pipermail_domain} 5 | \title{Returns the URL to the archives for pipermail for a specific project key.} 6 | \usage{ 7 | get_pipermail_domain(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The URL of the pipermail mailing list archive for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the URL to the archives for a specific 19 | project key, `project_key_index`, that is specified in the input parameter 20 | `config_file`. The input, `config_file` must be a parsed configuration file. 21 | The function will inform the user if the specific URL to the archives for 22 | pipermail exists in the parsed configuration file, `config_file`. 23 | } 24 | -------------------------------------------------------------------------------- /man/get_pipermail_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_pipermail_path} 4 | \alias{get_pipermail_path} 5 | \title{Returns the local folder path to store pipermail data for a specific project key.} 6 | \usage{ 7 | get_pipermail_path(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The local pipermail path for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the local folder path used to store 19 | pipermail data for a specific project key, `project_key_index`, that is specified 20 | in the input parameter `config_file`. The input, `config_file` must be a 21 | parsed configuration file. The function will inform the user if the specific 22 | local folder path to store pipermail data exists in the parsed configuration 23 | file, `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /man/parse_gof_patterns.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{parse_gof_patterns} 4 | \alias{parse_gof_patterns} 5 | \title{Parse GoF Patterns} 6 | \usage{ 7 | parse_gof_patterns(output_filepath = "/tmp/gof.xml") 8 | } 9 | \arguments{ 10 | \item{output_filepath}{Optional path to read the XML generated by \code{\link{write_gof_patterns}}. If not 11 | specified, it will be assumed saved to the temporary folder path `/tmp/gof.xml`.} 12 | } 13 | \value{ 14 | A data.table containing the parsed gof patterns per class. 15 | } 16 | \description{ 17 | Parses GoF patterns generated by \code{\link{write_gof_patterns}} into a a table. 18 | \url{https://www.srcml.org/documentation.html}. 19 | Pattern4.jar is available on 20 | [Tsantalis' homepage](https://users.encs.concordia.ca/~nikolaos/pattern_detection.html)). 21 | } 22 | \references{ 23 | N. Tsantalis, A. Chatzigeorgiou, G. Stephanides, S. T. Halkidis, 24 | "Design Pattern Detection Using Similarity Scoring", 25 | IEEE Transactions on Software Engineering, 26 | vol. 32, no. 11, pp. 896-909, November, 2006. 27 | } 28 | -------------------------------------------------------------------------------- /man/query_src_text.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{query_src_text} 4 | \alias{query_src_text} 5 | \title{Query srcML XML} 6 | \usage{ 7 | query_src_text(srcml_path, xpath_query, srcml_filepath) 8 | } 9 | \arguments{ 10 | \item{srcml_path}{The path to srcML binary} 11 | 12 | \item{xpath_query}{The XPath query to be performed on the .xml} 13 | 14 | \item{srcml_filepath}{The path to the srcML file to be queried 15 | (see \code{\link{annotate_src_text}}).} 16 | } 17 | \value{ 18 | The path where the output xml was saved (i.e. srcml_filepath) 19 | } 20 | \description{ 21 | Queries srcML XML for code units (e.g. function names, declarations, etc.). 22 | For a list of code units and languages supported by srcML XML see: 23 | \url{https://www.srcml.org/documentation.html}. 24 | } 25 | \details{ 26 | Note a query, unless explicitly specified to be parsed (e.g. by using the 27 | string() scrML function), is a srcML XML itself, which can be also queried. 28 | } 29 | \references{ 30 | For details, see \url{https://www.srcml.org/tutorials/xpath-query.html}. 31 | } 32 | -------------------------------------------------------------------------------- /vignettes/_refactoringminer_showcase.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Refactoring Miner Showcase" 3 | output: 4 | html_document: 5 | toc: true 6 | number_sections: true 7 | vignette: > 8 | %\VignetteEngine{knitr::rmarkdown} 9 | %\VignetteIndexEntry{Refactoring Miner Showcase} 10 | %\VignetteEncoding{UTF-8} 11 | --- 12 | 13 | ```{r} 14 | require(kaiaulu) 15 | ``` 16 | 17 | This is a wrapper for [Refactoring Miner](https://github.com/tsantalis/RefactoringMiner#running-refactoringminer-from-the-command-line). See README.md for setup details. 18 | 19 | ```{r} 20 | tool <- parse_config("../tools.yml") 21 | conf <- parse_config("../conf/tomcat.yml") 22 | rminer_path <- get_tool_project("refactoring_miner", tool) 23 | git_repo_path <- get_git_repo_path(conf) 24 | start_commit <- get_enumeration_commits(conf)[1] 25 | end_commit <- get_enumeration_commits(conf)[2] 26 | ``` 27 | 28 | A sample of parsed refactorings is shown below in json format: 29 | 30 | ```{r} 31 | refactorings <- parse_java_code_refactoring_json(rminer_path,git_repo_path,start_commit,end_commit) 32 | 33 | str(refactorings$commits[16]) 34 | ``` 35 | 36 | -------------------------------------------------------------------------------- /man/get_pipermail_input_file.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_pipermail_input_file} 4 | \alias{get_pipermail_input_file} 5 | \title{Returns the local input file for pipermail for a specific project key.} 6 | \usage{ 7 | get_pipermail_input_file(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The local input file pipermail path for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the local file used for input for 19 | pipermail for a specific project key, `project_key_index`, that is specified 20 | in the input parameter `config_file`. The input, `config_file` must be a 21 | parsed configuration file. The function will inform the user if the specific 22 | local input file path for pipermail exists in the parsed configuration file, 23 | `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /man/get_github_pr_files_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_pr_files_path} 4 | \alias{get_github_pr_files_path} 5 | \title{Returns the local folder path for GitHub pull request files for a specific project key.} 6 | \usage{ 7 | get_github_pr_files_path(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The local folder path for GitHub pull request files for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the local folder path for GitHub pull request files 19 | for a specific project key, that is specified in the input 20 | parameter `config_file`. The input, `config_file` must be a parsed 21 | configuration file. The function will inform the user if the local folder 22 | path for the files exists in the parsed configuration file, 23 | `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /man/get_jira_issues_comments_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_jira_issues_comments_path} 4 | \alias{get_jira_issues_comments_path} 5 | \title{Returns the local folder path for Jira issue comments for a specific 6 | project key.} 7 | \usage{ 8 | get_jira_issues_comments_path(config_file, project_key_index) 9 | } 10 | \arguments{ 11 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 12 | 13 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 14 | } 15 | \value{ 16 | The folder path for Jira issue comments for project specified by key `project_key_index`. 17 | } 18 | \description{ 19 | This function returns the local folder path for Jira issue 20 | comments for a specific project key, that is specified in the input 21 | parameter `config_file`. The input, `config_file` must be a parsed 22 | configuration file. The function will inform the user if the local folder 23 | path for the comments exists in the parsed configuration file, `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /man/metric_file_bug_churn.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/metric.R 3 | \name{metric_file_bug_churn} 4 | \alias{metric_file_bug_churn} 5 | \title{File Bug Churn} 6 | \usage{ 7 | metric_file_bug_churn(project_git, jira_issues) 8 | } 9 | \arguments{ 10 | \item{project_git}{a parsed git log obtained from \code{\link{parse_commit_message_id}}} 11 | 12 | \item{jira_issues}{a parsed jira issue log obtained from \code{\link{parse_jira}}} 13 | } 14 | \value{ 15 | a two column data.table of the form file_pathname | file_bug_churn 16 | } 17 | \description{ 18 | The total churn sum of commits of all closed bug type issues the file was involved. 19 | } 20 | \seealso{ 21 | Other metrics: 22 | \code{\link{commit_message_id_coverage}()}, 23 | \code{\link{metric_churn_per_commit_interval}()}, 24 | \code{\link{metric_churn_per_commit_per_file}()}, 25 | \code{\link{metric_churn}()}, 26 | \code{\link{metric_file_bug_frequency}()}, 27 | \code{\link{metric_file_churn}()}, 28 | \code{\link{metric_file_non_bug_churn}()}, 29 | \code{\link{metric_file_non_bug_frequency}()} 30 | } 31 | \concept{metrics} 32 | -------------------------------------------------------------------------------- /man/get_github_issue_event_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_issue_event_path} 4 | \alias{get_github_issue_event_path} 5 | \title{Returns the local folder path for GitHub issue events for a specific project 6 | key.} 7 | \usage{ 8 | get_github_issue_event_path(config_file, project_key_index) 9 | } 10 | \arguments{ 11 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 12 | 13 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 14 | } 15 | \value{ 16 | The local folder path for GitHub issue events for project specified by key `project_key_index`. 17 | } 18 | \description{ 19 | This function returns the local folder path for GitHub issue 20 | events for a specific project key, that is specified in the input 21 | parameter `config_file`. The input, `config_file` must be a parsed 22 | configuration file. The function will inform the user if the local folder 23 | path for the issue events exists in the parsed configuration file, 24 | `config_file`. 25 | } 26 | -------------------------------------------------------------------------------- /man/metric_churn.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/metric.R 3 | \name{metric_churn} 4 | \alias{metric_churn} 5 | \title{Churn Metric} 6 | \usage{ 7 | metric_churn(lines_added, lines_removed) 8 | } 9 | \arguments{ 10 | \item{lines_added}{numeric vector additions to a file due to a commit} 11 | 12 | \item{lines_removed}{numeric vector of deletions to a file due to a commit 13 | in the table} 14 | } 15 | \value{ 16 | a numeric vector of churn 17 | } 18 | \description{ 19 | Simply adds two columns, expected to be additions and deletions from a file. 20 | } 21 | \seealso{ 22 | \code{\link{parse_gitlog}} to obtain additions and deletions from gitlog 23 | 24 | Other metrics: 25 | \code{\link{commit_message_id_coverage}()}, 26 | \code{\link{metric_churn_per_commit_interval}()}, 27 | \code{\link{metric_churn_per_commit_per_file}()}, 28 | \code{\link{metric_file_bug_churn}()}, 29 | \code{\link{metric_file_bug_frequency}()}, 30 | \code{\link{metric_file_churn}()}, 31 | \code{\link{metric_file_non_bug_churn}()}, 32 | \code{\link{metric_file_non_bug_frequency}()} 33 | } 34 | \concept{metrics} 35 | -------------------------------------------------------------------------------- /man/parse_java_code_refactoring_json.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{parse_java_code_refactoring_json} 4 | \alias{parse_java_code_refactoring_json} 5 | \title{Parse Java Code Refactorings} 6 | \usage{ 7 | parse_java_code_refactoring_json( 8 | rminer_path, 9 | git_repo_path, 10 | start_commit, 11 | end_commit 12 | ) 13 | } 14 | \arguments{ 15 | \item{rminer_path}{The path to RMiner binary. 16 | See \url{https://github.com/tsantalis/RefactoringMiner#running-refactoringminer-from-the-command-line}} 17 | 18 | \item{git_repo_path}{path to git repo (ends in .git)} 19 | 20 | \item{start_commit}{the start commit hash} 21 | 22 | \item{end_commit}{the end commit hash} 23 | } 24 | \description{ 25 | Parse Java Code Refactorings 26 | } 27 | \references{ 28 | Nikolaos Tsantalis, Matin Mansouri, Laleh Eshkevari, 29 | Davood Mazinanian, and Danny Dig, "Accurate and Efficient Refactoring 30 | Detection in Commit History," 40th 31 | International Conference on Software Engineering (ICSE 2018), 32 | Gothenburg, Sweden, May 27 - June 3, 2018. 33 | } 34 | \keyword{internal} 35 | -------------------------------------------------------------------------------- /man/get_github_issue_search_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_issue_search_path} 4 | \alias{get_github_issue_search_path} 5 | \title{Returns the local folder path for GitHub Issue Searches for a specific 6 | project key.} 7 | \usage{ 8 | get_github_issue_search_path(config_file, project_key_index) 9 | } 10 | \arguments{ 11 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 12 | 13 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 14 | } 15 | \value{ 16 | The local folder path for GitHub issue search for project specified by key `project_key_index`. 17 | } 18 | \description{ 19 | This function returns the local folder path for GitHub Issue 20 | Searches for a specific project key, that is specified in the input parameter 21 | `config_file`. The input, `config_file` must be a parsed configuration file. 22 | The function will inform the user if the local folder path for the issue 23 | searches exists in the parsed configuration file, `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /man/get_github_pr_review_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_pr_review_path} 4 | \alias{get_github_pr_review_path} 5 | \title{Returns the local folder path for GitHub pull request reviews for a specific project key.} 6 | \usage{ 7 | get_github_pr_review_path(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The local folder path for GitHub pull request reviews for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the local folder path for GitHub pull request reviews 19 | for a specific project key, that is specified in the input 20 | parameter `config_file`. The input, `config_file` must be a parsed 21 | configuration file. The function will inform the user if the local folder 22 | path for the commits exists in the parsed configuration file, 23 | `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /man/get_github_pr_commits_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_pr_commits_path} 4 | \alias{get_github_pr_commits_path} 5 | \title{Returns the local folder path for GitHub pull request commits for a specific project key.} 6 | \usage{ 7 | get_github_pr_commits_path(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The local folder path for GitHub pull request commits for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the local folder path for GitHub pull request commits 19 | for a specific project key, that is specified in the input 20 | parameter `config_file`. The input, `config_file` must be a parsed 21 | configuration file. The function will inform the user if the local folder 22 | path for the commits exists in the parsed configuration file, 23 | `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /man/get_github_pull_request_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_pull_request_path} 4 | \alias{get_github_pull_request_path} 5 | \title{Returns the local folder path for GitHub Pull Requests for a specific 6 | project key.} 7 | \usage{ 8 | get_github_pull_request_path(config_file, project_key_index) 9 | } 10 | \arguments{ 11 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 12 | 13 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 14 | } 15 | \value{ 16 | The local folder path for GitHub pull requests for project specified by key `project_key_index`. 17 | } 18 | \description{ 19 | This function returns the local folder path for GitHub Pull 20 | Requests for a specific project key, that is specified in the input 21 | parameter `config_file`. The input, `config_file` must be a parsed 22 | configuration file. The function will inform the user if the local folder 23 | path for the pull requests exists in the parsed configuration file, 24 | `config_file`. 25 | } 26 | -------------------------------------------------------------------------------- /man/get_github_pr_merge_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_pr_merge_path} 4 | \alias{get_github_pr_merge_path} 5 | \title{Returns the local folder path for GitHub pull request merge status for a specific project key.} 6 | \usage{ 7 | get_github_pr_merge_path(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The local folder path for GitHub pull request merge status for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the local folder path for GitHub pull request merge status 19 | for a specific project key, that is specified in the input 20 | parameter `config_file`. The input, `config_file` must be a parsed 21 | configuration file. The function will inform the user if the local folder 22 | path for the files exists in the parsed configuration file, 23 | `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /man/metric_file_bug_frequency.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/metric.R 3 | \name{metric_file_bug_frequency} 4 | \alias{metric_file_bug_frequency} 5 | \title{File Bug Frequency} 6 | \usage{ 7 | metric_file_bug_frequency(project_git, jira_issues) 8 | } 9 | \arguments{ 10 | \item{project_git}{a parsed git log obtained from \code{\link{parse_commit_message_id}}} 11 | 12 | \item{jira_issues}{a parsed jira issue log obtained from \code{\link{parse_jira}}} 13 | } 14 | \value{ 15 | a two column data.table of the form file_pathname | file_bug_frequency 16 | } 17 | \description{ 18 | The total number of commits of all closed bug type issues the file was involved. 19 | } 20 | \seealso{ 21 | Other metrics: 22 | \code{\link{commit_message_id_coverage}()}, 23 | \code{\link{metric_churn_per_commit_interval}()}, 24 | \code{\link{metric_churn_per_commit_per_file}()}, 25 | \code{\link{metric_churn}()}, 26 | \code{\link{metric_file_bug_churn}()}, 27 | \code{\link{metric_file_churn}()}, 28 | \code{\link{metric_file_non_bug_churn}()}, 29 | \code{\link{metric_file_non_bug_frequency}()} 30 | } 31 | \concept{metrics} 32 | -------------------------------------------------------------------------------- /man/bipartite_graph_projection.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/graph.R 3 | \name{bipartite_graph_projection} 4 | \alias{bipartite_graph_projection} 5 | \title{Apply a bipartite graph projection} 6 | \usage{ 7 | bipartite_graph_projection(graph, mode, weight_scheme_function = NULL) 8 | } 9 | \arguments{ 10 | \item{graph}{A bipartite network (the same pair of nodes can *not* have multiple edges)} 11 | 12 | \item{mode}{Which of the two nodes the projection should be applied to. TRUE or FALSE} 13 | 14 | \item{weight_scheme_function}{When not specified, bipartite_graph_projection will return an intermediate 15 | projection table specifying the deleted node, from_projection, to_projection, from_weight, and to_weight. 16 | This table also contains (N choose 2) rows for every "deleted_node" in the original graph. 17 | When receiving as parameter \code{\link{weight_scheme_sum_edges}} or 18 | \code{\link{weight_scheme_count_deleted_nodes}}, the final projection table will be returned instead.} 19 | } 20 | \value{ 21 | A graph projection. 22 | } 23 | \description{ 24 | Apply a bipartite graph projection 25 | } 26 | -------------------------------------------------------------------------------- /man/community_oslom.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/graph.R 3 | \name{community_oslom} 4 | \alias{community_oslom} 5 | \title{OSLOM Community Detection} 6 | \usage{ 7 | community_oslom(oslom_bin_dir_undir_path, graph, seed, n_runs, is_weighted) 8 | } 9 | \arguments{ 10 | \item{oslom_bin_dir_undir_path}{The path to oslom directed or undirected network binary} 11 | 12 | \item{graph}{The graph to be clustered obtained from transform_* functions} 13 | 14 | \item{seed}{An integer specifying the seed to replicate the result} 15 | 16 | \item{n_runs}{the number of runs for the first hierarchical level} 17 | 18 | \item{is_weighted}{a boolean indicating whether a weight column is available in the data.table} 19 | } 20 | \description{ 21 | Wrapper for OSLOM Community Detection \url{http://oslom.org/} 22 | } 23 | \references{ 24 | Finding statistically significant communities in networks 25 | A. Lancichinetti, F. Radicchi, J.J. Ramasco and 26 | S. Fortunato PLoS ONE 6, e18961 (2011). 27 | } 28 | \seealso{ 29 | Other community: 30 | \code{\link{recolor_network_by_community}()} 31 | } 32 | \concept{community} 33 | -------------------------------------------------------------------------------- /man/get_bugzilla_issue_comment_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_bugzilla_issue_comment_path} 4 | \alias{get_bugzilla_issue_comment_path} 5 | \title{Returns the local folder path for Bugzilla issue comments for a specific project key.} 6 | \usage{ 7 | get_bugzilla_issue_comment_path(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The local folder path for Bugzilla issue comments for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the local folder path for Bugzilla issue 19 | comments for a specific project key, that is specified in the input parameter 20 | `config_file`. The input, `config_file` must be a parsed configuration file. 21 | The function will inform the user if the folder path for Bugzilla issue 22 | comments exists in the parsed configuration file, `config_file`. 23 | } 24 | -------------------------------------------------------------------------------- /man/metric_file_non_bug_churn.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/metric.R 3 | \name{metric_file_non_bug_churn} 4 | \alias{metric_file_non_bug_churn} 5 | \title{File Non Bug Churn} 6 | \usage{ 7 | metric_file_non_bug_churn(project_git, jira_issues) 8 | } 9 | \arguments{ 10 | \item{project_git}{a parsed git log obtained from \code{\link{parse_commit_message_id}}} 11 | 12 | \item{jira_issues}{a parsed jira issue log obtained from \code{\link{parse_jira}}} 13 | } 14 | \value{ 15 | a two column data.table of the form file_pathname | file_non_bug_churn 16 | } 17 | \description{ 18 | The total churn sum of commits of all closed non-bug type issues the file was involved. 19 | } 20 | \seealso{ 21 | Other metrics: 22 | \code{\link{commit_message_id_coverage}()}, 23 | \code{\link{metric_churn_per_commit_interval}()}, 24 | \code{\link{metric_churn_per_commit_per_file}()}, 25 | \code{\link{metric_churn}()}, 26 | \code{\link{metric_file_bug_churn}()}, 27 | \code{\link{metric_file_bug_frequency}()}, 28 | \code{\link{metric_file_churn}()}, 29 | \code{\link{metric_file_non_bug_frequency}()} 30 | } 31 | \concept{metrics} 32 | -------------------------------------------------------------------------------- /man/filter_by_commit_interval.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/filter.R 3 | \name{filter_by_commit_interval} 4 | \alias{filter_by_commit_interval} 5 | \title{Filter by commit interval} 6 | \usage{ 7 | filter_by_commit_interval(git_log, start_commit, end_commit) 8 | } 9 | \arguments{ 10 | \item{git_log}{any data.table with a named column `data.AuthorDate` with datetime in POSIXct} 11 | 12 | \item{start_commit}{a commit hash which indicates the start of interval (the commit must exist in `git_log`)} 13 | 14 | \item{end_commit}{a commit hash which indicates the end of interval (the commit must exist in `git_log`)} 15 | } 16 | \value{ 17 | a data.table which contains only commits within `start_commit` and `end_commit` 18 | } 19 | \description{ 20 | Filters a data.table by with author or commit datetime using the specified start and end commits 21 | } 22 | \seealso{ 23 | \code{\link{parse_gitlog}} to create git_log 24 | 25 | Other filters: 26 | \code{\link{filter_by_commit_size}()}, 27 | \code{\link{filter_by_file_extension}()}, 28 | \code{\link{filter_by_filepath_substring}()} 29 | } 30 | \concept{filters} 31 | -------------------------------------------------------------------------------- /man/metric_file_non_bug_frequency.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/metric.R 3 | \name{metric_file_non_bug_frequency} 4 | \alias{metric_file_non_bug_frequency} 5 | \title{File Non Bug Frequency} 6 | \usage{ 7 | metric_file_non_bug_frequency(project_git, jira_issues) 8 | } 9 | \arguments{ 10 | \item{project_git}{a parsed git log obtained from \code{\link{parse_commit_message_id}}} 11 | 12 | \item{jira_issues}{a parsed jira issue log obtained from \code{\link{parse_jira}}} 13 | } 14 | \value{ 15 | a two column data.table of the form file_pathname | non_file_bug_frequency 16 | } 17 | \description{ 18 | The total number of commits of all closed non-bug type issues the file was involved. 19 | } 20 | \seealso{ 21 | Other metrics: 22 | \code{\link{commit_message_id_coverage}()}, 23 | \code{\link{metric_churn_per_commit_interval}()}, 24 | \code{\link{metric_churn_per_commit_per_file}()}, 25 | \code{\link{metric_churn}()}, 26 | \code{\link{metric_file_bug_churn}()}, 27 | \code{\link{metric_file_bug_frequency}()}, 28 | \code{\link{metric_file_churn}()}, 29 | \code{\link{metric_file_non_bug_churn}()} 30 | } 31 | \concept{metrics} 32 | -------------------------------------------------------------------------------- /man/filter_by_filepath_substring.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/filter.R 3 | \name{filter_by_filepath_substring} 4 | \alias{filter_by_filepath_substring} 5 | \title{Filter by filepath substring} 6 | \usage{ 7 | filter_by_filepath_substring(dt_file, substring, file_column_name) 8 | } 9 | \arguments{ 10 | \item{dt_file}{any data.table containing filepaths} 11 | 12 | \item{substring}{a character vector of substrings (e.g. c(py,java)) we wish to *filter*} 13 | 14 | \item{file_column_name}{a string indicating the column name which contains filepaths} 15 | } 16 | \value{ 17 | a data.table which contains does *not* contain filepaths with the specified words 18 | } 19 | \description{ 20 | Filters a data.table with filepaths using the specified substring (e.g. remove 21 | all filepaths which contain the word 'test' anywhere in it) 22 | } 23 | \seealso{ 24 | \code{\link{parse_gitlog}} and \code{\link{parse_dependencies}} to create dt_file 25 | 26 | Other filters: 27 | \code{\link{filter_by_commit_interval}()}, 28 | \code{\link{filter_by_commit_size}()}, 29 | \code{\link{filter_by_file_extension}()} 30 | } 31 | \concept{filters} 32 | -------------------------------------------------------------------------------- /man/get_github_pr_comments_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_pr_comments_path} 4 | \alias{get_github_pr_comments_path} 5 | \title{Returns the local folder path for GitHub Pull Request Review Comments for a specific 6 | project key.} 7 | \usage{ 8 | get_github_pr_comments_path(config_file, project_key_index) 9 | } 10 | \arguments{ 11 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 12 | 13 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 14 | } 15 | \value{ 16 | The local folder path for GitHub pull request review comments for project specified by key `project_key_index`. 17 | } 18 | \description{ 19 | This function returns the local folder path for GitHub Pull 20 | Request Comments for a specific project key, that is specified in the input 21 | parameter `config_file`. The input, `config_file` must be a parsed 22 | configuration file. The function will inform the user if the local folder 23 | path for the pull request comments exists in the parsed configuration file, 24 | `config_file`. 25 | } 26 | -------------------------------------------------------------------------------- /man/get_github_pr_reviewers_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_pr_reviewers_path} 4 | \alias{get_github_pr_reviewers_path} 5 | \title{Returns the local folder path for GitHub pull request requested reviewers for a specific project key.} 6 | \usage{ 7 | get_github_pr_reviewers_path(config_file, project_key_index) 8 | } 9 | \arguments{ 10 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 11 | 12 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 13 | } 14 | \value{ 15 | The local folder path for GitHub pull request requested reviewers for project specified by key `project_key_index`. 16 | } 17 | \description{ 18 | This function returns the local folder path for GitHub pull request requested reviewers 19 | for a specific project key, that is specified in the input 20 | parameter `config_file`. The input, `config_file` must be a parsed 21 | configuration file. The function will inform the user if the local folder 22 | path for the files exists in the parsed configuration file, 23 | `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /man/github_api_pull_pr_comments.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_pull_pr_comments} 4 | \alias{github_api_pull_pr_comments} 5 | \title{Download Project's Pull Request Comments by Specific Pull Request Number} 6 | \usage{ 7 | github_api_pull_pr_comments(owner, repo, pull_number, token) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{pull_number}{The number that identifies the pull request.} 15 | 16 | \item{token}{Your GitHub API token} 17 | } 18 | \description{ 19 | Downloads the Pull Request Comments from `GET /repos/{owner}/{repo}/pulls/comments` endpoint. 20 | Optional parameter since is used to download comments updated after the specified date. 21 | If the value of since is NULL, it is not passed to the API call and all comments are downloaded. 22 | NOTE: This function is different from the `github_api_project_issue_or_pr_comments`. 23 | } 24 | \references{ 25 | For details, see \url{https://docs.github.com/en/rest/pulls/comments?apiVersion=2022-11-28#about-pull-request-review-comments} 26 | } 27 | -------------------------------------------------------------------------------- /man/dv8_mdsmb_drhier_to_excel.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dv8.R 3 | \name{dv8_mdsmb_drhier_to_excel} 4 | \alias{dv8_mdsmb_drhier_to_excel} 5 | \title{Export a mdsmb binary file into a spreadsheet} 6 | \usage{ 7 | dv8_mdsmb_drhier_to_excel( 8 | dv8_path, 9 | mdsmb_path, 10 | excel_path, 11 | hierclsxm_path = "", 12 | detail = FALSE, 13 | drhier = TRUE, 14 | namespace = FALSE 15 | ) 16 | } 17 | \arguments{ 18 | \item{dv8_path}{path to DV8 binary} 19 | 20 | \item{mdsmb_path}{path to mdsmb binary file created by \code{\link{dv8_gitnumstat_to_hdsmb}}} 21 | 22 | \item{excel_path}{path to output excel file} 23 | 24 | \item{hierclsxm_path}{path to clustering file used to order files in spreadsheet from \code{\link{dv8_mdsmb_to_hierclsxb}}} 25 | 26 | \item{detail}{if TRUE, include details within each cell in spreadsheet, default FALSE} 27 | 28 | \item{drhier}{if TRUE, use recursive drh clustering in spreadsheet, default FALSE} 29 | 30 | \item{namespace}{if TRUE, use namespace clustering in spreadsheet, default FALSE} 31 | } 32 | \value{ 33 | the excel_path 34 | } 35 | \description{ 36 | Creates a \*.xlsx from a \*.dv8-dsm file 37 | } 38 | -------------------------------------------------------------------------------- /man/dv8_mdsmb_to_hierclsxb.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dv8.R 3 | \name{dv8_mdsmb_to_hierclsxb} 4 | \alias{dv8_mdsmb_to_hierclsxb} 5 | \title{Computes the design rule hierarchy for a mdsm binary file} 6 | \usage{ 7 | dv8_mdsmb_to_hierclsxb( 8 | dv8_path, 9 | mdsmb_path, 10 | hierclsxb_path, 11 | max_depth = "", 12 | modules = FALSE, 13 | recursive = FALSE 14 | ) 15 | } 16 | \arguments{ 17 | \item{dv8_path}{path to DV8 binary} 18 | 19 | \item{mdsmb_path}{path to mdsm binary file created by \code{\link{dv8_gitnumstat_to_hdsmb}}} 20 | 21 | \item{hierclsxb_path}{name of output file} 22 | 23 | \item{max_depth}{recursion depth limit} 24 | 25 | \item{modules}{merge modules following same design rules if switched on} 26 | 27 | \item{recursive}{use recursive algorithm if switched on} 28 | } 29 | \value{ 30 | the hierclsxb_path 31 | } 32 | \description{ 33 | Creates a \*.dv8-clsx file from a \*.dv8-dsm file 34 | } 35 | \seealso{ 36 | \code{\link{dv8_mdsmb_drhier_to_excel}} for exporting `*-clsx.dv8-clsx` to excel `-clsx.xlsx`, or 37 | \code{\link{dv8_clsxb_to_clsxj}} and \code{\link{parse_dv8_clusters}} for conversion and parsing. 38 | } 39 | -------------------------------------------------------------------------------- /man/get_github_issue_or_pr_comment_path.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/config.R 3 | \name{get_github_issue_or_pr_comment_path} 4 | \alias{get_github_issue_or_pr_comment_path} 5 | \title{Returns the local folder path for GitHub Issue or Pull Request comments for 6 | a specific project key.} 7 | \usage{ 8 | get_github_issue_or_pr_comment_path(config_file, project_key_index) 9 | } 10 | \arguments{ 11 | \item{config_file}{The parsed configuration file obtained from \code{\link{parse_config}}.} 12 | 13 | \item{project_key_index}{The name of the index of the project key (e.g. "project_key_1" or "project_key_2").} 14 | } 15 | \value{ 16 | The local folder path for GitHub Issues or PR comments for project specified by key `project_key_index`. 17 | } 18 | \description{ 19 | This function returns the local folder path for GitHub Issue or 20 | Pull Request comments for a specific project key, that is specified in the 21 | input parameter `config_file`. The input, `config_file` must be a parsed 22 | configuration file. The function will inform the user if the local folder 23 | path for the comments exists in the parsed configuration file, `config_file`. 24 | } 25 | -------------------------------------------------------------------------------- /man/motif_factory_triangle.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/motif.R 3 | \name{motif_factory_triangle} 4 | \alias{motif_factory_triangle} 5 | \title{Triangle Motif} 6 | \usage{ 7 | motif_factory_triangle() 8 | } 9 | \description{ 10 | Triangle motifs represent two developers who communicate when 11 | changing a file. This is seeing as a "positive" motif: We expect 12 | developers will communicate when changing the same file. To obtain 13 | the project's network for this motif, refer to 14 | \code{\link{transform_gitlog_to_bipartite_network}} and 15 | \code{\link{transform_reply_to_bipartite_network}}. 16 | } 17 | \references{ 18 | W. Mauerer, M. Joblin, D. A. Tamburri, C. Paradis, R. Kazman and S. Apel, 19 | "In Search of Socio-Technical Congruence: A Large-Scale Longitudinal Study," 20 | in IEEE Transactions on Software Engineering, vol. 48, no. 8, pp. 3159-3184, 21 | 1 Aug. 2022, doi: 10.1109/TSE.2021.3082074. 22 | } 23 | \seealso{ 24 | Other motif: 25 | \code{\link{motif_factory_anti_square}()}, 26 | \code{\link{motif_factory_anti_triangle}()}, 27 | \code{\link{motif_factory_square}()}, 28 | \code{\link{motif_factory}()} 29 | } 30 | \concept{motif} 31 | -------------------------------------------------------------------------------- /man/motif_factory_anti_triangle.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/motif.R 3 | \name{motif_factory_anti_triangle} 4 | \alias{motif_factory_anti_triangle} 5 | \title{Anti-Triangle Motif} 6 | \usage{ 7 | motif_factory_anti_triangle() 8 | } 9 | \description{ 10 | Triangle motifs represent two developers who do NOT communicate when 11 | changing a file. This is seeing as a "positive" motif: We expect 12 | developers will communicate when changing the same file. To obtain 13 | the project's network for this motif, refer to 14 | \code{\link{transform_gitlog_to_bipartite_network}} and 15 | \code{\link{transform_reply_to_bipartite_network}}. 16 | } 17 | \references{ 18 | W. Mauerer, M. Joblin, D. A. Tamburri, C. Paradis, R. Kazman and S. Apel, 19 | "In Search of Socio-Technical Congruence: A Large-Scale Longitudinal Study," 20 | in IEEE Transactions on Software Engineering, vol. 48, no. 8, pp. 3159-3184, 21 | 1 Aug. 2022, doi: 10.1109/TSE.2021.3082074. 22 | } 23 | \seealso{ 24 | Other motif: 25 | \code{\link{motif_factory_anti_square}()}, 26 | \code{\link{motif_factory_square}()}, 27 | \code{\link{motif_factory_triangle}()}, 28 | \code{\link{motif_factory}()} 29 | } 30 | \concept{motif} 31 | -------------------------------------------------------------------------------- /man/parse_r_function_dependencies.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/ast.R 3 | \name{parse_r_function_dependencies} 4 | \alias{parse_r_function_dependencies} 5 | \title{Parse R Function Dependencies} 6 | \usage{ 7 | parse_r_function_dependencies(parsed_r_file, function_definition) 8 | } 9 | \arguments{ 10 | \item{parsed_r_file}{A parsed R file (see \code{\link{parse_rfile_ast}})} 11 | 12 | \item{function_definition}{A list of function definitions (see \code{\link{parse_r_function_definition}})} 13 | } 14 | \value{ 15 | Returns a table of 6 columns: src_functions_call_name | src_functions_call_filename | 16 | sr_functions_caller_name | src_functions_caller_filename | src_line_functions_call_start | 17 | src_line_functions_call_end. 18 | 19 | The `call` name and filename are the function calls this files perform towards other files. The 20 | `caller` name and filename define which functions performed the function call (i.e. the call originate 21 | on them). Finally the `call` start and end lines define the line position of `src_functions_call_filename` 22 | where the call occurred. 23 | } 24 | \description{ 25 | Identify function calls in an R File. 26 | } 27 | \keyword{internal} 28 | -------------------------------------------------------------------------------- /man/format_submitted_at_from_file.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{format_submitted_at_from_file} 4 | \alias{format_submitted_at_from_file} 5 | \title{Retrieve greatest 'submitted_at' value from file} 6 | \usage{ 7 | format_submitted_at_from_file(file_name, item_path) 8 | } 9 | \arguments{ 10 | \item{file_name}{the path and the file name. For example: 11 | ../../rawdata/github/kaiaulu/issue_or_pr_comment/sailuh_kaiaulu_issue_or_pr_comment_1701216000_1701261374.json} 12 | 13 | \item{item_path}{specifies the level of nesting to look for the created_at value. This was 14 | implemented given that the results of the search endpoint are differently nested than others.} 15 | } 16 | \description{ 17 | Function to read a JSON file along a path and return the 'submitted_at' 18 | date of the greatest value for the issue key. Note that the 'submitted_at' 19 | value differs in how it is nested. This format is returned by the 20 | review endpoint currently. 21 | } 22 | \seealso{ 23 | \code{link{github_api_project_issue_or_pr_comment_refresh}} to refresh comment data 24 | 25 | \code{link{github_api_project_issue_refresh}} to refresh issue data 26 | } 27 | \keyword{internal} 28 | -------------------------------------------------------------------------------- /man/smell_radio_silence.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/smells.R 3 | \name{smell_radio_silence} 4 | \alias{smell_radio_silence} 5 | \title{Radio Silence Social Smell.} 6 | \usage{ 7 | smell_radio_silence(mail.graph, clusters) 8 | } 9 | \arguments{ 10 | \item{mail.graph}{A uni-modal network G = (V,E), where V are 11 | developers (authors or contributors) and E is a collaboration between developers 12 | in the mailing list} 13 | 14 | \item{clusters}{Clusters obtained via community detection of mail.graph network.} 15 | } 16 | \description{ 17 | Given the communication graph and its sub-communities, 18 | return the ids of unique boundary spanners towards another 19 | sub-community, generation this smell. For conceptual 20 | details please see references. 21 | } 22 | \references{ 23 | D. A. Tamburri, F. Palomba and R. Kazman, 24 | "Exploring Community Smells in Open-Source: An Automated Approach" 25 | in IEEE Transactions on Software Engineering, vol. 47, no. 3, 26 | pp. 630-652, 1 March 2021, doi: 10.1109/TSE.2019.2901490. 27 | 28 | Simone Magnoni (2016). An approach to measure Community 29 | Smells in software development communities. (Doctoral dissertation, Politecnico Milano). 30 | } 31 | -------------------------------------------------------------------------------- /man/commit_message_id_coverage.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/metric.R 3 | \name{commit_message_id_coverage} 4 | \alias{commit_message_id_coverage} 5 | \title{Commit Message Id Coverage Metric} 6 | \usage{ 7 | commit_message_id_coverage(git_log, commit_message_id_regex) 8 | } 9 | \arguments{ 10 | \item{git_log}{a parsed git log table where each row is identified by commit+file} 11 | 12 | \item{commit_message_id_regex}{the regex to extract the id from the commit message 13 | in the table} 14 | } 15 | \value{ 16 | a single numeric value with the number of commits which contains the id 17 | } 18 | \description{ 19 | Calculates the number of commits from the git log which contains the message id. 20 | } 21 | \seealso{ 22 | \code{\link{parse_gitlog}} to obtain additions and deletions from gitlog 23 | 24 | Other metrics: 25 | \code{\link{metric_churn_per_commit_interval}()}, 26 | \code{\link{metric_churn_per_commit_per_file}()}, 27 | \code{\link{metric_churn}()}, 28 | \code{\link{metric_file_bug_churn}()}, 29 | \code{\link{metric_file_bug_frequency}()}, 30 | \code{\link{metric_file_churn}()}, 31 | \code{\link{metric_file_non_bug_churn}()}, 32 | \code{\link{metric_file_non_bug_frequency}()} 33 | } 34 | \concept{metrics} 35 | -------------------------------------------------------------------------------- /man/filter_by_commit_size.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/filter.R 3 | \name{filter_by_commit_size} 4 | \alias{filter_by_commit_size} 5 | \title{Filter by number of files in commit} 6 | \usage{ 7 | filter_by_commit_size(project_git, commit_size = 30) 8 | } 9 | \arguments{ 10 | \item{project_git}{The parsed `project_git` file obtained from \code{\link{parse_gitlog}}.} 11 | 12 | \item{commit_size}{Commits which modify a number of files greater than this threshold are deleted from 13 | `project_git`.} 14 | } 15 | \value{ 16 | a data.table which only contain file changes to commits less or equal than `commit_size. 17 | } 18 | \description{ 19 | If a commit modified more than `commit_size` files, then all file changes in `project_git` 20 | associated to the commit are deleted from the table. Specifying a `commit_size` is useful 21 | to decrease threats to validity on "migration commits" when performing a graph projection 22 | on a file-commit network to obtain co-change.(e.g. \code{\link{transform_gitlog_to_hdsmj}}). 23 | } 24 | \seealso{ 25 | Other filters: 26 | \code{\link{filter_by_commit_interval}()}, 27 | \code{\link{filter_by_file_extension}()}, 28 | \code{\link{filter_by_filepath_substring}()} 29 | } 30 | \concept{filters} 31 | -------------------------------------------------------------------------------- /man/github_api_issue_pr_comments.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_issue_pr_comments} 4 | \alias{github_api_issue_pr_comments} 5 | \title{Download Project Issue's or Pull Request's Comments by specific pull request number.} 6 | \usage{ 7 | github_api_issue_pr_comments(owner, repo, issue_number, token) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{issue_number}{The number that identifies the issue} 15 | 16 | \item{token}{Your GitHub API token} 17 | } 18 | \description{ 19 | Download Issues' and Pull Request's Comments from "GET /repos/\{owner\}/\{repo\}/issues/comments" endpoint. 20 | All Pull Requests are counted as Issues, but not all Issues are Pull Requests 21 | Optional parameter since is used to download comments updated after the specified date. 22 | If the value of since is NULL, it is not passed to the API call and all comments are downloaded. 23 | } 24 | \references{ 25 | For details, see \url{https://docs.github.com/en/rest/issues/comments?apiVersion=2022-11-28#list-issue-comments} and 26 | \url{https://docs.github.com/en/rest/guides/working-with-comments#pull-request-comments}. 27 | } 28 | -------------------------------------------------------------------------------- /man/write_gof_patterns.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{write_gof_patterns} 4 | \alias{write_gof_patterns} 5 | \title{Write GoF Patterns} 6 | \usage{ 7 | write_gof_patterns( 8 | pattern4_path, 9 | class_folder_path, 10 | output_filepath = "/tmp/gof.xml" 11 | ) 12 | } 13 | \arguments{ 14 | \item{pattern4_path}{The path to Tsantalis' pattern4 jar} 15 | 16 | \item{class_folder_path}{The path to a folder one 17 | level above subdirectories that contain the class files.} 18 | 19 | \item{output_filepath}{Optional path to store the XML generated by pattern4. If not 20 | specified, it will be saved to `/tmp/gof.xml`.} 21 | } 22 | \value{ 23 | A data.table containing the parsed gof patterns per class. 24 | } 25 | \description{ 26 | Write GoF patterns generated by `pattern4.jar` into a a table. 27 | \url{https://www.srcml.org/documentation.html}. 28 | Pattern4.jar is available on 29 | [Tsantalis' homepage](https://users.encs.concordia.ca/~nikolaos/pattern_detection.html)). 30 | } 31 | \references{ 32 | N. Tsantalis, A. Chatzigeorgiou, G. Stephanides, S. T. Halkidis, 33 | "Design Pattern Detection Using Similarity Scoring", 34 | IEEE Transactions on Software Engineering, 35 | vol. 32, no. 11, pp. 896-909, November, 2006. 36 | } 37 | -------------------------------------------------------------------------------- /man/transform_reply_to_bipartite_network.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/reply.R 3 | \name{transform_reply_to_bipartite_network} 4 | \alias{transform_reply_to_bipartite_network} 5 | \title{Transform parsed mbox or parsed jira replies into a network} 6 | \usage{ 7 | transform_reply_to_bipartite_network(project_reply) 8 | } 9 | \arguments{ 10 | \item{project_reply}{A parsed mbox by \code{\link{parse_mbox}} or \code{\link{parse_jira_replies}}.} 11 | } 12 | \description{ 13 | Transform parsed mbox or parsed jira replies into a network 14 | } 15 | \seealso{ 16 | Other edgelists: 17 | \code{\link{transform_commit_message_id_to_network}()}, 18 | \code{\link{transform_cve_cwe_file_to_network}()}, 19 | \code{\link{transform_dependencies_to_network}()}, 20 | \code{\link{transform_dependencies_to_sdsmj}()}, 21 | \code{\link{transform_gitlog_to_bipartite_network}()}, 22 | \code{\link{transform_gitlog_to_entity_bipartite_network}()}, 23 | \code{\link{transform_gitlog_to_entity_temporal_network}()}, 24 | \code{\link{transform_gitlog_to_hdsmj}()}, 25 | \code{\link{transform_gitlog_to_temporal_network}()}, 26 | \code{\link{transform_temporal_gitlog_to_adsmj}()}, 27 | \code{\link{transform_understand_dependencies_to_network}()} 28 | } 29 | \concept{edgelists} 30 | -------------------------------------------------------------------------------- /man/github_api_project_pull_request_inline_comments.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_project_pull_request_inline_comments} 4 | \alias{github_api_project_pull_request_inline_comments} 5 | \title{Download Project's Pull Request Inline Comments} 6 | \usage{ 7 | github_api_project_pull_request_inline_comments( 8 | owner, 9 | repo, 10 | token, 11 | since = NULL 12 | ) 13 | } 14 | \arguments{ 15 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 16 | 17 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 18 | 19 | \item{token}{Your GitHub API token} 20 | 21 | \item{since}{Optional parameter to specify pulling only comments updated after this date} 22 | } 23 | \description{ 24 | Downloads the Pull Request Comments from `GET /repos/{owner}/{repo}/pulls/comments` endpoint. 25 | Optional parameter since is used to download comments updated after the specified date. 26 | If the value of since is NULL, it is not passed to the API call and all comments are downloaded. 27 | NOTE: This function is different from the `github_api_project_issue_or_pr_comments`. 28 | } 29 | \references{ 30 | For details, see \url{https://docs.github.com/en/rest/pulls/comments?apiVersion=2022-11-28#about-pull-request-review-comments} 31 | } 32 | -------------------------------------------------------------------------------- /man/dv8_clsxj_to_clsxb.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dv8.R 3 | \name{dv8_clsxj_to_clsxb} 4 | \alias{dv8_clsxj_to_clsxb} 5 | \title{Convert a json cluster file, clsxj, to a binary cluster file, clsxb.} 6 | \usage{ 7 | dv8_clsxj_to_clsxb(dv8_path, clsxj_path, clsxb_path) 8 | } 9 | \arguments{ 10 | \item{dv8_path}{path to dv8 binary} 11 | 12 | \item{clsxj_path}{path to JSON cluster created by \code{\link{dv8_mdsmb_to_hierclsxb}}} 13 | 14 | \item{clsxb_path}{path to save the DV8 binary cluster} 15 | } 16 | \value{ 17 | the clsxb_path 18 | } 19 | \description{ 20 | An input file \*-hier.json is converted to \*-clsx.dv8-clsx. 21 | } 22 | \seealso{ 23 | Other dv8: 24 | \code{\link{dependencies_to_sdsmj}()}, 25 | \code{\link{dv8_clsxb_to_clsxj}()}, 26 | \code{\link{dv8_depends_to_sdsmj}()}, 27 | \code{\link{dv8_dsmj_to_dsmb}()}, 28 | \code{\link{dv8_hdsmb_sdsmb_to_mdsmb}()}, 29 | \code{\link{dv8_mdsmb_to_flaws}()}, 30 | \code{\link{gitlog_to_hdsmj}()}, 31 | \code{\link{graph_to_dsmj}()}, 32 | \code{\link{parse_dv8_architectural_flaws}()}, 33 | \code{\link{parse_dv8_clusters}()}, 34 | \code{\link{transform_dependencies_to_sdsmj}()}, 35 | \code{\link{transform_gitlog_to_hdsmj}()}, 36 | \code{\link{transform_temporal_gitlog_to_adsmj}()} 37 | } 38 | \concept{dv8} 39 | -------------------------------------------------------------------------------- /man/dv8_clsxb_to_clsxj.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dv8.R 3 | \name{dv8_clsxb_to_clsxj} 4 | \alias{dv8_clsxb_to_clsxj} 5 | \title{Transforms a DV8 binary cluster file to a json cluster file.} 6 | \usage{ 7 | dv8_clsxb_to_clsxj(dv8_path, clsxb_path, clsxj_path) 8 | } 9 | \arguments{ 10 | \item{dv8_path}{path to dv8 binary} 11 | 12 | \item{clsxb_path}{path to clsx to convert created by \code{\link{dv8_mdsmb_to_hierclsxb}}} 13 | 14 | \item{clsxj_path}{path to save output file} 15 | } 16 | \value{ 17 | the clsxj_path 18 | } 19 | \description{ 20 | Converts a clustering binary in the dv8 format *-clsx.dv8-cslx into a 21 | *-clsx.json. 22 | } 23 | \seealso{ 24 | Other dv8: 25 | \code{\link{dependencies_to_sdsmj}()}, 26 | \code{\link{dv8_clsxj_to_clsxb}()}, 27 | \code{\link{dv8_depends_to_sdsmj}()}, 28 | \code{\link{dv8_dsmj_to_dsmb}()}, 29 | \code{\link{dv8_hdsmb_sdsmb_to_mdsmb}()}, 30 | \code{\link{dv8_mdsmb_to_flaws}()}, 31 | \code{\link{gitlog_to_hdsmj}()}, 32 | \code{\link{graph_to_dsmj}()}, 33 | \code{\link{parse_dv8_architectural_flaws}()}, 34 | \code{\link{parse_dv8_clusters}()}, 35 | \code{\link{transform_dependencies_to_sdsmj}()}, 36 | \code{\link{transform_gitlog_to_hdsmj}()}, 37 | \code{\link{transform_temporal_gitlog_to_adsmj}()} 38 | } 39 | \concept{dv8} 40 | -------------------------------------------------------------------------------- /man/transform_dependencies_to_network.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{transform_dependencies_to_network} 4 | \alias{transform_dependencies_to_network} 5 | \title{Transform parsed dependencies into a network} 6 | \usage{ 7 | transform_dependencies_to_network(depends_parsed, weight_types = NA) 8 | } 9 | \arguments{ 10 | \item{depends_parsed}{A parsed mbox by \code{\link{parse_dependencies}}.} 11 | 12 | \item{weight_types}{The weight types as defined in Depends.} 13 | } 14 | \description{ 15 | Transform parsed dependencies into a network 16 | } 17 | \seealso{ 18 | Other edgelists: 19 | \code{\link{transform_commit_message_id_to_network}()}, 20 | \code{\link{transform_cve_cwe_file_to_network}()}, 21 | \code{\link{transform_dependencies_to_sdsmj}()}, 22 | \code{\link{transform_gitlog_to_bipartite_network}()}, 23 | \code{\link{transform_gitlog_to_entity_bipartite_network}()}, 24 | \code{\link{transform_gitlog_to_entity_temporal_network}()}, 25 | \code{\link{transform_gitlog_to_hdsmj}()}, 26 | \code{\link{transform_gitlog_to_temporal_network}()}, 27 | \code{\link{transform_reply_to_bipartite_network}()}, 28 | \code{\link{transform_temporal_gitlog_to_adsmj}()}, 29 | \code{\link{transform_understand_dependencies_to_network}()} 30 | } 31 | \concept{edgelists} 32 | -------------------------------------------------------------------------------- /man/github_api_project_issue_or_pr_comments.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{github_api_project_issue_or_pr_comments} 4 | \alias{github_api_project_issue_or_pr_comments} 5 | \title{Download Project Issue's or Pull Request's Comments} 6 | \usage{ 7 | github_api_project_issue_or_pr_comments(owner, repo, token, since = NULL) 8 | } 9 | \arguments{ 10 | \item{owner}{GitHub's repository owner (e.g. sailuh)} 11 | 12 | \item{repo}{GitHub's repository name (e.g. kaiaulu)} 13 | 14 | \item{token}{Your GitHub API token} 15 | 16 | \item{since}{Optional parameter to specify pulling only comments updated after this date} 17 | } 18 | \description{ 19 | Download Issues' and Pull Request's Comments from "GET /repos/{owner}/{repo}/issues/comments" endpoint. 20 | All Pull Requests are counted as Issues, but not all Issues are Pull Requests 21 | Optional parameter since is used to download comments updated after the specified date. 22 | If the value of since is NULL, it is not passed to the API call and all comments are downloaded. 23 | } 24 | \references{ 25 | For details, see \url{https://docs.github.com/en/rest/reference/issues#list-issue-comments-for-a-repository} and 26 | \url{https://docs.github.com/en/rest/guides/working-with-comments#pull-request-comments}. 27 | } 28 | -------------------------------------------------------------------------------- /man/format_created_at_from_file.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{format_created_at_from_file} 4 | \alias{format_created_at_from_file} 5 | \title{Retrieve greatest 'created_at' value from file} 6 | \usage{ 7 | format_created_at_from_file(file_name, item_path) 8 | } 9 | \arguments{ 10 | \item{file_name}{the path and the file name. For example: 11 | ../../rawdata/github/kaiaulu/issue_or_pr_comment/sailuh_kaiaulu_issue_or_pr_comment_1701216000_1701261374.json} 12 | 13 | \item{item_path}{specifies the level of nesting to look for the created_at value. This was 14 | implemented given that the results of the search endpoint are differently nested than others.} 15 | } 16 | \description{ 17 | Function to read a JSON file along a path and return the 'created_at' 18 | date of the greatest value for the issue key. Note that the 'created_at' 19 | value differs in how it is nested. This format is returned by the 20 | issue endpoint currently, but is in level 2 of data returned by search endpoint. 21 | So we allow the input of an item_path parameter to specify the level of nesting 22 | } 23 | \seealso{ 24 | \code{link{github_api_project_issue_or_pr_comment_refresh}} to refresh comment data 25 | 26 | \code{link{github_api_project_issue_refresh}} to refresh issue data 27 | } 28 | \keyword{internal} 29 | -------------------------------------------------------------------------------- /man/transform_cve_cwe_file_to_network.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/vulnerabilities.R 3 | \name{transform_cve_cwe_file_to_network} 4 | \alias{transform_cve_cwe_file_to_network} 5 | \title{Transform parsed cveid and nvdfeed into a network} 6 | \usage{ 7 | transform_cve_cwe_file_to_network(project_cve, nvd_feed) 8 | } 9 | \arguments{ 10 | \item{project_cve}{A parsed cve edgelist by \code{\link{transform_commit_message_id_to_network}}.} 11 | 12 | \item{nvd_feed}{Parsed nvdfeed by \code{\link{parse_nvdfeed}}.} 13 | } 14 | \description{ 15 | Transform parsed cveid and nvdfeed into a network 16 | } 17 | \seealso{ 18 | Other edgelists: 19 | \code{\link{transform_commit_message_id_to_network}()}, 20 | \code{\link{transform_dependencies_to_network}()}, 21 | \code{\link{transform_dependencies_to_sdsmj}()}, 22 | \code{\link{transform_gitlog_to_bipartite_network}()}, 23 | \code{\link{transform_gitlog_to_entity_bipartite_network}()}, 24 | \code{\link{transform_gitlog_to_entity_temporal_network}()}, 25 | \code{\link{transform_gitlog_to_hdsmj}()}, 26 | \code{\link{transform_gitlog_to_temporal_network}()}, 27 | \code{\link{transform_reply_to_bipartite_network}()}, 28 | \code{\link{transform_temporal_gitlog_to_adsmj}()}, 29 | \code{\link{transform_understand_dependencies_to_network}()} 30 | } 31 | \concept{edgelists} 32 | -------------------------------------------------------------------------------- /man/download_bugzilla_perceval_traditional_issue_comments.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/bugzilla.R 3 | \name{download_bugzilla_perceval_traditional_issue_comments} 4 | \alias{download_bugzilla_perceval_traditional_issue_comments} 5 | \title{Download Bugzilla issues and comments using Perceval traditional backend.} 6 | \usage{ 7 | download_bugzilla_perceval_traditional_issue_comments( 8 | perceval_path, 9 | bugzilla_site, 10 | datetime, 11 | save_file_path, 12 | max_bugs = 500 13 | ) 14 | } 15 | \arguments{ 16 | \item{perceval_path}{path to perceval binary} 17 | 18 | \item{bugzilla_site}{link to specific bugzilla site} 19 | 20 | \item{datetime}{fetch bugs updated since this date (in any ISO 8601 format, e.g., 'YYYY-MM-DD HH:mm:SS+|-HH:MM'))} 21 | 22 | \item{save_file_path}{the file path, name and extension (should be .json) to save the file.} 23 | 24 | \item{max_bugs}{the maximum number of bugs requested on the same query. Note: Some sites might have restrictions on the number of bugs in one request.} 25 | } 26 | \value{ 27 | path to downloaded json file. 28 | } 29 | \description{ 30 | Download Bugzilla issues and comments using Perceval traditional backend. 31 | } 32 | \seealso{ 33 | \code{\link{parse_bugzilla_perceval_traditional_issue_comments}} a parser function to parse bugzilla data 34 | } 35 | -------------------------------------------------------------------------------- /man/motif_factory_square.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/motif.R 3 | \name{motif_factory_square} 4 | \alias{motif_factory_square} 5 | \title{Square Motif} 6 | \usage{ 7 | motif_factory_square() 8 | } 9 | \description{ 10 | Square motifs represent two developers who communicate when 11 | changing two different files that have a dependency. 12 | This is seeing as a "positive" motif: We expect 13 | developers will communicate when changing different files which 14 | have a dependency. To obtain 15 | the project's network for this motif, refer to 16 | \code{\link{transform_gitlog_to_bipartite_network}}, 17 | \code{\link{transform_reply_to_bipartite_network}}, and 18 | \code{\link{transform_r_dependencies_to_network}} or 19 | \code{\link{transform_dependencies_to_network}}. 20 | } 21 | \references{ 22 | W. Mauerer, M. Joblin, D. A. Tamburri, C. Paradis, R. Kazman and S. Apel, 23 | "In Search of Socio-Technical Congruence: A Large-Scale Longitudinal Study," 24 | in IEEE Transactions on Software Engineering, vol. 48, no. 8, pp. 3159-3184, 25 | 1 Aug. 2022, doi: 10.1109/TSE.2021.3082074. 26 | } 27 | \seealso{ 28 | Other motif: 29 | \code{\link{motif_factory_anti_square}()}, 30 | \code{\link{motif_factory_anti_triangle}()}, 31 | \code{\link{motif_factory_triangle}()}, 32 | \code{\link{motif_factory}()} 33 | } 34 | \concept{motif} 35 | -------------------------------------------------------------------------------- /man/transform_understand_dependencies_to_network.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{transform_understand_dependencies_to_network} 4 | \alias{transform_understand_dependencies_to_network} 5 | \title{Transform Understand Dependencies} 6 | \usage{ 7 | transform_understand_dependencies_to_network(parsed, weight_types) 8 | } 9 | \arguments{ 10 | \item{parsed}{Parsed table from \code{\link{parse_understand_dependencies}}} 11 | 12 | \item{weight_types}{The weight types as defined in Depends. Accepts single string and vector input} 13 | } 14 | \description{ 15 | This function subsets a parsed table from parse_understand_dependencies 16 | } 17 | \seealso{ 18 | Other edgelists: 19 | \code{\link{transform_commit_message_id_to_network}()}, 20 | \code{\link{transform_cve_cwe_file_to_network}()}, 21 | \code{\link{transform_dependencies_to_network}()}, 22 | \code{\link{transform_dependencies_to_sdsmj}()}, 23 | \code{\link{transform_gitlog_to_bipartite_network}()}, 24 | \code{\link{transform_gitlog_to_entity_bipartite_network}()}, 25 | \code{\link{transform_gitlog_to_entity_temporal_network}()}, 26 | \code{\link{transform_gitlog_to_hdsmj}()}, 27 | \code{\link{transform_gitlog_to_temporal_network}()}, 28 | \code{\link{transform_reply_to_bipartite_network}()}, 29 | \code{\link{transform_temporal_gitlog_to_adsmj}()} 30 | } 31 | \concept{edgelists} 32 | -------------------------------------------------------------------------------- /man/motif_factory_anti_square.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/motif.R 3 | \name{motif_factory_anti_square} 4 | \alias{motif_factory_anti_square} 5 | \title{Anti-Square Motif} 6 | \usage{ 7 | motif_factory_anti_square() 8 | } 9 | \description{ 10 | Square motifs represent two developers who do NOT communicate when 11 | changing two different files that have a dependency. 12 | This is seeing as a "positive" motif: We expect 13 | developers will communicate when changing different files which 14 | have a dependency. To obtain 15 | the project's network for this motif, refer to 16 | \code{\link{transform_gitlog_to_bipartite_network}}, 17 | \code{\link{transform_reply_to_bipartite_network}}, and 18 | \code{\link{transform_r_dependencies_to_network}} or 19 | \code{\link{transform_dependencies_to_network}}. 20 | } 21 | \references{ 22 | W. Mauerer, M. Joblin, D. A. Tamburri, C. Paradis, R. Kazman and S. Apel, 23 | "In Search of Socio-Technical Congruence: A Large-Scale Longitudinal Study," 24 | in IEEE Transactions on Software Engineering, vol. 48, no. 8, pp. 3159-3184, 25 | 1 Aug. 2022, doi: 10.1109/TSE.2021.3082074. 26 | } 27 | \seealso{ 28 | Other motif: 29 | \code{\link{motif_factory_anti_triangle}()}, 30 | \code{\link{motif_factory_square}()}, 31 | \code{\link{motif_factory_triangle}()}, 32 | \code{\link{motif_factory}()} 33 | } 34 | \concept{motif} 35 | -------------------------------------------------------------------------------- /man/parse_nvdfeed.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/vulnerabilities.R 3 | \name{parse_nvdfeed} 4 | \alias{parse_nvdfeed} 5 | \title{Parse NVD Feed CVEs, descriptions and CWE ids} 6 | \usage{ 7 | parse_nvdfeed(nvdfeed_folder_path) 8 | } 9 | \arguments{ 10 | \item{nvdfeed_folder_path}{Folderpath for nvd feed files 11 | under schema 1.1 (e.g. nvdcve-1.1-2018.json)} 12 | } 13 | \description{ 14 | Parse NVD Feed CVEs, descriptions and CWE ids 15 | } 16 | \seealso{ 17 | Other parsers: 18 | \code{\link{build_understand_project}()}, 19 | \code{\link{export_understand_dependencies}()}, 20 | \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, 21 | \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, 22 | \code{\link{parse_bugzilla_rest_comments}()}, 23 | \code{\link{parse_bugzilla_rest_issues_comments}()}, 24 | \code{\link{parse_bugzilla_rest_issues}()}, 25 | \code{\link{parse_commit_message_id}()}, 26 | \code{\link{parse_dependencies}()}, 27 | \code{\link{parse_dv8_clusters}()}, 28 | \code{\link{parse_github_latest_date}()}, 29 | \code{\link{parse_gitlog}()}, 30 | \code{\link{parse_jira_latest_date}()}, 31 | \code{\link{parse_jira_rss_xml}()}, 32 | \code{\link{parse_jira}()}, 33 | \code{\link{parse_mbox_latest_date}()}, 34 | \code{\link{parse_mbox}()}, 35 | \code{\link{parse_understand_dependencies}()} 36 | } 37 | \concept{parsers} 38 | -------------------------------------------------------------------------------- /man/smell_organizational_silo.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/smells.R 3 | \name{smell_organizational_silo} 4 | \alias{smell_organizational_silo} 5 | \title{Organizational Silo Social Smell} 6 | \usage{ 7 | smell_organizational_silo(mail.graph, code.graph) 8 | } 9 | \arguments{ 10 | \item{mail.graph}{A uni-modal network G = (V,E), where V are 11 | developers (authors or contributors) and E is a collaboration between developers 12 | in the mailing list} 13 | 14 | \item{code.graph}{A uni-modal network G = (V,E), where V are 15 | developers (authors or contributors) and E is a collaboration between developers 16 | in the git log.} 17 | } 18 | \description{ 19 | Given the communication and collaboration graphs (mailing lists and VCS) 20 | return the collaboration edges, analyzed in groups of two devs, in 21 | which one of co-committing devs do not communicate at all. For conceptual 22 | details please see references. 23 | } 24 | \references{ 25 | D. A. Tamburri, F. Palomba and R. Kazman, 26 | "Exploring Community Smells in Open-Source: An Automated Approach" 27 | in IEEE Transactions on Software Engineering, vol. 47, no. 3, 28 | pp. 630-652, 1 March 2021, doi: 10.1109/TSE.2019.2901490. 29 | 30 | Simone Magnoni (2016). An approach to measure Community 31 | Smells in software development communities. (Doctoral dissertation, Politecnico Milano). 32 | } 33 | -------------------------------------------------------------------------------- /man/download_bugzilla_rest_issues_comments.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/bugzilla.R 3 | \name{download_bugzilla_rest_issues_comments} 4 | \alias{download_bugzilla_rest_issues_comments} 5 | \title{Download project data (issues and comments) from bugzilla site 6 | Note: The first comment in every issue is the issue description} 7 | \usage{ 8 | download_bugzilla_rest_issues_comments( 9 | bugzilla_site, 10 | start_timestamp, 11 | save_folder_path, 12 | limit_upperbound = 500 13 | ) 14 | } 15 | \arguments{ 16 | \item{bugzilla_site}{URL to specific bugzilla site} 17 | 18 | \item{start_timestamp}{when to start bug retrieval (ex. 2023-01-01T00:14:57Z)} 19 | 20 | \item{save_folder_path}{the full *folder* path where the bugzilla issues will be stored} 21 | 22 | \item{limit_upperbound}{the number of issues saved in each page file. Some bugzilla sites have limits set on how many bugs 23 | can be retrieved in one GET request, in which case, the limit set by the bugzilla site will be used in place of 24 | limit_upperbound to ensure full bug retrieval.} 25 | } 26 | \description{ 27 | Download project data (issues and comments) from bugzilla site 28 | Note: The first comment in every issue is the issue description 29 | } 30 | \seealso{ 31 | \code{\link{parse_bugzilla_rest_issues_comments}} a parser function to parse Bugzilla issues and comments data 32 | } 33 | -------------------------------------------------------------------------------- /man/transform_commit_message_id_to_network.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{transform_commit_message_id_to_network} 4 | \alias{transform_commit_message_id_to_network} 5 | \title{Transform parsed git repo commit messages id and files into an edgelist} 6 | \usage{ 7 | transform_commit_message_id_to_network(project_git, commit_message_id_regex) 8 | } 9 | \arguments{ 10 | \item{project_git}{A parsed git project by \code{\link{parse_gitlog}}.} 11 | 12 | \item{commit_message_id_regex}{the regex to extract the id from the commit message} 13 | } 14 | \description{ 15 | Transform parsed git repo commit messages id and files into an edgelist 16 | } 17 | \seealso{ 18 | Other edgelists: 19 | \code{\link{transform_cve_cwe_file_to_network}()}, 20 | \code{\link{transform_dependencies_to_network}()}, 21 | \code{\link{transform_dependencies_to_sdsmj}()}, 22 | \code{\link{transform_gitlog_to_bipartite_network}()}, 23 | \code{\link{transform_gitlog_to_entity_bipartite_network}()}, 24 | \code{\link{transform_gitlog_to_entity_temporal_network}()}, 25 | \code{\link{transform_gitlog_to_hdsmj}()}, 26 | \code{\link{transform_gitlog_to_temporal_network}()}, 27 | \code{\link{transform_reply_to_bipartite_network}()}, 28 | \code{\link{transform_temporal_gitlog_to_adsmj}()}, 29 | \code{\link{transform_understand_dependencies_to_network}()} 30 | } 31 | \concept{edgelists} 32 | -------------------------------------------------------------------------------- /man/transform_gitlog_to_bipartite_network.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dv8.R 3 | \name{transform_gitlog_to_bipartite_network} 4 | \alias{transform_gitlog_to_bipartite_network} 5 | \title{Transform parsed git repo into an edgelist} 6 | \usage{ 7 | transform_gitlog_to_bipartite_network( 8 | project_git, 9 | mode = c("author-file", "committer-file", "commit-file", "author-committer") 10 | ) 11 | } 12 | \arguments{ 13 | \item{project_git}{A parsed git project by \code{\link{parse_gitlog}}.} 14 | 15 | \item{mode}{The network of interest: author-entity, committer-entity, commit-entity, author-committer} 16 | } 17 | \description{ 18 | Transform parsed git repo into an edgelist 19 | } 20 | \seealso{ 21 | Other edgelists: 22 | \code{\link{transform_commit_message_id_to_network}()}, 23 | \code{\link{transform_cve_cwe_file_to_network}()}, 24 | \code{\link{transform_dependencies_to_network}()}, 25 | \code{\link{transform_dependencies_to_sdsmj}()}, 26 | \code{\link{transform_gitlog_to_entity_bipartite_network}()}, 27 | \code{\link{transform_gitlog_to_entity_temporal_network}()}, 28 | \code{\link{transform_gitlog_to_hdsmj}()}, 29 | \code{\link{transform_gitlog_to_temporal_network}()}, 30 | \code{\link{transform_reply_to_bipartite_network}()}, 31 | \code{\link{transform_temporal_gitlog_to_adsmj}()}, 32 | \code{\link{transform_understand_dependencies_to_network}()} 33 | } 34 | \concept{edgelists} 35 | -------------------------------------------------------------------------------- /man/weight_scheme_sum_edges.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/graph.R 3 | \name{weight_scheme_sum_edges} 4 | \alias{weight_scheme_sum_edges} 5 | \title{Weight Edge Sum Projection Scheme} 6 | \usage{ 7 | weight_scheme_sum_edges(projected_graph) 8 | } 9 | \arguments{ 10 | \item{projected_graph}{A semi-processed bipartite projection network resulting} 11 | } 12 | \description{ 13 | This weight scheme sums the deleted node adjacent edges when re-wired 14 | in the projection graph. For most cases, this is the commonly used 15 | approach in the literature. 16 | } 17 | \details{ 18 | For example assume author A changes file1 three times, and 19 | author B changes file1 one time. A projection which returns 20 | a author-author network using this function would return, 21 | assuming this being the entire collaboration graph, 22 | that author A and author B have a connection of 3 + 1 = 4. 23 | 24 | Suppose now also that the entire collaboration graph contains 25 | another file2 such that author A and author B modified 2 and 3 26 | times respectively. Hence in the projection step, this would 27 | further contribute a 2 + 3 = 5 weight to authors A and B. In this 28 | graph, where file1 and file2 are present, the final weight for 29 | authors A and B would thus be (3 + 1) + (2 + 3) = 9. 30 | } 31 | \concept{weight_scheme 32 | from \code{\link{bipartite_graph_projection}} when specifying 33 | weight_scheme_function = NA.} 34 | -------------------------------------------------------------------------------- /man/parse_understand_dependencies.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/src.R 3 | \name{parse_understand_dependencies} 4 | \alias{parse_understand_dependencies} 5 | \title{Parse Scitools Understand Dependencies XML} 6 | \usage{ 7 | parse_understand_dependencies(dependencies_path) 8 | } 9 | \arguments{ 10 | \item{dependencies_path}{path to the exported Understand dependencies file (see \code{\link{export_understand_dependencies}}).} 11 | } 12 | \description{ 13 | Parses either a file or class scitools understand dependency XML to table. 14 | } 15 | \seealso{ 16 | Other parsers: 17 | \code{\link{build_understand_project}()}, 18 | \code{\link{export_understand_dependencies}()}, 19 | \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, 20 | \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, 21 | \code{\link{parse_bugzilla_rest_comments}()}, 22 | \code{\link{parse_bugzilla_rest_issues_comments}()}, 23 | \code{\link{parse_bugzilla_rest_issues}()}, 24 | \code{\link{parse_commit_message_id}()}, 25 | \code{\link{parse_dependencies}()}, 26 | \code{\link{parse_dv8_clusters}()}, 27 | \code{\link{parse_github_latest_date}()}, 28 | \code{\link{parse_gitlog}()}, 29 | \code{\link{parse_jira_latest_date}()}, 30 | \code{\link{parse_jira_rss_xml}()}, 31 | \code{\link{parse_jira}()}, 32 | \code{\link{parse_mbox_latest_date}()}, 33 | \code{\link{parse_mbox}()}, 34 | \code{\link{parse_nvdfeed}()} 35 | } 36 | \concept{parsers} 37 | -------------------------------------------------------------------------------- /man/parse_github_replies.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/github.R 3 | \name{parse_github_replies} 4 | \alias{parse_github_replies} 5 | \title{Parse GitHub Issue and Pull Request Comments} 6 | \usage{ 7 | parse_github_replies( 8 | issues_json_folder_path, 9 | pull_requests_json_folder_path, 10 | comments_json_folder_path, 11 | commit_json_folder_path, 12 | pr_comments_json_folder_path = NULL 13 | ) 14 | } 15 | \arguments{ 16 | \item{issues_json_folder_path}{The path to the downloaded issues JSON. See \code{\link{github_api_project_issue}}.} 17 | 18 | \item{pull_requests_json_folder_path}{The path to the downloaded pull requests JSON. See \code{\link{github_api_project_pull_request}}.} 19 | 20 | \item{comments_json_folder_path}{The path to the downloaded comments JSON. See \code{\link{github_api_project_issue_or_pr_comments}}.} 21 | 22 | \item{commit_json_folder_path}{The path to the downloaded commits JSON (used to map github username to the git log). See \code{\link{github_api_project_commits}}.} 23 | 24 | \item{pr_comments_json_folder_path}{The path to the download pr comments JSON. see \code{\link{github_api_project_pull_request_inline_comments}}.} 25 | } 26 | \value{ 27 | A single reply table which combines the communication from the three jsons. 28 | } 29 | \description{ 30 | Parses Issue, Pull Request, and Comments Endpoints into a reply table. 31 | See example usage in the download_github_comments.Rmd vignette. 32 | } 33 | -------------------------------------------------------------------------------- /man/transform_gitlog_to_entity_bipartite_network.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{transform_gitlog_to_entity_bipartite_network} 4 | \alias{transform_gitlog_to_entity_bipartite_network} 5 | \title{Transform parsed git repo into an edgelist} 6 | \usage{ 7 | transform_gitlog_to_entity_bipartite_network( 8 | project_git_entity, 9 | mode = c("author-entity", "committer-entity", "commit-entity", "author-committer") 10 | ) 11 | } 12 | \arguments{ 13 | \item{project_git_entity}{A parsed git project by \code{\link{parse_gitlog_entity}}.} 14 | 15 | \item{mode}{The network of interest: author-entity, committer-entity, commit-entity, author-committer} 16 | } 17 | \description{ 18 | Transform parsed git repo into an edgelist 19 | } 20 | \seealso{ 21 | Other edgelists: 22 | \code{\link{transform_commit_message_id_to_network}()}, 23 | \code{\link{transform_cve_cwe_file_to_network}()}, 24 | \code{\link{transform_dependencies_to_network}()}, 25 | \code{\link{transform_dependencies_to_sdsmj}()}, 26 | \code{\link{transform_gitlog_to_bipartite_network}()}, 27 | \code{\link{transform_gitlog_to_entity_temporal_network}()}, 28 | \code{\link{transform_gitlog_to_hdsmj}()}, 29 | \code{\link{transform_gitlog_to_temporal_network}()}, 30 | \code{\link{transform_reply_to_bipartite_network}()}, 31 | \code{\link{transform_temporal_gitlog_to_adsmj}()}, 32 | \code{\link{transform_understand_dependencies_to_network}()} 33 | } 34 | \concept{edgelists} 35 | -------------------------------------------------------------------------------- /man/dv8_depends_to_sdsmj.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dv8.R 3 | \name{dv8_depends_to_sdsmj} 4 | \alias{dv8_depends_to_sdsmj} 5 | \title{Creates dependencies using Depends} 6 | \usage{ 7 | dv8_depends_to_sdsmj(depends_jar_path, git_repo_path, language, sdsmj_path) 8 | } 9 | \arguments{ 10 | \item{depends_jar_path}{path to depends jar} 11 | 12 | \item{git_repo_path}{path to git repo (ends in .git)} 13 | 14 | \item{language}{the language of the .git repo (accepts cpp, java, ruby, python, pom)} 15 | 16 | \item{sdsmj_path}{the path to save the sdsm-dv8.dsm file.} 17 | } 18 | \value{ 19 | the sdsmj_path 20 | } 21 | \description{ 22 | Creates dependencies using Depends 23 | } 24 | \seealso{ 25 | \code{\link{dv8_dsmj_to_dsmb}} to convert to `*-sdsm.dv8-dsm` and 26 | \code{\link{dv8_hdsmb_sdsmb_to_mdsmb}} to merge DSMs into `*-merge.dv8-dsm`. 27 | 28 | Other dv8: 29 | \code{\link{dependencies_to_sdsmj}()}, 30 | \code{\link{dv8_clsxb_to_clsxj}()}, 31 | \code{\link{dv8_clsxj_to_clsxb}()}, 32 | \code{\link{dv8_dsmj_to_dsmb}()}, 33 | \code{\link{dv8_hdsmb_sdsmb_to_mdsmb}()}, 34 | \code{\link{dv8_mdsmb_to_flaws}()}, 35 | \code{\link{gitlog_to_hdsmj}()}, 36 | \code{\link{graph_to_dsmj}()}, 37 | \code{\link{parse_dv8_architectural_flaws}()}, 38 | \code{\link{parse_dv8_clusters}()}, 39 | \code{\link{transform_dependencies_to_sdsmj}()}, 40 | \code{\link{transform_gitlog_to_hdsmj}()}, 41 | \code{\link{transform_temporal_gitlog_to_adsmj}()} 42 | } 43 | \concept{dv8} 44 | -------------------------------------------------------------------------------- /man/interval_commit_metric.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/interval.R 3 | \name{interval_commit_metric} 4 | \alias{interval_commit_metric} 5 | \title{Calculate Metric for Commit Interval} 6 | \usage{ 7 | interval_commit_metric( 8 | project_git, 9 | dt_range, 10 | metric_function, 11 | file_extensions, 12 | substring_filepath, 13 | file_column_name 14 | ) 15 | } 16 | \arguments{ 17 | \item{project_git}{a data.table where the key is commit+file} 18 | 19 | \item{dt_range}{a data.table which contains a column `range` specifying the 20 | commit interval on the form `commitsha1-commitsha2`} 21 | 22 | \item{metric_function}{A metric function from metric.R to apply to each interval} 23 | 24 | \item{file_extensions}{a character vector of extensions (e.g. c(py,java)) to *keep*} 25 | 26 | \item{substring_filepath}{a character vector of substrings (e.g. c(py,java)) we wish to *filter*} 27 | 28 | \item{file_column_name}{a string indicating the column name which contains filepaths} 29 | } 30 | \value{ 31 | a numeric vector of `metric_function` values for each commit interval specified in `dt_range` 32 | } 33 | \description{ 34 | Calculates a metric using `metric_function` for a list of commit intervals specified in `dt_range`. All commit 35 | ranges must exist in `project_git` in order to derive the original timestamps to subset the interval. 36 | } 37 | \seealso{ 38 | \code{\link{metric_churn_per_commit_interval}} as an example of metric_function 39 | } 40 | -------------------------------------------------------------------------------- /man/smell_missing_links.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/smells.R 3 | \name{smell_missing_links} 4 | \alias{smell_missing_links} 5 | \title{Missing link Social Smell} 6 | \usage{ 7 | smell_missing_links(mail.graph, code.graph, precomputed.silo = NA) 8 | } 9 | \arguments{ 10 | \item{mail.graph}{A uni-modal network G = (V,E), where V are 11 | developers (authors or contributors) and E is a collaboration between developers 12 | in the mailing list} 13 | 14 | \item{code.graph}{A uni-modal network G = (V,E), where V are 15 | developers (authors or contributors) and E is a collaboration between developers 16 | in the git log.} 17 | 18 | \item{precomputed.silo}{Optional. The return of \code{smell_organizational_silo}} 19 | } 20 | \description{ 21 | Given the communication and collaboration graphs (mailing lists and VCS) 22 | return the collaboration edges that do not have a communication counterpart. 23 | It is possible to pass precomputed organisational silo community smell. For conceptual 24 | details please see references. 25 | } 26 | \references{ 27 | D. A. Tamburri, F. Palomba and R. Kazman, 28 | "Exploring Community Smells in Open-Source: An Automated Approach" 29 | in IEEE Transactions on Software Engineering, vol. 47, no. 3, 30 | pp. 630-652, 1 March 2021, doi: 10.1109/TSE.2019.2901490. 31 | 32 | Simone Magnoni (2016). An approach to measure Community 33 | Smells in software development communities. (Doctoral dissertation, Politecnico Milano). 34 | } 35 | -------------------------------------------------------------------------------- /man/parse_commit_message_id.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/git.R 3 | \name{parse_commit_message_id} 4 | \alias{parse_commit_message_id} 5 | \title{Adds a column commit_message_id containing the parsed commit message} 6 | \usage{ 7 | parse_commit_message_id(project_git, commit_message_id_regex) 8 | } 9 | \arguments{ 10 | \item{project_git}{A parsed git project by \code{parse_gitlog}.} 11 | 12 | \item{commit_message_id_regex}{the regex to extract the id from the commit message} 13 | } 14 | \description{ 15 | Adds a column commit_message_id containing the parsed commit message 16 | } 17 | \seealso{ 18 | Other parsers: 19 | \code{\link{build_understand_project}()}, 20 | \code{\link{export_understand_dependencies}()}, 21 | \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, 22 | \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, 23 | \code{\link{parse_bugzilla_rest_comments}()}, 24 | \code{\link{parse_bugzilla_rest_issues_comments}()}, 25 | \code{\link{parse_bugzilla_rest_issues}()}, 26 | \code{\link{parse_dependencies}()}, 27 | \code{\link{parse_dv8_clusters}()}, 28 | \code{\link{parse_github_latest_date}()}, 29 | \code{\link{parse_gitlog}()}, 30 | \code{\link{parse_jira_latest_date}()}, 31 | \code{\link{parse_jira_rss_xml}()}, 32 | \code{\link{parse_jira}()}, 33 | \code{\link{parse_mbox_latest_date}()}, 34 | \code{\link{parse_mbox}()}, 35 | \code{\link{parse_nvdfeed}()}, 36 | \code{\link{parse_understand_dependencies}()} 37 | } 38 | \concept{parsers} 39 | -------------------------------------------------------------------------------- /vignettes/kaiaulu_architecture.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Kaiāulu Architecture" 3 | output: 4 | html_document: 5 | toc: true 6 | number_sections: true 7 | vignette: > 8 | %\VignetteEngine{knitr::rmarkdown} 9 | %\VignetteIndexEntry{Kaiāulu Architecture} 10 | %\VignetteEncoding{UTF-8} 11 | --- 12 | 13 | ```{r warning = FALSE, message = FALSE} 14 | rm(list = ls()) 15 | require(kaiaulu) 16 | require(stringi) 17 | require(visNetwork) 18 | require(igraph) 19 | require(data.table) 20 | require(knitr) 21 | ``` 22 | 23 | 24 | # Parse R Package 25 | 26 | ```{r} 27 | folder_path <- "../R" 28 | ``` 29 | 30 | # Dependencies 31 | 32 | ```{r} 33 | dependencies <- parse_r_dependencies(folder_path) 34 | head(dependencies) 35 | ``` 36 | 37 | 38 | ## Function 39 | 40 | ```{r} 41 | file_graph <- transform_r_dependencies_to_network(dependencies,dependency_type="file") 42 | project_function_network <- igraph::graph_from_data_frame(d=file_graph[["edgelist"]], 43 | directed = TRUE, 44 | vertices = file_graph[["nodes"]]) 45 | visIgraph(project_function_network,randomSeed = 1) 46 | ``` 47 | 48 | ## File 49 | 50 | ```{r} 51 | function_graph <- transform_r_dependencies_to_network(dependencies,dependency_type="function") 52 | project_function_network <- igraph::graph_from_data_frame(d=function_graph[["edgelist"]], 53 | directed = TRUE, 54 | vertices = function_graph[["nodes"]]) 55 | visIgraph(project_function_network,randomSeed = 1) 56 | ``` 57 | 58 | -------------------------------------------------------------------------------- /man/identity_match.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/identity.R 3 | \name{identity_match} 4 | \alias{identity_match} 5 | \title{Assign Common Id to Nodes and Edgelists to Git and Mbox} 6 | \usage{ 7 | identity_match( 8 | project_log, 9 | name_column, 10 | assign_identity_function, 11 | use_name_only = FALSE, 12 | label 13 | ) 14 | } 15 | \arguments{ 16 | \item{project_log}{A list which can be any number of tables from \code{\link{parse_gitlog}} 17 | or \code{\link{parse_mbox}}} 18 | 19 | \item{name_column}{A string or vector of strings containing the column names 20 | which identity match should apply. One column name should provided for each 21 | table in the `project_log` list.} 22 | 23 | \item{assign_identity_function}{The heuristic function which decides common IDs 24 | (currently only available: \code{\link{assign_exact_identity}})} 25 | 26 | \item{use_name_only}{Uses only the name field (i.e. disregard the e-mail field)} 27 | 28 | \item{label}{Whether to replace the original non matched name with the 29 | collection of all names (label == raw_name), or an id (label == identity_id)} 30 | } 31 | \value{ 32 | Returns `project_log`, with two added columns, `raw_name` and 33 | `identity_id`. `raw_name` contains all names matched to the user, while 34 | `identity_id` provides a unique identifier, starting at 1, for all names 35 | passed in `project_log` across all tables of the list. 36 | } 37 | \description{ 38 | Assign Common Id to Nodes and Edgelists to Git and Mbox 39 | } 40 | -------------------------------------------------------------------------------- /man/parse_mbox_latest_date.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/mail.R 3 | \name{parse_mbox_latest_date} 4 | \alias{parse_mbox_latest_date} 5 | \title{Parse Latest Mbox} 6 | \usage{ 7 | parse_mbox_latest_date(save_folder_path) 8 | } 9 | \arguments{ 10 | \item{save_folder_path}{path to the folder containing the mbox files} 11 | } 12 | \value{ 13 | `latest_mbox_file` the name of the latest mod_mbox file 14 | } 15 | \description{ 16 | This function returns the name of the latest mod_mbox file downloaded in the specified folder 17 | based on the naming convention `YYYYMM.mbox`. For example: `202401.mbox`. 18 | } 19 | \seealso{ 20 | Other parsers: 21 | \code{\link{build_understand_project}()}, 22 | \code{\link{export_understand_dependencies}()}, 23 | \code{\link{parse_bugzilla_perceval_rest_issue_comments}()}, 24 | \code{\link{parse_bugzilla_perceval_traditional_issue_comments}()}, 25 | \code{\link{parse_bugzilla_rest_comments}()}, 26 | \code{\link{parse_bugzilla_rest_issues_comments}()}, 27 | \code{\link{parse_bugzilla_rest_issues}()}, 28 | \code{\link{parse_commit_message_id}()}, 29 | \code{\link{parse_dependencies}()}, 30 | \code{\link{parse_dv8_clusters}()}, 31 | \code{\link{parse_github_latest_date}()}, 32 | \code{\link{parse_gitlog}()}, 33 | \code{\link{parse_jira_latest_date}()}, 34 | \code{\link{parse_jira_rss_xml}()}, 35 | \code{\link{parse_jira}()}, 36 | \code{\link{parse_mbox}()}, 37 | \code{\link{parse_nvdfeed}()}, 38 | \code{\link{parse_understand_dependencies}()} 39 | } 40 | \concept{parsers} 41 | --------------------------------------------------------------------------------