Browse Source

remove comparison mode option

Jan Wittler 4 years ago
parent
commit
1e01185d63

+ 0 - 1
README.md

@@ -81,7 +81,6 @@ named arguments:
   -n N             The maximum number of comparisons that will be shown in the  generated report, if set to -1 all comparisons will be shown
                         (default: 30)
   -r R             Name of the directory in which the comparison results will be stored (default: result)
-  -c               {normal,parallel} Comparison mode used to compare the programs (default: normal)
 ```
 
 ### Java API

+ 1 - 9
jplag.cli/src/main/java/de/jplag/CLI.java

@@ -15,7 +15,6 @@ import static de.jplag.CommandLineArgument.CLUSTER_SPECTRAL_KMEANS_ITERATIONS;
 import static de.jplag.CommandLineArgument.CLUSTER_SPECTRAL_MAX_RUNS;
 import static de.jplag.CommandLineArgument.CLUSTER_SPECTRAL_MIN_RUNS;
 import static de.jplag.CommandLineArgument.CLUSTER_SPECTRAL_NOISE;
-import static de.jplag.CommandLineArgument.COMPARISON_MODE;
 import static de.jplag.CommandLineArgument.DEBUG;
 import static de.jplag.CommandLineArgument.EXCLUDE_FILE;
 import static de.jplag.CommandLineArgument.LANGUAGE;
@@ -52,7 +51,6 @@ import de.jplag.logger.CollectedLoggerFactory;
 import de.jplag.options.JPlagOptions;
 import de.jplag.options.Verbosity;
 import de.jplag.reporting.reportobject.ReportObjectFactory;
-import de.jplag.strategy.ComparisonMode;
 
 /**
  * Command line interface class, allows using via command line.
@@ -151,18 +149,12 @@ public final class CLI {
         addAllMultiValueArgument(OLD_DIRECTORY.getListFrom(namespace), oldSubmissionDirectories);
 
         var language = LanguageLoader.getLanguage(LANGUAGE.getFrom(namespace)).orElseThrow();
-        var comparisonModeOptional = ComparisonMode.fromName(COMPARISON_MODE.getFrom(namespace));
-        if (comparisonModeOptional.isEmpty()) {
-            logger.warn("Unknown comparison mode, using default mode!");
-        }
-        var comparisonMode = comparisonModeOptional.orElse(JPlagOptions.DEFAULT_COMPARISON_MODE);
-
         ClusteringOptions clusteringOptions = getClusteringOptions(namespace);
 
         return new JPlagOptions(language, MIN_TOKEN_MATCH.getFrom(namespace), submissionDirectories, oldSubmissionDirectories,
                 BASE_CODE.getFrom(namespace), SUBDIRECTORY.getFrom(namespace), Arrays.stream(fileSuffixes).toList(), EXCLUDE_FILE.getFrom(namespace),
                 JPlagOptions.DEFAULT_SIMILARITY_METRIC, SIMILARITY_THRESHOLD.getFrom(namespace), SHOWN_COMPARISONS.getFrom(namespace),
-                clusteringOptions, comparisonMode, Verbosity.fromOption(VERBOSITY.getFrom(namespace)), DEBUG.getFrom(namespace));
+                clusteringOptions, Verbosity.fromOption(VERBOSITY.getFrom(namespace)), DEBUG.getFrom(namespace));
     }
 
     private static ClusteringOptions getClusteringOptions(Namespace namespace) {

+ 0 - 3
jplag.cli/src/main/java/de/jplag/CommandLineArgument.java

@@ -2,7 +2,6 @@ package de.jplag;
 
 import static de.jplag.CLI.ADVANCED_GROUP;
 import static de.jplag.CLI.CLUSTERING_GROUP_NAME;
-import static de.jplag.options.JPlagOptions.DEFAULT_COMPARISON_MODE;
 import static de.jplag.options.JPlagOptions.DEFAULT_SHOWN_COMPARISONS;
 import static de.jplag.options.JPlagOptions.DEFAULT_SIMILARITY_THRESHOLD;
 import static net.sourceforge.argparse4j.impl.Arguments.append;
@@ -25,7 +24,6 @@ import de.jplag.clustering.ClusteringAlgorithm;
 import de.jplag.clustering.ClusteringOptions;
 import de.jplag.clustering.algorithm.InterClusterSimilarity;
 import de.jplag.options.SimilarityMetric;
-import de.jplag.strategy.ComparisonMode;
 
 /**
  * Command line arguments for the JPlag CLI. Each argument is defined through an enumeral.
@@ -51,7 +49,6 @@ public enum CommandLineArgument {
     SIMILARITY_THRESHOLD(new Builder("-m", Double.class).defaultsTo(DEFAULT_SIMILARITY_THRESHOLD).argumentGroup(ADVANCED_GROUP)),
     SHOWN_COMPARISONS(new Builder("-n", Integer.class).defaultsTo(DEFAULT_SHOWN_COMPARISONS)),
     RESULT_FOLDER(new Builder("-r", String.class).defaultsTo("result")),
-    COMPARISON_MODE(new Builder("-c", String.class).defaultsTo(DEFAULT_COMPARISON_MODE.getName()).choices(ComparisonMode.allNames())),
     CLUSTER_DISABLE(new Builder("--cluster-skip", Boolean.class).argumentGroup(CLUSTERING_GROUP_NAME).action(Arguments.storeTrue())),
     CLUSTER_ALGORITHM(
             new Builder("--cluster-alg", ClusteringAlgorithm.class).argumentGroup(CLUSTERING_GROUP_NAME)

+ 0 - 43
jplag.cli/src/test/java/de/jplag/cli/ComparisonModeTest.java

@@ -1,43 +0,0 @@
-package de.jplag.cli;
-
-import static com.github.stefanbirkner.systemlambda.SystemLambda.catchSystemExit;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import org.junit.jupiter.api.Test;
-
-import de.jplag.CommandLineArgument;
-import de.jplag.options.JPlagOptions;
-import de.jplag.strategy.ComparisonMode;
-
-class ComparisonModeTest extends CommandLineInterfaceTest {
-
-    @Test
-    void testDefaultMode() {
-        buildOptionsFromCLI(CURRENT_DIRECTORY);
-        assertEquals(JPlagOptions.DEFAULT_COMPARISON_MODE, options.comparisonMode());
-    }
-
-    @Test
-    void testInvalidMode() throws Exception {
-        String argument = buildArgument(CommandLineArgument.COMPARISON_MODE, "Test'); DROP TABLE STUDENTS; --");
-        int statusCode = catchSystemExit(() -> buildOptionsFromCLI(argument, CURRENT_DIRECTORY));
-        assertEquals(1, statusCode);
-    }
-
-    @Test
-    void testNormalMode() {
-        ComparisonMode mode = ComparisonMode.NORMAL;
-        String argument = buildArgument(CommandLineArgument.COMPARISON_MODE, mode.getName());
-        buildOptionsFromCLI(argument, CURRENT_DIRECTORY);
-        assertEquals(mode, options.comparisonMode());
-    }
-
-    @Test
-    void testParallelMode() {
-        ComparisonMode mode = ComparisonMode.PARALLEL;
-        String argument = buildArgument(CommandLineArgument.COMPARISON_MODE, mode.getName());
-        buildOptionsFromCLI(argument, CURRENT_DIRECTORY);
-        assertEquals(mode, options.comparisonMode());
-    }
-
-}

+ 1 - 0
jplag/src/main/java/de/jplag/JPlag.java

@@ -7,6 +7,7 @@ import de.jplag.clustering.ClusteringFactory;
 import de.jplag.exceptions.ExitException;
 import de.jplag.exceptions.SubmissionException;
 import de.jplag.options.JPlagOptions;
+import de.jplag.strategy.ComparisonStrategy;
 import de.jplag.strategy.ParallelComparisonStrategy;
 
 /**

+ 17 - 28
jplag/src/main/java/de/jplag/options/JPlagOptions.java

@@ -1,7 +1,6 @@
 package de.jplag.options;
 
 import static de.jplag.options.Verbosity.LONG;
-import static de.jplag.strategy.ComparisonMode.NORMAL;
 
 import java.io.BufferedReader;
 import java.io.FileReader;
@@ -21,7 +20,6 @@ import org.slf4j.LoggerFactory;
 import de.jplag.JPlag;
 import de.jplag.Language;
 import de.jplag.clustering.ClusteringOptions;
-import de.jplag.strategy.ComparisonMode;
 
 /**
  * This record defines the options to configure {@link JPlag}.
@@ -44,16 +42,14 @@ import de.jplag.strategy.ComparisonMode;
  * @param maximumNumberOfComparisons The maximum number of comparisons that will be shown in the generated report. If
  * set to {@link #SHOW_ALL_COMPARISONS} all comparisons will be shown.
  * @param clusteringOptions Clustering options
- * @param comparisonMode Determines which strategy to use for the comparison of submissions.
  * @param verbosity Level of output verbosity.
  * @param debugParser If true, submissions that cannot be parsed will be stored in a separate directory.
  */
 public record JPlagOptions(Language language, Integer minimumTokenMatch, List<String> submissionDirectories, List<String> oldSubmissionDirectories,
         String baseCodeSubmissionName, String subdirectoryName, List<String> fileSuffixes, String exclusionFileName,
         SimilarityMetric similarityMetric, double similarityThreshold, int maximumNumberOfComparisons, ClusteringOptions clusteringOptions,
-        ComparisonMode comparisonMode, Verbosity verbosity, boolean debugParser) {
+        Verbosity verbosity, boolean debugParser) {
 
-    public static final ComparisonMode DEFAULT_COMPARISON_MODE = NORMAL;
     public static final double DEFAULT_SIMILARITY_THRESHOLD = 0;
     public static final int DEFAULT_SHOWN_COMPARISONS = 30;
     public static final int SHOW_ALL_COMPARISONS = 0;
@@ -64,15 +60,14 @@ public record JPlagOptions(Language language, Integer minimumTokenMatch, List<St
 
     public JPlagOptions(Language language, List<String> submissionDirectories, List<String> oldSubmissionDirectories) {
         this(language, null, submissionDirectories, oldSubmissionDirectories, null, null, null, null, DEFAULT_SIMILARITY_METRIC,
-                DEFAULT_SIMILARITY_THRESHOLD, DEFAULT_SHOWN_COMPARISONS, new ClusteringOptions(), DEFAULT_COMPARISON_MODE, null, false);
+                DEFAULT_SIMILARITY_THRESHOLD, DEFAULT_SHOWN_COMPARISONS, new ClusteringOptions(), null, false);
     }
 
     public JPlagOptions(Language language, Integer minimumTokenMatch, List<String> submissionDirectories, List<String> oldSubmissionDirectories,
             String baseCodeSubmissionName, String subdirectoryName, List<String> fileSuffixes, String exclusionFileName,
             SimilarityMetric similarityMetric, double similarityThreshold, int maximumNumberOfComparisons, ClusteringOptions clusteringOptions,
-            ComparisonMode comparisonMode, Verbosity verbosity, boolean debugParser) {
+            Verbosity verbosity, boolean debugParser) {
         this.language = language;
-        this.comparisonMode = comparisonMode;
         this.debugParser = debugParser;
         this.fileSuffixes = fileSuffixes == null || fileSuffixes.isEmpty() ? null : Collections.unmodifiableList(fileSuffixes);
         this.similarityThreshold = normalizeSimilarityThreshold(similarityThreshold);
@@ -91,91 +86,85 @@ public record JPlagOptions(Language language, Integer minimumTokenMatch, List<St
     public JPlagOptions withLanguageOption(Language language) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
-    }
-
-    public JPlagOptions withComparisonMode(ComparisonMode comparisonMode) {
-        return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
-                subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public JPlagOptions withDebugParser(boolean debugParser) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public JPlagOptions withFileSuffixes(List<String> fileSuffixes) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public JPlagOptions withSimilarityThreshold(double similarityThreshold) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public JPlagOptions withMaximumNumberOfComparisons(int maximumNumberOfComparisons) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public JPlagOptions withSimilarityMetric(SimilarityMetric similarityMetric) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public JPlagOptions withMinimumTokenMatch(Integer minimumTokenMatch) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public JPlagOptions withExclusionFileName(String exclusionFileName) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public JPlagOptions withSubmissionDirectories(List<String> submissionDirectories) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public JPlagOptions withOldSubmissionDirectories(List<String> oldSubmissionDirectories) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public JPlagOptions withBaseCodeSubmissionName(String baseCodeSubmissionName) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public JPlagOptions withSubdirectoryName(String subdirectoryName) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public JPlagOptions withVerbosity(Verbosity verbosity) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public JPlagOptions withClusteringOptions(ClusteringOptions clusteringOptions) {
         return new JPlagOptions(language, minimumTokenMatch, submissionDirectories, oldSubmissionDirectories, baseCodeSubmissionName,
                 subdirectoryName, fileSuffixes, exclusionFileName, similarityMetric, similarityThreshold, maximumNumberOfComparisons,
-                clusteringOptions, comparisonMode, verbosity, debugParser);
+                clusteringOptions, verbosity, debugParser);
     }
 
     public boolean hasBaseCode() {

+ 0 - 52
jplag/src/main/java/de/jplag/strategy/ComparisonMode.java

@@ -1,52 +0,0 @@
-package de.jplag.strategy;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Optional;
-
-/**
- * The comparison mode determines which {@link ComparisonStrategy} is used to compare submissions.
- */
-public enum ComparisonMode {
-    NORMAL("Normal comparison (sequential)"),
-    PARALLEL("Faster comparison (parallel)");
-
-    private final String name;
-    private final String description;
-
-    ComparisonMode(String description) {
-        this.description = description;
-        name = toString().toLowerCase();
-    }
-
-    /**
-     * @return the specifier for the comparison mode.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * The textual description of the comparison mode.
-     * @return a description of the comparison mode
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * @return a collections of all mode names.
-     */
-    public static Collection<String> allNames() {
-        return Arrays.stream(values()).map(ComparisonMode::getName).toList();
-    }
-
-    /**
-     * Retrieves a comparison mode from a specific name.
-     * @param name is that name.
-     * @return the optional mode or nothing if no name matches.
-     */
-    public static Optional<ComparisonMode> fromName(String name) {
-        return Arrays.stream(values()).filter(it -> it.name.equals(name)).findFirst();
-    }
-}

+ 0 - 1
jplag/src/main/resources/de/jplag/messages.properties

@@ -1,5 +1,4 @@
 CommandLineArgument.BaseCode=Path of the directory containing the base code (common framework used in all submissions)
-CommandLineArgument.ComparisonMode=Comparison mode used to compare the programs
 CommandLineArgument.Debug=Debug parser. Non-parsable files will be stored
 CommandLineArgument.Suffixes=comma-separated list of all filename suffixes that are included
 CommandLineArgument.ExcludeFile=All files named in this file will be ignored in the comparison (line-separated list)