void SimpleStreamChecker::reportLeaks(SymbolVector LeakedStreams, CheckerContext &C, ExplodedNode *ErrNode) const { // Attach bug reports to the leak node. // TODO: Identify the leaked file descriptor. for (SmallVectorImpl<SymbolRef>::iterator I = LeakedStreams.begin(), E = LeakedStreams.end(); I != E; ++I) { BugReport *R = new BugReport(*LeakBugType, "Opened file is never closed; potential resource leak", ErrNode); R->markInteresting(*I); C.emitReport(R); } }
BleuSScorer::count_type BleuSScorer::find(const SymbolVector& ngram) const { typedef SymbolVector ngram_type; ngram_set_type::id_type id = ngrams.root(); ngram_type::const_iterator iter_end = ngram.end(); for (ngram_type::const_iterator iter = ngram.begin(); iter != iter_end; ++ iter) { id = ngrams.find(id, *iter); if (ngrams.is_root(id)) break; } return (ngrams.is_root(id) ? 0.0 : ngrams[id]); }