List of usage examples for org.eclipse.jdt.core.compiler IProblem getSourceStart
int getSourceStart();
From source file:at.bestsolution.javafx.ide.jdt.internal.JavaEditor.java
License:Open Source License
@Inject public JavaEditor(BorderPane pane, IEditorInput input) { editor = new SourceEditor(); pane.setCenter(editor);/*from ww w .j a v a 2 s . c o m*/ IResourceFileInput fsInput = (IResourceFileInput) input; try { unit = ((ICompilationUnit) JavaCore.create(fsInput.getFile())) .getWorkingCopy(new FXWorkingCopyOwner(new IProblemRequestor() { private List<ProblemMarker> l = new ArrayList<>(); @Override public boolean isActive() { // TODO Auto-generated method stub return true; } @Override public void endReporting() { setMarkers(l); } @Override public void beginReporting() { l.clear(); } @Override public void acceptProblem(IProblem problem) { int linenumber = problem.getSourceLineNumber(); int startCol = problem.getSourceStart(); int endCol = problem.getSourceEnd(); if (endCol == startCol) { endCol++; } String description = problem.getMessage(); ProblemMarker marker = new ProblemMarker( problem.isError() ? at.bestsolution.javafx.ide.editor.ProblemMarker.Type.ERROR : at.bestsolution.javafx.ide.editor.ProblemMarker.Type.WARNING, linenumber, startCol, endCol, description); l.add(marker); } }), new NullProgressMonitor()); } catch (JavaModelException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } final Document doc = createDocument(unit); editor.setDocument(doc); editor.setContentProposalComputer(new ContentProposalComputer() { @Override public List<Proposal> computeProposals(String line, String prefix, int offset) { final List<Proposal> l = new ArrayList<ContentProposalComputer.Proposal>(); try { unit.codeComplete(offset, new CompletionRequestor() { @Override public void accept(CompletionProposal proposal) { String completion = new String(proposal.getCompletion()); if (!Flags.isPublic(proposal.getFlags())) { return; } if (proposal.getKind() == CompletionProposal.METHOD_REF) { String sig = Signature.toString(new String(proposal.getSignature()), new String(proposal.getName()), null, false, false); StyledString s = new StyledString(sig + " : " + Signature.getSimpleName(Signature .toString(Signature.getReturnType(new String(proposal.getSignature()))))); s.appendString( " - " + Signature.getSignatureSimpleName( new String(proposal.getDeclarationSignature())), Style.colored("#AAAAAA")); l.add(new Proposal(Type.METHOD, completion, s)); } else if (proposal.getKind() == CompletionProposal.FIELD_REF) { StyledString s = new StyledString( completion + " : " + (proposal.getSignature() != null ? Signature.getSignatureSimpleName( new String(proposal.getSignature())) : "<unknown>")); s.appendString( " - " + (proposal.getDeclarationSignature() != null ? Signature.getSignatureSimpleName( new String(proposal.getDeclarationSignature())) : "<unknown>"), Style.colored("#AAAAAA")); l.add(new Proposal(Type.FIELD, completion, s)); } else if (proposal.getKind() == CompletionProposal.TYPE_REF) { if (proposal.getAccessibility() == IAccessRule.K_NON_ACCESSIBLE) { return; } StyledString s = new StyledString( Signature.getSignatureSimpleName(new String(proposal.getSignature()))); s.appendString(" - " + new String(proposal.getDeclarationSignature()), Style.colored("#AAAAAA")); l.add(new Proposal(Type.TYPE, new String(proposal.getCompletion()), s)); } else { System.err.println(proposal); } } }); } catch (JavaModelException e) { // TODO Auto-generated catch block e.printStackTrace(); } return l; } }); editor.setSaveCallback(new Runnable() { @Override public void run() { try { unit.commitWorkingCopy(true, null); } catch (JavaModelException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); try { unit.reconcile(ICompilationUnit.NO_AST, true, null, null); } catch (JavaModelException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
From source file:com.google.gdt.eclipse.appengine.rpc.util.CompilationUnitCreator.java
License:Open Source License
@SuppressWarnings("unchecked") private void removeUnusedImports(ICompilationUnit cu, Set<String> existingImports, boolean needsSave) throws CoreException { ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setSource(cu);/*from w w w .j a v a 2 s . c om*/ parser.setResolveBindings(true); CompilationUnit root = (CompilationUnit) parser.createAST(null); if (root.getProblems().length == 0) { return; } List<ImportDeclaration> importsDecls = root.imports(); if (importsDecls.isEmpty()) { return; } ImportsManager imports = new ImportsManager(root); int importsEnd = ASTNodes.getExclusiveEnd((ASTNode) importsDecls.get(importsDecls.size() - 1)); IProblem[] problems = root.getProblems(); for (int i = 0; i < problems.length; i++) { IProblem curr = problems[i]; if (curr.getSourceEnd() < importsEnd) { int id = curr.getID(); if (id == IProblem.UnusedImport || id == IProblem.NotVisibleType) { int pos = curr.getSourceStart(); for (int k = 0; k < importsDecls.size(); k++) { ImportDeclaration decl = importsDecls.get(k); if (decl.getStartPosition() <= pos && pos < decl.getStartPosition() + decl.getLength()) { if (existingImports.isEmpty() || !existingImports.contains(ASTNodes.asString(decl))) { String name = decl.getName().getFullyQualifiedName(); if (decl.isOnDemand()) { name += ".*"; //$NON-NLS-1$ } if (decl.isStatic()) { imports.removeStaticImport(name); } else { imports.removeImport(name); } } break; } } } } } imports.create(needsSave, null); }
From source file:com.google.gdt.eclipse.appengine.rpc.wizards.helpers.RpcServiceLayerCreator.java
License:Open Source License
@SuppressWarnings("unchecked") private void removeUnusedImports(ICompilationUnit cu, Set<String> existingImports, boolean needsSave) throws CoreException { ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setSource(cu);//from ww w .ja v a 2s.co m parser.setResolveBindings(true); CompilationUnit root = (CompilationUnit) parser.createAST(null); if (root.getProblems().length == 0) { return; } List<ImportDeclaration> importsDecls = root.imports(); if (importsDecls.isEmpty()) { return; } ImportsManager imports = new ImportsManager(root); int importsEnd = ASTNodes.getExclusiveEnd(importsDecls.get(importsDecls.size() - 1)); IProblem[] problems = root.getProblems(); for (int i = 0; i < problems.length; i++) { IProblem curr = problems[i]; if (curr.getSourceEnd() < importsEnd) { int id = curr.getID(); if (id == IProblem.UnusedImport || id == IProblem.NotVisibleType) { int pos = curr.getSourceStart(); for (int k = 0; k < importsDecls.size(); k++) { ImportDeclaration decl = importsDecls.get(k); if (decl.getStartPosition() <= pos && pos < decl.getStartPosition() + decl.getLength()) { if (existingImports.isEmpty() || !existingImports.contains(ASTNodes.asString(decl))) { String name = decl.getName().getFullyQualifiedName(); if (decl.isOnDemand()) { name += ".*"; //$NON-NLS-1$ } if (decl.isStatic()) { imports.removeStaticImport(name); } else { imports.removeImport(name); } } break; } } } } } imports.create(needsSave, null); }
From source file:com.google.gdt.eclipse.core.JavaASTUtils.java
License:Open Source License
/** * Returns <code>true</code> if any of the problems fall within the * {@link ASTNode}'s source range.//ww w . j a va 2 s . c o m */ public static boolean hasErrors(ASTNode node, IProblem[] problems) { int startPosition = node.getStartPosition(); int endPosition = startPosition + node.getLength() - 1; for (IProblem problem : problems) { if (!problem.isError()) { // Skip any problem that is not an error continue; } if (problem.getSourceStart() >= startPosition && problem.getSourceEnd() <= endPosition) { return true; } } return false; }
From source file:com.microsoft.javapkgsrv.JavaParser.java
License:MIT License
public List<Problem> ProcessFileParseMessagesRequest(Integer fileId) { List<FileParseMessagesResponse.Problem> ret = new ArrayList<FileParseMessagesResponse.Problem>(); if (ActiveUnits.containsKey(fileId)) { CompilationUnit cu = ActiveUnits.get(fileId); IProblem[] problems = cu.getProblems(); for (IProblem problem : problems) { System.out.println(problem.toString()); FileParseMessagesResponse.Problem.Builder retProblem = FileParseMessagesResponse.Problem .newBuilder().setId(problem.getID()).setMessage(problem.getMessage()) .setFileName(new String(problem.getOriginatingFileName())) .setScopeStart(problem.getSourceStart()).setScopeEnd(problem.getSourceEnd() + 1) .setLineNumber(problem.getSourceLineNumber()).setProblemType(GetProblemType(problem)); for (String arg : problem.getArguments()) retProblem.addArguments(arg); ret.add(retProblem.build()); }// w ww. ja va2 s .c o m } return ret; }
From source file:com.tsc9526.monalisa.plugin.eclipse.jdt.ProblemDetail.java
License:Open Source License
private String getDetail(IProblem problem) { StringBuilder sb = new StringBuilder(); String className = new String(problem.getOriginatingFileName()).replace("/", "."); className = className.substring(0, className.length() - 5); String message = problem.getMessage(); if (problem.getID() == IProblem.CannotImportPackage) { message = problem.getArguments()[0] + " cannot be resolved"; }//from w w w . ja v a2 s.c o m sb.append(className + ":" + message + ", Source: "); sb.append("\r\n==============================================\r\n"); int start = problem.getSourceStart(); int end = problem.getSourceEnd(); char[] contents = result.getCompilationUnit().getContents(); if (end > start && start >= 0 && end < contents.length) { int lineOffset = -1; for (int i = 0; i <= start; i++) { if (contents[i] == '\n') { lineOffset = -1; } else { lineOffset++; } } int lineStart = 0; for (int i = start; i < contents.length; i++) { if (contents[i] == '\n') { lineStart = i + 1; break; } } int minEnd = end; for (int i = start; i <= end; i++) { if (contents[i] == '\n') { minEnd = i; break; } } sb.append(new String(contents, 0, lineStart)); for (int i = 0; i < lineOffset; i++) { sb.append(" "); } for (int i = 0; i <= (minEnd - start); i++) { sb.append("^"); } sb.append(" <--- " + message + "\r\n"); sb.append(new String(contents, lineStart, contents.length - lineStart)); } else { sb.append(new String(contents)); } sb.append("\r\n=====================================================\r\n"); return sb.toString(); }
From source file:com.xqbase.compiler.eclipse.EclipseJavaCompiler.java
License:Open Source License
private CompilerMessage handleWarning(String fileName, IProblem warning) { return new CompilerMessage(fileName, CompilerMessage.Kind.WARNING, warning.getSourceLineNumber(), warning.getSourceStart(), warning.getSourceLineNumber(), warning.getSourceEnd(), warning.getMessage());/* ww w . jav a2 s . co m*/ }
From source file:edu.brown.cs.bubbles.bedrock.BedrockQuickFix.java
License:Open Source License
/********************************************************************************/ private List<CategorizedProblem> getProblems(CompilationUnit cu, List<Element> xmls) { IProblem[] probs = cu.getProblems(); List<CategorizedProblem> pbs = new ArrayList<CategorizedProblem>(); for (Element e : xmls) { int mid = IvyXml.getAttrInt(e, "MSGID", 0); if (mid == 0) continue; int sln = IvyXml.getAttrInt(e, "START"); if (sln < 0) continue; for (IProblem ip : probs) { BedrockPlugin/*from w w w . j a v a 2 s . c o m*/ .logD("Consider problem " + ip.getID() + " " + ip.getSourceStart() + " " + ip.getClass()); if (!(ip instanceof CategorizedProblem)) continue; if (ip.getID() != mid) continue; if (Math.abs(ip.getSourceStart() - sln) > 2) continue; pbs.add((CategorizedProblem) ip); } } return pbs; }
From source file:edu.brown.cs.bubbles.bedrock.BedrockUtil.java
License:Open Source License
/********************************************************************************/ static void outputProblem(IProject proj, IProblem ip, IvyXmlWriter xw) { xw.begin("PROBLEM"); if (ip instanceof IMarker) { IMarker xmk = (IMarker) ip;/*www. j a v a 2s.c o m*/ xw.field("ID", xmk.getId()); } xw.field("MSGID", ip.getID()); xw.field("MESSAGE", ip.getMessage()); char[] filc = ip.getOriginatingFileName(); if (filc != null) { File fnm = new File(new String(filc)); fnm = getFileForPath(fnm, proj); xw.field("FILE", fnm.getAbsolutePath()); } xw.field("LINE", ip.getSourceLineNumber()); xw.field("START", ip.getSourceStart()); xw.field("END", ip.getSourceEnd()); if (proj != null) xw.field("PROJECT", proj.getName()); if (ip.isError()) xw.field("ERROR", true); else { switch (ip.getID()) { case IProblem.Task: break; default: xw.field("WARNING", true); break; } } for (String s : ip.getArguments()) { xw.textElement("ARG", s); } BedrockPlugin.getPlugin().addFixes(ip, xw); xw.end("PROBLEM"); }
From source file:jetbrick.template.compiler.JdtCompiler.java
License:Open Source License
@Override protected void generateJavaClass(JavaSource source) throws IOException { INameEnvironment env = new NameEnvironment(source); IErrorHandlingPolicy policy = DefaultErrorHandlingPolicies.proceedWithAllProblems(); CompilerOptions options = getCompilerOptions(); CompilerRequestor requestor = new CompilerRequestor(); IProblemFactory problemFactory = new DefaultProblemFactory(Locale.getDefault()); Compiler compiler = new Compiler(env, policy, options, requestor, problemFactory); compiler.compile(new ICompilationUnit[] { new CompilationUnit(source) }); if (requestor.hasErrors()) { String sourceCode = source.getSourceCode(); String[] sourceCodeLines = sourceCode.split("(\r\n|\r|\n)", -1); StringBuilder sb = new StringBuilder(); sb.append("Compilation failed."); sb.append('\n'); for (IProblem p : requestor.getErrors()) { sb.append(p.getMessage()).append('\n'); int start = p.getSourceStart(); int column = start; // default for (int i = start; i >= 0; i--) { char c = sourceCode.charAt(i); if (c == '\n' || c == '\r') { column = start - i;//from ww w. j a va2 s . c o m break; } } sb.append(StringUtils.getPrettyError(sourceCodeLines, p.getSourceLineNumber(), column, p.getSourceStart(), p.getSourceEnd(), 3)); } sb.append(requestor.getErrors().length); sb.append(" error(s)\n"); throw new CompileErrorException(sb.toString()); } requestor.save(source.getOutputdir()); }