ArKanjo 0.5.1
A tool for find code duplicated functions in codebases
function_breaker.hpp
Go to the documentation of this file.
1
17#pragma once
18
19#include <string>
20#include <vector>
21#include <filesystem>
22#include <functional>
23
24#include <tree_sitter/api.h>
25
28
29namespace fs = std::filesystem;
30
38enum class Granularity {
40 File
41};
42
64 void write_output(const fs::path type_path, const fs::path& relative_path,
65 const std::string& function_name, const std::string& content);
66
75 std::string create_info_json(int line_declaration, int start_number_line,
76 int end_number_line, const fs::path& relative_path,
77 const std::string& function_name);
78
84 void file_breaker(
85 const fs::path& file_path, const fs::path& folder_path,
86 std::function<void(const FunctionData&)> on_function,
87 SkipStats& stats,
89 int minimum_lines = 0);
90
91 public:
98 int process(
99 const fs::path& folder_path,
100 std::function<void(const FunctionData&)> on_function,
101 SkipStats& stats,
102 int minimum_lines = 0,
103 Granularity granularity = Granularity::Function);
104
109 FunctionBreaker() = default;
110};
Main function extraction processor.
int process(const fs::path &folder_path, std::function< void(const FunctionData &)> on_function, SkipStats &stats, int minimum_lines=0, Granularity granularity=Granularity::Function)
Processes all files in directory.
FunctionBreaker()=default
Constructs function breaker and processes directory.
Granularity
Comparison granularity used when breaking the codebase.