addBuiltInPolicies(); URL u = DetectorFactoryCollection.getCoreResource("obligationPolicy.db"); try { AnalysisContext.logError("Unable to read " + u, e); scanForResourceTypes();
@Override public void visitClass(ClassDescriptor classDescriptor) throws CheckedAnalysisException { XClass xclass = Global.getAnalysisCache().getClassAnalysis(XClass.class, classDescriptor); // Is this class an obligation type? Obligation thisClassObligation = database.getFactory().getObligationByType(xclass.getClassDescriptor()); // Scan methods for uses of obligation-related annotations for (XMethod xmethod : xclass.getXMethods()) { // Is this method marked with @CreatesObligation? if (thisClassObligation != null) { if (xmethod.getAnnotation(createsObligation) != null) { database.addEntry(new MatchMethodEntry(xmethod, ObligationPolicyDatabaseActionType.ADD, ObligationPolicyDatabaseEntryType.STRONG, thisClassObligation)); } // Is this method marked with @DischargesObligation? if (xmethod.getAnnotation(dischargesObligation) != null) { database.addEntry(new MatchMethodEntry(xmethod, ObligationPolicyDatabaseActionType.DEL, ObligationPolicyDatabaseEntryType.STRONG, thisClassObligation)); } } addObligations(xmethod); } }
handleWillCloseWhenClosed(xmethod, obligationType); } else if (xmethod.getParameterAnnotation(i, willClose) != null) { addParameterDeletesObligationDatabaseEntry(xmethod, obligationType, ObligationPolicyDatabaseEntryType.STRONG); sawAnnotationsInApplicationCode = true; addParameterDeletesObligationDatabaseEntry(xmethod, obligationType, ObligationPolicyDatabaseEntryType.STRONG); } else { || xmethod.getName().toLowerCase().indexOf("close") >= 0 || xmethod.getSignature().toLowerCase().indexOf("Closeable") >= 0) { addParameterDeletesObligationDatabaseEntry(xmethod, obligationType, ObligationPolicyDatabaseEntryType.WEAK);
addFileStreamEntries("InputStream"); addFileStreamEntries("OutputStream"); addFileStreamEntries("Reader"); addFileStreamEntries("Writer");
addFileStreamEntries("InputStream"); addFileStreamEntries("OutputStream"); addFileStreamEntries("Reader"); addFileStreamEntries("Writer");
addBuiltInPolicies(); URL u = DetectorFactoryCollection.getCoreResource("obligationPolicy.db"); try { AnalysisContext.logError("Unable to read " + u, e); scanForResourceTypes();
handleWillCloseWhenClosed(xmethod, obligationType); } else if (xmethod.getParameterAnnotation(i, willClose) != null) { addParameterDeletesObligationDatabaseEntry(xmethod, obligationType, ObligationPolicyDatabaseEntryType.STRONG); sawAnnotationsInApplicationCode = true; addParameterDeletesObligationDatabaseEntry(xmethod, obligationType, ObligationPolicyDatabaseEntryType.STRONG); } else { || xmethod.getName().toLowerCase().indexOf("close") >= 0 || xmethod.getSignature().toLowerCase().indexOf("Closeable") >= 0) { addParameterDeletesObligationDatabaseEntry(xmethod, obligationType, ObligationPolicyDatabaseEntryType.WEAK);
@Override public void visitClass(ClassDescriptor classDescriptor) throws CheckedAnalysisException { XClass xclass = Global.getAnalysisCache().getClassAnalysis(XClass.class, classDescriptor); // Is this class an obligation type? Obligation thisClassObligation = database.getFactory().getObligationByType(xclass.getClassDescriptor()); // Scan methods for uses of obligation-related annotations for (XMethod xmethod : xclass.getXMethods()) { // Is this method marked with @CreatesObligation? if (thisClassObligation != null) { if (xmethod.getAnnotation(createsObligation) != null) { database.addEntry(new MatchMethodEntry(xmethod, ObligationPolicyDatabaseActionType.ADD, ObligationPolicyDatabaseEntryType.STRONG, thisClassObligation)); } // Is this method marked with @DischargesObligation? if (xmethod.getAnnotation(dischargesObligation) != null) { database.addEntry(new MatchMethodEntry(xmethod, ObligationPolicyDatabaseActionType.DEL, ObligationPolicyDatabaseEntryType.STRONG, thisClassObligation)); } } addObligations(xmethod); } }