message: Added filtering of close braces and other unimportant lines.
  Lines which are purely there for closing or opening scope or parentheses are now filtered out. These lines are often unhittable by coverage and offer no benefit to coverage results whereas the false negatives negatively impact the relevance of the metrics.
diff: @@ -64,6 +64,7 @@ impl<'a> IgnoredLines<'a> {
  }
  }
  + /// Add lines to the line ignore list
  fn ignore_lines(&mut self, span: Span) {
  if let Ok(s) = self.codemap.span_to_lines(span) {
  for line in &s.lines {
  @@ -73,6 +74,7 @@ impl<'a> IgnoredLines<'a> {
  }
  }
  + /// Looks for #[cfg(test)] attribute.
  fn contains_cfg_test(&mut self, attrs: &[Attribute]) -> bool {
  attrs.iter()
  .filter(|x| x.path == "cfg")
  @@ -87,6 +89,22 @@ impl<'a> IgnoredLines<'a> {
  })
  }
  + /// This function finds ignorable lines within actual coverable code.
  + /// As opposed to other functions which find isolated lines that aren't
  + /// executed or lines filtered by the user. These lines are things like
  + /// close braces that are within coverable code but not coverable.
  + fn find_ignorable_lines(&mut self, span: Span) {
  + if let Ok(l) = self.codemap.span_to_lines(span) {
  + for line in &l.lines {
  + if let Some(s) = l.file.get_line(line.line_index) {
  + // Is this one of those pointless {, } or }; only lines?
  + if !s.chars().any(|x| !"{}[];\t ".contains(x)) {
  + self.lines.push(line.line_index + 1);
  + }
  + }
  + }
  + }
  + }
  }
  @@ -106,6 +124,7 @@ impl<'v, 'a> Visitor<'v> for IgnoredLines<'a> {
  visit::walk_item(self, i);
  }
  +
  fn visit_mod(&mut self, m: &'v Mod, s: Span, _attrs: &[Attribute], _n: NodeId) {
  // We want to limit ourselves to only this source file.
  // This avoids repeated hits and issues where there are multiple compilation targets
  @@ -130,10 +149,12 @@ impl<'v, 'a> Visitor<'v> for IgnoredLines<'a> {
  }
  }
  +
  fn visit_fn(&mut self, fk: FnKind<'v>, fd: &'v FnDecl, s: Span, _: NodeId) {
  visit::walk_fn(self, fk, fd, s);
  }
  +
  fn visit_stmt(&mut self, s: &Stmt) {
  match s.node {
  StmtKind::Mac(_) => visit::walk_stmt(self, s),
  @@ -141,6 +162,7 @@ impl<'v, 'a> Visitor<'v> for IgnoredLines<'a> {
  }
  }
  +
  fn visit_mac(&mut self, mac: &Mac) {
  // Use this to ignore unreachable lines
  let mac_text = &format!("{}", mac.node.path)[..];
  @@ -154,6 +176,7 @@ impl<'v, 'a> Visitor<'v> for IgnoredLines<'a> {
  visit::walk_mac(self, mac);
  }
  +
  /// Ignores attributes which may get identified as coverable lines.
  fn visit_attribute(&mut self, attr: &Attribute) {
  if attr.check_name("derive") {
  @@ -161,14 +184,16 @@ impl<'v, 'a> Visitor<'v> for IgnoredLines<'a> {
  }
  }
  +
  /// Struct fields are mistakenly identified as instructions and uncoverable.
  fn visit_struct_field(&mut self, s: &'v StructField) {
  self.ignore_lines(s.span);
  visit::walk_struct_field(self, s);
  }
  - fn visit_block(&mut self, b: &'v Block) {
  + fn visit_block(&mut self, b: &'v Block) {
  + self.find_ignorable_lines(b.span);
  visit::walk_block(self, b);
  }
  }
  