Ver Fonte

Fix logging of the Java compiler adapter.

Timur Sağlam há 4 anos atrás
pai
commit
fc4b75a519

+ 11 - 8
languages/java/src/main/java/de/jplag/java/JavacAdapter.java

@@ -7,8 +7,12 @@ import java.nio.file.Paths;
 import java.util.Collections;
 import java.util.List;
 
-import javax.tools.*;
+import javax.tools.Diagnostic;
+import javax.tools.DiagnosticCollector;
+import javax.tools.JavaCompiler;
 import javax.tools.JavaCompiler.CompilationTask;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
 
 import org.slf4j.Logger;
 
@@ -30,30 +34,29 @@ public class JavacAdapter {
         try (final StandardJavaFileManager fileManager = javac.getStandardFileManager(listener, null, StandardCharsets.UTF_8)) {
             var javaFiles = fileManager.getJavaFileObjectsFromFiles(pathedFiles);
 
-            // We need to disable annotation processing
-            // See
+            // We need to disable annotation processing, see
             // https://stackoverflow.com/questions/72737445/system-java-compiler-behaves-different-depending-on-dependencies-defined-in-mave
             final CompilationTask task = javac.getTask(null, fileManager, listener, List.of("-proc:none"), null, javaFiles);
             final Trees trees = Trees.instance(task);
             final SourcePositions positions = trees.getSourcePositions();
-            for (final CompilationUnitTree ast : executeCompilationTask(task)) {
+            for (final CompilationUnitTree ast : executeCompilationTask(task, parser.logger)) {
                 final String filename = fileNameOf(directory, ast);
                 final LineMap map = ast.getLineMap();
                 ast.accept(new TokenGeneratingTreeScanner(filename, parser, map, positions, ast), null);
                 parser.add(Token.fileEnd(filename));
             }
-        } catch (IOException e) {
-            parser.logger.error(e.getMessage(), e);
+        } catch (IOException exception) {
+            parser.logger.error(exception.getMessage(), exception);
         }
         return processErrors(parser.logger, listener);
     }
 
-    private Iterable<? extends CompilationUnitTree> executeCompilationTask(final CompilationTask task) {
+    private Iterable<? extends CompilationUnitTree> executeCompilationTask(final CompilationTask task, Logger logger) {
         Iterable<? extends CompilationUnitTree> abstractSyntaxTrees = Collections.emptyList();
         try {
             abstractSyntaxTrees = ((JavacTask) task).parse();
         } catch (IOException exception) {
-            exception.printStackTrace();
+            logger.error(exception.getMessage(), exception);
         }
         return abstractSyntaxTrees;
     }