Arkanjo 0.1
A tool for find code duplicated functions in codebases
Loading...
Searching...
No Matches
orchestrator.cpp
Go to the documentation of this file.
1#include "orchestrator.hpp"
2
3#include <iostream>
4#include <string>
5#include <vector>
6#include <cstdlib>
7void Orchestrator::help_command(){
8 cout << "Sorry I am tired I will do this latter" << '\n';
9}
10
11void Orchestrator::check_update_similarity(vector<string> parameters, Similarity_Table *similarity_table){
12 int number_parameters = parameters.size();
13 for(int i = 0; i < number_parameters-1; i++){
14 string param = parameters[i];
15 string next_param = parameters[i+1];
16 if(param == "-s"){
17 similarity_table->update_similarity(stod(next_param));
18 }
19 }
20}
21
22bool Orchestrator::check_force_preprocess(vector<string> parameters){
23 int number_parameters = parameters.size();
24 for(int i = 0; i < number_parameters; i++){
25 if(parameters[i] == "-pre"){
26 return true;
27 }
28 }
29 return false;
30}
31
32void Orchestrator::call_preprocess(vector<string> parameters){
33 bool should_force = check_force_preprocess(parameters);
34 Preprocessor preprocessor(should_force);
35}
36
37void Orchestrator::exploration_command(vector<string> parameters, Similarity_Table *similarity_table){
38 int number_parameters = parameters.size();
39
40 string pattern = "";
41 int limiter = 0;
42 bool both_need_to_match = false;
43 bool sorted_by_number_of_duplicated_code = false;
44 for(int i = 0; i < number_parameters-1; i++){
45 string param = parameters[i];
46 string next_param = parameters[i+1];
47 if(param == "-l"){
48 limiter = stoi(next_param);
49 }
50 if(param == "-p"){
51 pattern = next_param;
52 }
53 if(param == "-b"){
54 both_need_to_match = (next_param == "T");
55 }
56 if(param == "-c"){
57 sorted_by_number_of_duplicated_code = (next_param == "T");
58 }
59 }
60 Similarity_Explorer similarity_explorer(
61 similarity_table,
62 limiter,
63 pattern,
64 both_need_to_match,
65 sorted_by_number_of_duplicated_code);
66}
67
68void Orchestrator::random_command(vector<string> parameters, Similarity_Table *similarity_table){
69 int number_parameters = parameters.size();
70 if(number_parameters <= 2){
71 cout << "ERROR: Random expect three parameters, but less was given" << endl;
72 exit(0);
73 }
74 int minimum_similarity = stod(parameters[0]);
75 int maximum_similarity = stod(parameters[1]);
76 int maximum_quantity = stod(parameters[2]);
77 Random_Selector random(similarity_table,minimum_similarity,maximum_similarity,maximum_quantity);
78}
79
80void Orchestrator::duplication_command(vector<string> parameters, Similarity_Table *similarity_table){
81 Counter_Duplication_Code counter_duplication_code(similarity_table);
82}
83
84void Orchestrator::big_clone_formater_command(vector<string> parameters, Similarity_Table *similarity_table){
85 Big_Clone_Formater big_clone_formater(similarity_table);
86}
87
88void Orchestrator::big_clone_tailor_evaluator_command(vector<string> parameters, Similarity_Table *similarity_table){
89 Big_Clone_Tailor_Evaluator big_clone_tailor_evaluator(similarity_table);
90}
91
92void Orchestrator::similar_function_finder_command(vector<string> parameters, Similarity_Table *similarity_table){
93 int number_parameters = parameters.size();
94 if(number_parameters == 0){
95 cout << "ERROR: Similar Function Finder Command expect one parameter, but none was given" << endl;
96 exit(0);
97 }
98 Similar_Function_Finder similar_function_finder(parameters[0],similarity_table);
99}
100
101
102Orchestrator::Orchestrator(string command, vector<string> parameters){
103 call_preprocess(parameters);
104 Similarity_Table similarity_table;
105 check_update_similarity(parameters,&similarity_table);
106
107 if(command == "du"){
108 duplication_command(parameters,&similarity_table);
109 }else if(command == "ex"){
110 exploration_command(parameters,&similarity_table);
111 }else if(command == "fu"){
112 similar_function_finder_command(parameters,&similarity_table);
113 }else if(command == "bi"){
114 big_clone_formater_command(parameters,&similarity_table);
115 }else if(command == "ev"){
116 big_clone_tailor_evaluator_command(parameters,&similarity_table);
117 }else if(command == "ra"){
118 random_command(parameters,&similarity_table);
119 }else{
120 help_command();
121 }
122}
123
124int main(int argc, char *argv[]){
125 string command = "";
126 vector<string> parameters;
127 if(argc >= 2){
128 command = string(argv[1]);
129 }
130 for(int i = 2; i < argc; i++){
131 string param(argv[i]);
132 parameters.push_back(param);
133 }
134
135 Orchestrator(command,parameters);
136
137 return 0;
138}
139
Formats clone detection results for BigCloneBench evaluation.
Evaluates clone detection using BigCloneBench methodology.
Code duplication analyzer and reporter.
Main command orchestrator.
Orchestrator(string command, vector< string > parameters)
Constructs orchestrator and executes requested command.
Codebase preprocessing orchestrator.
Random pair selector for similar code segments.
Similar function locator and reporter.
Duplicate function explorer and analyzer.
Manages and analyzes function similarity relationships.
void update_similarity(double new_similarity_threshold)
Updates similarity threshold.
int main(int argc, char *argv[])
Main command orchestration interface.