ArKanjo 0.5.1
A tool for find code duplicated functions in codebases
parser.hpp
Go to the documentation of this file.
1
13#pragma once
14
15#include <algorithm>
16#include <fstream>
17#include <set>
18#include <string>
19#include <vector>
20#include <filesystem>
21namespace fs = std::filesystem;
22
30 std::string path1;
31 std::string path2;
32 double similarity;
33
38
45 Comparation(std::string _path1, std::string _path2, double _sim);
46
52 bool operator<(const Comparation& com) const;
53
59 bool operator==(const Comparation& com) const;
60};
61
68class Parser {
69 private:
70 static constexpr const char* PROJECT_PATH_MESSAGE = "Enter your project path:";
71 static constexpr const char* MINIMUM_SIMILARITY_MESSAGE = "Enter minimum similarity desired on using the tool:";
72
73 std::ofstream fout;
74 double similarity_cap;
75 std::set<Comparation> comparations;
76
82 std::vector<std::string> parser_line(const std::string& line);
83
89 bool is_an_file(const std::string& s);
90
96 double retrive_similarity(const std::string& s);
97
103 void parser_block_stream(const std::string& path, const std::vector<std::string>& tokens, std::set<Comparation>& comparations);
104
105 public:
111 explicit Parser(const fs::path& output_file, double similarity_cap);
112
116 void exec_from_stream(FILE* pipe);
117
118 ~Parser();
119};
Parses and transforms duplication detection tool output.
Definition: parser.hpp:68
void exec_from_stream(FILE *pipe)
Main parsing execution method using stream.
Definition: parser.cpp:88
~Parser()
Definition: parser.cpp:132
Parser(const fs::path &output_file, double similarity_cap)
Constructs parser with configuration.
Definition: parser.cpp:124
Structure representing a code comparison result.
Definition: parser.hpp:29
bool operator<(const Comparation &com) const
Comparison operator for sorting.
Definition: parser.cpp:13
double similarity
Similarity score between the files (0-100)
Definition: parser.hpp:32
Comparation()
Default constructor.
Definition: parser.hpp:37
std::string path1
Path to first code file being compared.
Definition: parser.hpp:30
std::string path2
Path to second code file being compared.
Definition: parser.hpp:31
bool operator==(const Comparation &com) const
Equality comparison operator.
Definition: parser.cpp:23