5 if(processed_results%2 == 0){
11string Random_Selector::format_path_message_in_pair(
Path path){
16bool Random_Selector::is_valid_pair(tuple<double,Path,Path> path_pair){
17 auto [similarity,path1,path2] = path_pair;
18 if(similarity < minimum_similarity)
return false;
19 if(similarity > maximum_similarity)
return false;
23vector<tuple<double,Path,Path>> Random_Selector::get_similarity_pairs_filtered(){
25 vector<tuple<double,Path,Path>>
ret;
26 for(
auto path_pair : path_pairs){
27 if(is_valid_pair(path_pair)){
28 ret.push_back(path_pair);
34vector<tuple<double,Path,Path>> Random_Selector::make_random_selection(vector<tuple<double,Path,Path>> path_pairs){
35 shuffle(path_pairs.begin(),path_pairs.end(), rng);
36 while(
int(path_pairs.size()) > maximum_quantity){
37 path_pairs.pop_back();
42void Random_Selector::print_path_pair(tuple<double,Path,Path> path_pair){
43 auto [similarity,path1,path2] = path_pair;
45 line += START_LINE_COMPARATION_PRINT;
46 line += format_path_message_in_pair(path1);
47 line += BETWEEN_TWO_FUNCTION;
48 line += format_path_message_in_pair(path2);
49 line += SIMILARITY_MESSAGE;
55void Random_Selector::print_path_pairs(vector<tuple<double,Path,Path>> path_pairs){
56 for(
auto path_pair : path_pairs){
57 print_path_pair(path_pair);
63 double _minimum_similarity,
64 double _maximum_similarity,
65 double _maximum_quantity
67 similarity_table = _similarity_table;
69 minimum_similarity = _minimum_similarity;
70 maximum_similarity = _maximum_similarity;
71 maximum_quantity = _maximum_quantity;
73 auto path_pairs = get_similarity_pairs_filtered();
74 path_pairs = make_random_selection(path_pairs);
75 print_path_pairs(path_pairs);
Path manipulation class for tool-specific directory structure.
string build_relative_path()
Builds relative path portion.
string build_function_name()
Extracts function name from path.
Random_Selector(Similarity_Table *_similarity_table, double _minimum_similarity, double _maximum_similarity, double _maximum_quantity)
Constructs selector with configuration.
Manages and analyzes function similarity relationships.
void update_similarity(double new_similarity_threshold)
Updates similarity threshold.
vector< tuple< double, Path, Path > > get_all_path_pairs_and_similarity_sorted_by_similarity()
Gets all similar path pairs with scores, sorted.
NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &j)
user-defined to_string function for JSON values
COLOR
Enumeration of available colors for formatted messages.
string format_colored_message(string message, COLOR color)
Formats a message with ANSI color codes.
Random selection of similar code pairs.