| | |
| | | import javax.tools.JavaFileObject;
|
| | | import javax.tools.StandardJavaFileManager;
|
| | | import javax.tools.ToolProvider;
|
| | | import org.apache.commons.io.FileUtils;
|
| | |
|
| | | /**
|
| | | *
|
| | |
| | | DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector();
|
| | | StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
|
| | | Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(files);
|
| | | compiler.getTask(null, null, diagnostics, null, null, compilationUnits).call();
|
| | | |
| | | File buildDir = new File(targetDir.getParentFile(), "build");
|
| | | final Iterable<String> options = Arrays.asList(new String[]{"-Xlint",
|
| | | /*"-cp", project.getClassPath(),*/
|
| | | /*
|
| | | ausgehend von src eins hoeher, dann nach build
|
| | | */
|
| | | "-d", buildDir.getAbsolutePath()
|
| | | }); |
| | | FileUtils.deleteDirectory(buildDir);
|
| | | buildDir.mkdir();
|
| | | compiler.getTask(null, null, diagnostics, options, null, compilationUnits).call();
|
| | | fileManager.close();
|
| | | collectResults(diagnostics, compilerIssues);
|
| | | collectResults(diagnostics, compilerIssues, relPath);
|
| | | } catch(Exception ex) {
|
| | | logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
|
| | | }
|
| | | return compilerIssues;
|
| | | }
|
| | |
|
| | | private void collectResults(DiagnosticCollector<JavaFileObject> diagnostics, List<CompilerIssue> compilerIssues) {
|
| | | private void collectResults(DiagnosticCollector<JavaFileObject> diagnostics, List<CompilerIssue> compilerIssues, String relPath) {
|
| | | List compileResults = diagnostics.getDiagnostics();
|
| | | Iterator i = compileResults.iterator();
|
| | | while (i.hasNext()) {
|
| | |
| | | issue.setKind(err.getKind().name());
|
| | | issue.setLineNumber(err.getLineNumber());
|
| | | issue.setMessage(err.getMessage(Locale.GERMANY));
|
| | | issue.setSoureName(err.getSource().getName());
|
| | | |
| | | String srcName = err.getSource().getName().replace("\\", "/");
|
| | | String cleanRelPath = relPath.replace(HOME_DIR_NAME + "/", "").replace(PUB_DIR_NAME + "/", "");
|
| | | int pos = srcName.indexOf(cleanRelPath);
|
| | | String className = srcName.substring(pos + cleanRelPath.length());
|
| | | issue.setSourceName(className.replace("/", ".").substring(1));
|
| | | //issue.setSourceName(srcName + "\r\n" + relPath);
|
| | | compilerIssues.add(issue);
|
| | | }
|
| | | }
|
| | |
| | | }
|
| | | fileManager.close();
|
| | | List<CompilerIssue> compilerIssues = new ArrayList();
|
| | | collectResults(diagnostics, compilerIssues);
|
| | | collectResults(diagnostics, compilerIssues, relPath);
|
| | | return compilerIssues;
|
| | | }
|
| | |
|