Explorar o código

Enforce UTF-8 in the Java 9+ frontend.

Timur Sağlam %!s(int64=5) %!d(string=hai) anos
pai
achega
98df0c0c7a

+ 2 - 1
jplag.frontend.java-1.9/src/main/java/jplag/java19/JavacAdapter.java

@@ -2,6 +2,7 @@ package jplag.java19;
 
 import java.io.File;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Paths;
 import java.util.Collections;
 
@@ -23,7 +24,7 @@ public class JavacAdapter {
     private static final JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
 
     public int parseFiles(File dir, File[] pathedFiles, final Parser parser) {
-        final StandardJavaFileManager jfm = javac.getStandardFileManager(null, null, null);
+        final StandardJavaFileManager jfm = javac.getStandardFileManager(null, null, StandardCharsets.UTF_8);
         DiagnosticCollector<? super JavaFileObject> diagListen = new DiagnosticCollector<>();
         final JavaCompiler.CompilationTask task = javac.getTask(null, jfm, diagListen, null, null, jfm.getJavaFileObjects(pathedFiles));
         Iterable<? extends CompilationUnitTree> asts = Collections.emptyList();

+ 1 - 6
jplag/src/main/java/jplag/JPlag.java

@@ -187,11 +187,6 @@ public class JPlag implements ProgramI {
      * Find all submissions in the given root directory.
      */
     private Vector<Submission> findSubmissions(File rootDir) throws ExitException {
-        String[] fileNamesInRootDir = getSortedFileNamesInRootDir(rootDir);
-        return mapFileNamesInRootDirToSubmissions(fileNamesInRootDir, rootDir);
-    }
-
-    private String[] getSortedFileNamesInRootDir(File rootDir) throws ExitException {
         String[] fileNamesInRootDir;
 
         try {
@@ -206,7 +201,7 @@ public class JPlag implements ProgramI {
 
         Arrays.sort(fileNamesInRootDir);
 
-        return fileNamesInRootDir;
+        return mapFileNamesInRootDirToSubmissions(fileNamesInRootDir, rootDir);
     }
 
     private void initializeComparisonStrategy() throws ExitException {