public void logAnError(String msg) { RepositoryLookupFailureCallback lookupFailureCallback = getLookupFailureCallback(); if (lookupFailureCallback != null) { lookupFailureCallback.logError(msg); } }
static public void reportMissingClass(ClassDescriptor c) { requireNonNull(c, "argument is null"); if (!analyzingApplicationClass()) { return; } String missing = c.getDottedClassName(); if (missing.length() == 1) { System.out.println(c); } if (skipReportingMissingClass(missing)) { return; } RepositoryLookupFailureCallback lookupFailureCallback = getCurrentLookupFailureCallback(); if (lookupFailureCallback != null) { lookupFailureCallback.reportMissingClass(c); } }
String superclassName = jclass.getSuperclassName(); if (codeLength > 6000 && Const.STATIC_INITIALIZER_NAME.equals(methodName) && "java.lang.Enum".equals(superclassName)) { analysisContext.getLookupFailureCallback().reportSkippedAnalysis( new JavaClassAndMethod(jclass, method).toMethodDescriptor()); return null; analysisContext.getLookupFailureCallback().reportSkippedAnalysis( new JavaClassAndMethod(jclass, method).toMethodDescriptor()); return null;
.traverseSupertypesDepthFirst(xmethod.getClassDescriptor(), visitor); } catch (ClassNotFoundException e) { AnalysisContext.currentAnalysisContext().getLookupFailureCallback().reportMissingClass(e); return Collections.<TypeQualifierValue<?>> emptySet(); } catch (UncheckedAnalysisException e) { AnalysisContext.currentAnalysisContext().getLookupFailureCallback() .logError("Error getting relevant type qualifiers for " + xmethod.toString(), e); return Collections.<TypeQualifierValue<?>> emptySet();
Method method = analysisCache.getMethodAnalysis(Method.class, descriptor); JavaClassAndMethod javaClassAndMethod = new JavaClassAndMethod(jclass, method); AnalysisContext.currentAnalysisContext().getLookupFailureCallback().reportSkippedAnalysis(descriptor); throw new MethodUnprofitableException(javaClassAndMethod); } catch (MissingClassException e) { AnalysisContext.currentAnalysisContext().getLookupFailureCallback() .reportMissingClass(e.getClassNotFoundException()); } catch (DataflowAnalysisException e) { AnalysisContext.currentAnalysisContext().getLookupFailureCallback() .logError("unable to extract type analysis", e); } catch (ClassNotFoundException e) { AnalysisContext.currentAnalysisContext().getLookupFailureCallback().reportMissingClass(e);
Method method = analysisCache.getMethodAnalysis(Method.class, descriptor); JavaClassAndMethod javaClassAndMethod = new JavaClassAndMethod(jclass, method); AnalysisContext.currentAnalysisContext().getLookupFailureCallback().reportSkippedAnalysis(descriptor); throw new MethodUnprofitableException(javaClassAndMethod); } catch (MissingClassException e) { AnalysisContext.currentAnalysisContext().getLookupFailureCallback() .reportMissingClass(e.getClassNotFoundException()); } catch (DataflowAnalysisException e) { AnalysisContext.currentAnalysisContext().getLookupFailureCallback() .logError("unable to extract type analysis", e); } catch (ClassNotFoundException e) { AnalysisContext.currentAnalysisContext().getLookupFailureCallback().reportMissingClass(e);
.traverseSupertypesDepthFirst(xmethod.getClassDescriptor(), visitor); } catch (ClassNotFoundException e) { AnalysisContext.currentAnalysisContext().getLookupFailureCallback().reportMissingClass(e); return Collections.<TypeQualifierValue<?>> emptySet(); } catch (UncheckedAnalysisException e) { AnalysisContext.currentAnalysisContext().getLookupFailureCallback() .logError("Error getting relevant type qualifiers for " + xmethod.toString(), e); return Collections.<TypeQualifierValue<?>> emptySet();
public static void logMissingAnnotationClass(MissingClassException e) { ClassDescriptor c = e.getClassDescriptor(); if (c.getClassName().startsWith("javax.annotation")) { AnalysisContext.currentAnalysisContext().getLookupFailureCallback().reportMissingClass(c); } }
String superclassName = jclass.getSuperclassName(); if (codeLength > 6000 && "<clinit>".equals(methodName) && "java.lang.Enum".equals(superclassName)) { analysisContext.getLookupFailureCallback().reportSkippedAnalysis( new JavaClassAndMethod(jclass, method).toMethodDescriptor()); return null; analysisContext.getLookupFailureCallback().reportSkippedAnalysis( new JavaClassAndMethod(jclass, method).toMethodDescriptor()); return null;
private boolean isThrowable(ReferenceType ref) /* * throws * ClassNotFoundException */{ try { Subtypes2 subtypes2 = AnalysisContext.currentAnalysisContext().getSubtypes2(); return subtypes2.isSubtype(ref, Type.THROWABLE); } catch (ClassNotFoundException e) { // We'll just assume that it's not an exception type. lookupFailureCallback.reportMissingClass(e); return false; } }
/** * Write an interprocedural property database. * * @param <DatabaseType> * actual type of the database * @param <KeyType> * type of key (e.g., method or field) * @param <Property> * type of properties stored in the database * @param database * the database * @param fileName * name of database file * @param description * description of the database */ public <DatabaseType extends PropertyDatabase<KeyType, Property>, KeyType extends FieldOrMethodDescriptor, Property> void storePropertyDatabase( DatabaseType database, String fileName, String description) { try { File dbFile = new File(getDatabaseOutputDir(), fileName); if (DEBUG) { System.out.println("Writing " + description + " to " + dbFile.getPath() + "..."); } database.writeToFile(dbFile.getPath()); } catch (IOException e) { getLookupFailureCallback().logError("Error writing " + description, e); } }
/** * file a ClassNotFoundException with the lookupFailureCallback * * @see #getLookupFailureCallback() */ static public void reportMissingClass(ClassNotFoundException e) { requireNonNull(e, "argument is null"); String missing = AbstractBugReporter.getMissingClassName(e); if (skipReportingMissingClass(missing)) { return; } if (!analyzingApplicationClass()) { return; } RepositoryLookupFailureCallback lookupFailureCallback = getCurrentLookupFailureCallback(); if (lookupFailureCallback != null) { lookupFailureCallback.reportMissingClass(e); } }
@Override public boolean mightCloseResource(BasicBlock basicBlock, InstructionHandle handle, ConstantPoolGen cpg) throws DataflowAnalysisException { InvokeInstruction inv = toInvokeInstruction(handle.getInstruction()); if (inv == null) { return false; } String className = inv.getClassName(cpg); String methodName = inv.getName(cpg); String methodSig = inv.getSignature(cpg); try { if ("unlock".equals(methodName) && "()V".equals(methodSig) && Hierarchy.isSubtype(className, "java.util.concurrent.locks.Lock")) { return true; } } catch (ClassNotFoundException e) { lookupFailureCallback.reportMissingClass(e); } return false; }
lookupFailureCallback.logError(msg, e);
AnalysisContext.currentAnalysisContext().getLookupFailureCallback().reportMissingClass(e.getClassNotFoundException()); } catch (CheckedAnalysisException e) { AnalysisContext.logError("Error looking up annotation class " + typeQualifier.toDottedClassName(), e);
.logError("Error analyzing " + xmethod + " for unconditional deref training", e); } catch (DataflowAnalysisException e) { XMethod xmethod = XFactory.createXMethod(classContext.getJavaClass(), method); AnalysisContext.currentAnalysisContext().getLookupFailureCallback() .logError("Error analyzing " + xmethod + " for unconditional deref training", e);
lookupFailureCallback.reportMissingClass(e);
.logError("Error analyzing " + xmethod + " for unconditional deref training", e);