10tuple<string, double, bool> PreprocessorBuild::read_parameters() {
12 string similarity_message;
17 fs::path path(path_str);
20 cin >> similarity_message;
21 double similarity = stod(similarity_message);
23 bool use_duplication_finder_by_tool =
false;
26 fm::write(MESSAGE_DUPLICATION_FINDER_TYPE_1);
27 fm::write(MESSAGE_DUPLICATION_FINDER_TYPE_2);
28 fm::write(MESSAGE_DUPLICATION_FINDER_TYPE_3);
32 use_duplication_finder_by_tool =
true;
34 use_duplication_finder_by_tool =
false;
36 std::cerr << INVALID_CODE_DUPLICATION_FINDER <<
'\n';
43 return {path, similarity, use_duplication_finder_by_tool};
46void PreprocessorBuild::preprocess(
const fs::path& path,
double similarity,
bool use_duplication_finder_by_tool) {
51 if (fs::exists(base_path)) {
52 fs::remove_all(base_path);
59 if (use_duplication_finder_by_tool) {
61 duplicationFinder.execute();
64 duplicationFinder.execute();
76 if (force_preprocess || !std::filesystem::exists(base_path /
CONFIG_PATH)) {
77 auto [path, similarity, use_duplication_finder_by_tool] = read_parameters();
78 preprocess(path, similarity, use_duplication_finder_by_tool);
84 if (force_preprocess || !std::filesystem::exists(base_path /
CONFIG_PATH)) {
85 preprocess(path, similarity,
true);
90 auto it_name =
options.args.find(
"name");
91 if (it_name !=
options.args.end()) {
94 auto it_json =
options.args.find(
"json");
95 if (it_json !=
options.args.end()) {
96 throw CLIError(
"--json is not supported in this command.");
104 auto [path, similarity, use_duplication_finder_by_tool] = read_parameters();
105 preprocess(path, similarity, use_duplication_finder_by_tool);
Base class for CLI-related errors.
const CliOption * options() const final
static Config & config()
Gets the singleton configuration instance.
fs::path base_path
Default base path for temporary files.
fs::path name_container
Name of the cache container.
Code duplication preprocessor.
Main function extraction processor.
bool validate(const ParsedOptions &options) override
Validate the arguments already analyzed.
bool run(const ParsedOptions &options) override
Executes the main logic of the command.
static constexpr const char * CONFIG_PATH
Configuration file path.
static void save_current_run_params(const fs::path &path)
Saves preprocessing parameters for future runs.
Codebase preprocessing interface.