Arkanjo 0.2
A tool for find code duplicated functions in codebases
Loading...
Searching...
No Matches
counter_duplication_code_trie.hpp
Go to the documentation of this file.
1
13#pragma once
14
15#include <map>
16#include <string>
17#include <vector>
18
20
32 private:
33 static constexpr const int ZERO_INITIAL_COUNTER = 0;
34 static constexpr const int ROOT_NODE = 0;
35 static constexpr const int BASE_DEPTH = 0;
36 static constexpr const char* EMPTY_FOLDER = "";
37 static constexpr const char* BASIC_SHIFT_PER_DEPTH = "----";
38 static constexpr const char* END_ARROW = "--> ";
39 static constexpr const char* TWO_POINTER_AFTER_FOLDER = "/: ";
40 static constexpr const char* LINE_TEXT = " duplicated lines detected.";
41
42 std::vector<std::map<std::string, int>> trie;
43 std::vector<int> counter_duplication_lines;
44 int number_printed_lines = 0;
45
50 Utils::COLOR choose_text_color();
51
56 int create_node_at_the_end();
57
63 void create_edge_if_not_exist(int node, const std::string& folder);
64
70 static std::string create_context_string_on_depth(int depth);
71
78 void print_node_information(int node, int depth, const std::string& folder);
79
86 void dfs_print_duplication_code_trie(int current_node, int depth, const std::string& folder);
87
88 public:
94 void add_folder_duplication_code(const std::vector<std::string>& folder_path, int number_of_duplication_lines);
95
100
105};
Trie structure for hierarchical duplication counting.
void add_folder_duplication_code(const std::vector< std::string > &folder_path, int number_of_duplication_lines)
Adds duplication count for a folder path.
CounterDuplicationCodeTrie()
Constructs a new trie with root node.
void print_duplication_code_trie()
Prints the trie structure with duplication counts.
COLOR
Enumeration of available colors for formatted messages.
Definition utils.hpp:111
Defines utility functions used across all files.