From 11f768b392a06a2adb62f5b0e7ad6c2184e04f03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Sa=C4=9Flam?= Date: Thu, 29 Sep 2022 10:52:02 +0200 Subject: [PATCH 1/8] Allow languages to stay hidden in the CLI. --- language-api/src/main/java/de/jplag/Language.java | 8 ++++++++ language-api/src/main/java/de/jplag/LanguageLoader.java | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/language-api/src/main/java/de/jplag/Language.java b/language-api/src/main/java/de/jplag/Language.java index 4f4d94d780..5879802eff 100644 --- a/language-api/src/main/java/de/jplag/Language.java +++ b/language-api/src/main/java/de/jplag/Language.java @@ -58,4 +58,12 @@ default boolean useViewFiles() { default String viewFileSuffix() { return ""; } + + /** + * Specifies if the language is hidden in the CLI interface. + * @return true if it is hidden. + */ + default boolean isHidden() { + return false; + } } diff --git a/language-api/src/main/java/de/jplag/LanguageLoader.java b/language-api/src/main/java/de/jplag/LanguageLoader.java index 2b4a7e310d..f67dc50e6a 100644 --- a/language-api/src/main/java/de/jplag/LanguageLoader.java +++ b/language-api/src/main/java/de/jplag/LanguageLoader.java @@ -70,7 +70,8 @@ public static Optional getLanguage(String identifier) { * @see Language#getIdentifier() */ public static Set getAllAvailableLanguageIdentifiers() { - return new TreeSet<>(getAllAvailableLanguages().keySet()); + var identifiers = getAllAvailableLanguages().values().stream().filter(it -> !it.isHidden()).map(Language::getIdentifier).toList(); + return new TreeSet<>(identifiers); } /** From 642c2e70b82acf7a2d3045aee947c750f934f7c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Sa=C4=9Flam?= Date: Thu, 29 Sep 2022 10:53:05 +0200 Subject: [PATCH 2/8] Hide dynamic emf language in the CLI and adapt emf CLI arguments to be less verbose. --- .../src/main/java/de/jplag/emf/dynamic/Language.java | 7 ++++++- .../emf-metamodel/src/main/java/de/jplag/emf/Language.java | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/languages/emf-metamodel-dynamic/src/main/java/de/jplag/emf/dynamic/Language.java b/languages/emf-metamodel-dynamic/src/main/java/de/jplag/emf/dynamic/Language.java index 5fc65b043e..906c5195f5 100644 --- a/languages/emf-metamodel-dynamic/src/main/java/de/jplag/emf/dynamic/Language.java +++ b/languages/emf-metamodel-dynamic/src/main/java/de/jplag/emf/dynamic/Language.java @@ -12,7 +12,7 @@ @MetaInfServices(de.jplag.Language.class) public class Language extends de.jplag.emf.Language { private static final String NAME = "EMF metamodels (dynamically created token set)"; - public static final String IDENTIFIER = "emf-metamodel-dynamic"; + public static final String IDENTIFIER = "emf-dynamic"; private static final int DEFAULT_MIN_TOKEN_MATCH = 10; @@ -34,4 +34,9 @@ public String getIdentifier() { public int minimumTokenMatch() { return DEFAULT_MIN_TOKEN_MATCH; } + + @Override + public boolean isHidden() { + return true; // currently hidden, as the other EMF language module should be used. + } } diff --git a/languages/emf-metamodel/src/main/java/de/jplag/emf/Language.java b/languages/emf-metamodel/src/main/java/de/jplag/emf/Language.java index a721701a2c..f7783fde02 100644 --- a/languages/emf-metamodel/src/main/java/de/jplag/emf/Language.java +++ b/languages/emf-metamodel/src/main/java/de/jplag/emf/Language.java @@ -21,7 +21,7 @@ public class Language implements de.jplag.Language { public static final String FILE_ENDING = "." + EcorePackage.eNAME; private static final String NAME = "EMF metamodel"; - public static final String IDENTIFIER = "emf-metamodel"; + public static final String IDENTIFIER = "emf"; private static final int DEFAULT_MIN_TOKEN_MATCH = 6; protected final EcoreParser parser; From 0f1536f11946f13b51b16e5798966dc1fc93e062 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Sa=C4=9Flam?= Date: Thu, 29 Sep 2022 10:56:45 +0200 Subject: [PATCH 3/8] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index ce19f85b3d..3e3f289d44 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,6 @@ In the following, a list of all supported languages with their supported languag | [Scala](https://www.scala-lang.org) | 2.13.8 | scala | beta | Scalameta | | [Scheme](http://www.scheme-reports.org) | ? | scheme | unknown | JavaCC | | [EMF Metamodel](https://www.eclipse.org/modeling/emf/) | 2.25.0 | emf-metamodel | alpha | EMF | -| [EMF Metamodel](https://www.eclipse.org/modeling/emf/) (dynamic) | 2.25.0 | emf-metamodel-dynamic | alpha | EMF | | Text (naive) | - | text | legacy | CoreNLP | ## Download and Installation From aefc7bf444d1cb135f50855ba62435d6d96ce8e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Sa=C4=9Flam?= Date: Thu, 29 Sep 2022 11:02:50 +0200 Subject: [PATCH 4/8] Adapt language test case to consider hidden languages. --- cli/src/test/java/de/jplag/cli/LanguageTest.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cli/src/test/java/de/jplag/cli/LanguageTest.java b/cli/src/test/java/de/jplag/cli/LanguageTest.java index 3e701c3fd6..5cabbbb13c 100644 --- a/cli/src/test/java/de/jplag/cli/LanguageTest.java +++ b/cli/src/test/java/de/jplag/cli/LanguageTest.java @@ -37,10 +37,12 @@ void testLoading() { @Test void testValidLanguages() { for (Language language : LanguageLoader.getAllAvailableLanguages().values()) { - String argument = buildArgument(CommandLineArgument.LANGUAGE, language.getIdentifier()); - buildOptionsFromCLI(argument, CURRENT_DIRECTORY); - assertEquals(language.getIdentifier(), options.language().getIdentifier()); - assertEquals(Arrays.asList(language.suffixes()), options.fileSuffixes()); + if (!language.isHidden()) { + String argument = buildArgument(CommandLineArgument.LANGUAGE, language.getIdentifier()); + buildOptionsFromCLI(argument, CURRENT_DIRECTORY); + assertEquals(language.getIdentifier(), options.language().getIdentifier()); + assertEquals(Arrays.asList(language.suffixes()), options.fileSuffixes()); + } } } From 057941dd56545ec9af1e066d43153c25e15cef66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Sa=C4=9Flam?= Date: Thu, 29 Sep 2022 11:24:27 +0200 Subject: [PATCH 5/8] Replace hidden language with language dependency removal in the CLI module. --- cli/pom.xml | 5 ----- cli/src/test/java/de/jplag/cli/LanguageTest.java | 10 ++++------ language-api/src/main/java/de/jplag/Language.java | 8 -------- .../src/main/java/de/jplag/LanguageLoader.java | 3 +-- .../src/main/java/de/jplag/emf/dynamic/Language.java | 5 ----- 5 files changed, 5 insertions(+), 26 deletions(-) diff --git a/cli/pom.xml b/cli/pom.xml index ced3441272..59af6963a2 100644 --- a/cli/pom.xml +++ b/cli/pom.xml @@ -80,11 +80,6 @@ emf-metamodel ${revision} - - de.jplag - emf-metamodel-dynamic - ${revision} - org.kohsuke.metainf-services diff --git a/cli/src/test/java/de/jplag/cli/LanguageTest.java b/cli/src/test/java/de/jplag/cli/LanguageTest.java index 5cabbbb13c..3e701c3fd6 100644 --- a/cli/src/test/java/de/jplag/cli/LanguageTest.java +++ b/cli/src/test/java/de/jplag/cli/LanguageTest.java @@ -37,12 +37,10 @@ void testLoading() { @Test void testValidLanguages() { for (Language language : LanguageLoader.getAllAvailableLanguages().values()) { - if (!language.isHidden()) { - String argument = buildArgument(CommandLineArgument.LANGUAGE, language.getIdentifier()); - buildOptionsFromCLI(argument, CURRENT_DIRECTORY); - assertEquals(language.getIdentifier(), options.language().getIdentifier()); - assertEquals(Arrays.asList(language.suffixes()), options.fileSuffixes()); - } + String argument = buildArgument(CommandLineArgument.LANGUAGE, language.getIdentifier()); + buildOptionsFromCLI(argument, CURRENT_DIRECTORY); + assertEquals(language.getIdentifier(), options.language().getIdentifier()); + assertEquals(Arrays.asList(language.suffixes()), options.fileSuffixes()); } } diff --git a/language-api/src/main/java/de/jplag/Language.java b/language-api/src/main/java/de/jplag/Language.java index 5879802eff..4f4d94d780 100644 --- a/language-api/src/main/java/de/jplag/Language.java +++ b/language-api/src/main/java/de/jplag/Language.java @@ -58,12 +58,4 @@ default boolean useViewFiles() { default String viewFileSuffix() { return ""; } - - /** - * Specifies if the language is hidden in the CLI interface. - * @return true if it is hidden. - */ - default boolean isHidden() { - return false; - } } diff --git a/language-api/src/main/java/de/jplag/LanguageLoader.java b/language-api/src/main/java/de/jplag/LanguageLoader.java index f67dc50e6a..2b4a7e310d 100644 --- a/language-api/src/main/java/de/jplag/LanguageLoader.java +++ b/language-api/src/main/java/de/jplag/LanguageLoader.java @@ -70,8 +70,7 @@ public static Optional getLanguage(String identifier) { * @see Language#getIdentifier() */ public static Set getAllAvailableLanguageIdentifiers() { - var identifiers = getAllAvailableLanguages().values().stream().filter(it -> !it.isHidden()).map(Language::getIdentifier).toList(); - return new TreeSet<>(identifiers); + return new TreeSet<>(getAllAvailableLanguages().keySet()); } /** diff --git a/languages/emf-metamodel-dynamic/src/main/java/de/jplag/emf/dynamic/Language.java b/languages/emf-metamodel-dynamic/src/main/java/de/jplag/emf/dynamic/Language.java index 906c5195f5..9000073bca 100644 --- a/languages/emf-metamodel-dynamic/src/main/java/de/jplag/emf/dynamic/Language.java +++ b/languages/emf-metamodel-dynamic/src/main/java/de/jplag/emf/dynamic/Language.java @@ -34,9 +34,4 @@ public String getIdentifier() { public int minimumTokenMatch() { return DEFAULT_MIN_TOKEN_MATCH; } - - @Override - public boolean isHidden() { - return true; // currently hidden, as the other EMF language module should be used. - } } From 5fec80278e884ead7ab051d2880f50f8d5170747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Sa=C4=9Flam?= Date: Thu, 29 Sep 2022 11:30:30 +0200 Subject: [PATCH 6/8] Adapt language test to accept the hidden EMF language. --- cli/src/test/java/de/jplag/cli/LanguageTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/src/test/java/de/jplag/cli/LanguageTest.java b/cli/src/test/java/de/jplag/cli/LanguageTest.java index 3e701c3fd6..10fa7008d3 100644 --- a/cli/src/test/java/de/jplag/cli/LanguageTest.java +++ b/cli/src/test/java/de/jplag/cli/LanguageTest.java @@ -31,7 +31,7 @@ void testInvalidLanguage() throws Exception { @Test void testLoading() { var languages = LanguageLoader.getAllAvailableLanguages(); - Assertions.assertEquals(12, languages.size(), "Loaded Languages: " + languages.keySet()); + Assertions.assertEquals(11, languages.size(), "Loaded Languages: " + languages.keySet()); } @Test From 1e507c20cb4c39a669817adf534f3564b5e2a4f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Sa=C4=9Flam?= Date: Thu, 29 Sep 2022 11:47:35 +0200 Subject: [PATCH 7/8] Fix issue with persisting tree view files. --- .../src/main/java/de/jplag/emf/util/MetamodelTreeView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages/emf-metamodel/src/main/java/de/jplag/emf/util/MetamodelTreeView.java b/languages/emf-metamodel/src/main/java/de/jplag/emf/util/MetamodelTreeView.java index b961ddf4ab..842186647b 100644 --- a/languages/emf-metamodel/src/main/java/de/jplag/emf/util/MetamodelTreeView.java +++ b/languages/emf-metamodel/src/main/java/de/jplag/emf/util/MetamodelTreeView.java @@ -85,7 +85,7 @@ public MetamodelToken convertToMetadataEnrichedTokenAndAdd(MetamodelToken token, * @param suffix is the suffix of the file to be written. */ public void writeToFile(String suffix) { - File treeViewFile = new File(file, suffix); + File treeViewFile = new File(file + suffix); try (BufferedWriter writer = new BufferedWriter(new FileWriter(treeViewFile));) { if (!treeViewFile.createNewFile()) { logger.warn("Overwriting tree view file: {}", treeViewFile); From 5d1cb86c8b1ae048b4d43464d725fcfe655642a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Sa=C4=9Flam?= Date: Thu, 29 Sep 2022 13:10:48 +0200 Subject: [PATCH 8/8] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3e3f289d44..1e21df9b29 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ In the following, a list of all supported languages with their supported languag | [Rust](https://www.rust-lang.org/) | 1.60.0 | rust | beta | ANTLR 4 | | [Scala](https://www.scala-lang.org) | 2.13.8 | scala | beta | Scalameta | | [Scheme](http://www.scheme-reports.org) | ? | scheme | unknown | JavaCC | -| [EMF Metamodel](https://www.eclipse.org/modeling/emf/) | 2.25.0 | emf-metamodel | alpha | EMF | +| [EMF Metamodel](https://www.eclipse.org/modeling/emf/) | 2.25.0 | emf | alpha | EMF | | Text (naive) | - | text | legacy | CoreNLP | ## Download and Installation @@ -65,7 +65,7 @@ named arguments: -h, --help show this help message and exit -new NEW [NEW ...] Root-directory with submissions to check for plagiarism (same as the root directory) -old OLD [OLD ...] Root-directory with prior submissions to compare against - -l {cpp,csharp,emf-metamodel,emf-metamodel-dynamic,go,java,kotlin,python3,rlang,scala,scheme,text} + -l {cpp,csharp,emf,go,java,kotlin,python3,rlang,scala,scheme,text} Select the language to parse the submissions (default: java) -bc BC Path of the directory containing the base code (common framework used in all submissions)