OSDN Git Service

[llvm-cov] Minor aesthetic improvements for html reports
authorVedant Kumar <vsk@apple.com>
Wed, 27 Jul 2016 19:51:17 +0000 (19:51 +0000)
committerVedant Kumar <vsk@apple.com>
Wed, 27 Jul 2016 19:51:17 +0000 (19:51 +0000)
This fixes the highlighting for lines without any coverage segments. I
don't have a neat way of testing this yet, but am working on it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@276906 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-cov/SourceCoverageViewHTML.cpp

index ef81cea..37ba518 100644 (file)
@@ -337,9 +337,9 @@ void SourceCoverageViewHTML::renderLine(
   for (unsigned I = 0, E = Snippets.size(); I < E; ++I)
     Snippets[I] = escape(Snippets[I]);
 
-  // 3. Use \p WrappedSegment to set the highlight for snippets 0 and 1. Use
-  //    segment 1 to set the highlight for snippet 2, segment 2 to set the
-  //    highlight for snippet 3, and so on.
+  // 3. Use \p WrappedSegment to set the highlight for snippet 0. Use segment
+  //    1 to set the highlight for snippet 2, segment 2 to set the highlight for
+  //    snippet 3, and so on.
 
   Optional<std::string> Color;
   auto Highlight = [&](const std::string &Snippet) {
@@ -347,17 +347,16 @@ void SourceCoverageViewHTML::renderLine(
   };
 
   auto CheckIfUncovered = [](const coverage::CoverageSegment *S) {
-    return S && S->HasCount && S->Count == 0;
+    return !S || (S->HasCount && S->Count == 0);
   };
 
   if (CheckIfUncovered(WrappedSegment) ||
       CheckIfUncovered(Segments.empty() ? nullptr : Segments.front())) {
     Color = "red";
     Snippets[0] = Highlight(Snippets[0]);
-    Snippets[1] = Highlight(Snippets[1]);
   }
 
-  for (unsigned I = 1, E = Segments.size(); I < E; ++I) {
+  for (unsigned I = 0, E = Segments.size(); I < E; ++I) {
     const auto *CurSeg = Segments[I];
     if (CurSeg->Col == ExpansionCol)
       Color = "cyan";
@@ -370,6 +369,9 @@ void SourceCoverageViewHTML::renderLine(
       Snippets[I + 1] = Highlight(Snippets[I + 1]);
   }
 
+  if (Color.hasValue() && Segments.empty())
+    Snippets.back() = Highlight(Snippets.back());
+
   // 4. Snippets[1:N+1] correspond to \p Segments[0:N]: use these to generate
   //    sub-line region count tooltips if needed.
 
@@ -390,7 +392,7 @@ void SourceCoverageViewHTML::renderLine(
 
       Snippets[I + 1] =
           tag("div", Snippets[I + 1] + tag("span", formatCount(CurSeg->Count),
-                                          "tooltip-content"),
+                                           "tooltip-content"),
               "tooltip");
     }
   }