diff options
| author | Mike Aizatsky <aizatsky@chromium.org> | 2016-03-11 23:28:28 +0000 |
|---|---|---|
| committer | Mike Aizatsky <aizatsky@chromium.org> | 2016-03-11 23:28:28 +0000 |
| commit | 037fee594b7c7a4d5e49337b0d48cc316cb4f136 (patch) | |
| tree | 3e888a0df317b588db479abdf6dbf4939a038d12 /llvm/tools | |
| parent | 22973fd00eae9d02f41e3e59a3446ce825ce2cbc (diff) | |
| download | bcm5719-llvm-037fee594b7c7a4d5e49337b0d48cc316cb4f136.tar.gz bcm5719-llvm-037fee594b7c7a4d5e49337b0d48cc316cb4f136.zip | |
[sancov] using md5 for anchors in attempt to reduce file size.
Differential Revision: http://reviews.llvm.org/D18102
llvm-svn: 263308
Diffstat (limited to 'llvm/tools')
| -rw-r--r-- | llvm/tools/sancov/sancov.cc | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/llvm/tools/sancov/sancov.cc b/llvm/tools/sancov/sancov.cc index 07b092e333b..200027677f1 100644 --- a/llvm/tools/sancov/sancov.cc +++ b/llvm/tools/sancov/sancov.cc @@ -33,6 +33,7 @@ #include "llvm/Support/ErrorOr.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/LineIterator.h" +#include "llvm/Support/MD5.h" #include "llvm/Support/ManagedStatic.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Path.h" @@ -487,6 +488,17 @@ static std::string escapeHtml(const std::string &S) { return Result; } +static std::string anchorName(std::string Anchor) { + llvm::MD5 Hasher; + llvm::MD5::MD5Result Hash; + Hasher.update(Anchor); + Hasher.final(Hash); + + SmallString<32> HexString; + llvm::MD5::stringifyResult(Hash, HexString); + return HexString.str().str(); +} + static ErrorOr<bool> isCoverageFile(std::string FileName) { ErrorOr<std::unique_ptr<MemoryBuffer>> BufOrErr = MemoryBuffer::getFile(FileName); @@ -826,7 +838,7 @@ public: } size_t CovPct = FC.second == 0 ? 100 : 100 * FC.first / FC.second; - OS << "<tr><td><a href=\"#" << escapeHtml(FileName) << "\">" + OS << "<tr><td><a href=\"#" << anchorName(FileName) << "\">" << stripPathPrefix(FileName) << "</a></td>" << "<td>" << CovPct << "%</td>" << "<td>" << FC.first << " (" << FC.second << ")" @@ -855,7 +867,7 @@ public: std::pair<size_t, size_t> FC = FileFnCoverage[FileName]; if (FC.first == 0) continue; - OS << "<a name=\"" << escapeHtml(FileName) << "\"></a>\n"; + OS << "<a name=\"" << anchorName(FileName) << "\"></a>\n"; OS << "<h2>" << stripPathPrefix(FileName) << "</h2>\n"; auto NotCoveredFns = NotCoveredFnMap.find(FileName); @@ -865,7 +877,7 @@ public: for (auto FileFn : NotCoveredFns->second) { OS << "<tr><td>"; OS << "<a href=\"#" - << escapeHtml(FileName + "::" + FileFn.FunctionName) << "\">"; + << anchorName(FileName + "::" + FileFn.FunctionName) << "\">"; OS << escapeHtml(FileFn.FunctionName) << "</a>"; OS << "</td></tr>\n"; } @@ -891,7 +903,7 @@ public: auto It = NotCoveredFnByLoc.find(Loc); if (It != NotCoveredFnByLoc.end()) { for (std::string Fn : It->second) { - OS << "<a name=\"" << escapeHtml(FileName + "::" + Fn) + OS << "<a name=\"" << anchorName(FileName + "::" + Fn) << "\"></a>"; }; } @@ -1040,7 +1052,7 @@ public: // Modules TOC. if (Coverage.size() > 1) { for (const auto &CovData : Coverage) { - OS << "<li><a href=\"#module_" << escapeHtml(CovData->object_file()) + OS << "<li><a href=\"#module_" << anchorName(CovData->object_file()) << "\">" << llvm::sys::path::filename(CovData->object_file()) << "</a></li>\n"; } @@ -1051,7 +1063,7 @@ public: OS << "<h2>" << llvm::sys::path::filename(CovData->object_file()) << "</h2>\n"; } - OS << "<a name=\"module_" << escapeHtml(CovData->object_file()) + OS << "<a name=\"module_" << anchorName(CovData->object_file()) << "\"></a>\n"; CovData->printReport(OS); } |

