message: methods with source blocks
  Summary: added code to track #of methods where bbs have at least one sb
diff: @@ -750,6 +750,7 @@ struct SourceBlocksStats {
  size_t total_blocks;
  size_t source_blocks_present;
  size_t source_blocks_total;
  + size_t methods_with_sbs;
  size_t flow_violation_idom;
  size_t flow_violation_direct_predecessors;
  size_t flow_violation_cold_direct_predecessors;
  @@ -761,6 +762,7 @@ struct SourceBlocksStats {
  total_blocks += that.total_blocks;
  source_blocks_present += that.source_blocks_present;
  source_blocks_total += that.source_blocks_total;
  + methods_with_sbs += that.methods_with_sbs;
  flow_violation_idom += that.flow_violation_idom;
  flow_violation_direct_predecessors +=
  that.flow_violation_direct_predecessors;
  @@ -791,7 +793,7 @@ void track_source_block_coverage(PassManager& mgr,
  Timer opt_timer("Calculate SourceBlock Coverage");
  auto stats = walk::parallel::methods<SourceBlocksStats>(
  build_class_scope(stores), [](DexMethod* m) -> SourceBlocksStats {
  - SourceBlocksStats ret{0, 0, 0, 0, 0, 0, 0, 0, 0};
  + SourceBlocksStats ret{0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
  auto code = m->get_code();
  if (!code) {
  return ret;
  @@ -805,10 +807,12 @@ void track_source_block_coverage(PassManager& mgr,
  bool seen_dir_cold_dir_pred = false;
  bool seen_idom_viol = false;
  bool seen_direct_pred_viol = false;
  + bool seen_sb = false;
  for (auto block : cfg.blocks()) {
  ret.total_blocks++;
  if (source_blocks::has_source_blocks(block)) {
  ret.source_blocks_present++;
  + seen_sb = true;
  source_blocks::foreach_source_block(
  block,
  [&](auto* sb ATTRIBUTE_UNUSED) { ret.source_blocks_total++; });
  @@ -878,6 +882,10 @@ void track_source_block_coverage(PassManager& mgr,
  ret.methods_with_direct_predecessor_violations++;
  }
  + if (seen_sb) {
  + ret.methods_with_sbs++;
  + }
  +
  code->clear_cfg();
  return ret;
  });
  @@ -885,6 +893,7 @@ void track_source_block_coverage(PassManager& mgr,
  mgr.set_metric("~blocks~count", stats.total_blocks);
  mgr.set_metric("~blocks~with~source~blocks", stats.source_blocks_present);
  mgr.set_metric("~assessment~source~blocks~total", stats.source_blocks_total);
  + mgr.set_metric("~assessment~methods~with~sbs", stats.methods_with_sbs);
  mgr.set_metric("~flow~violation~idom", stats.flow_violation_idom);
  mgr.set_metric("~~flow~violation~methods~idom",
  stats.methods_with_idom_violations);
  