summaryrefslogtreecommitdiffstats
path: root/Tools/CodeCoverage/results-template.html
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/CodeCoverage/results-template.html')
-rw-r--r--Tools/CodeCoverage/results-template.html358
1 files changed, 0 insertions, 358 deletions
diff --git a/Tools/CodeCoverage/results-template.html b/Tools/CodeCoverage/results-template.html
deleted file mode 100644
index 42c5c2480..000000000
--- a/Tools/CodeCoverage/results-template.html
+++ /dev/null
@@ -1,358 +0,0 @@
-<!doctype html>
-<html>
- <head>
- <style type='text/css'>
- table, tr, td
- {
- border-spacing: 1px;
- padding: 0px;
- }
- td.textColumn
- {
- white-space: nowrap;
- font-family: Courier, monospace;
- }
-
- #directories, #codeviewer
- {
- overflow: scroll;
- background-color: white;
- position: absolute;
- width: 50%;
- height: 100%;
- }
-
- #directories
- {
- left: 0%;
- }
-
- #codeviewer
- {
- left: 50%;
- }
-
- ul
- {
- padding: 1px 0px 1px 8px;
- margin: 0px;
- list-style-type: none;
- }
-
- li.file
- {
- /* 8px is to match the width of downArrow and rightArrow because files don't have an image before them. */
- padding: 0px 0px 0px 8px;
- }
-
- div.graphsContainer
- {
- right: 0px;
- width: 300px;
- position: absolute;
- display: inline-block;
- }
- div.codeCoverage
- {
- right: 0px;
- width: 150px;
- position: absolute;
- display: inline-block;
- }
- div.branchCoverage
- {
- right: 150px;
- width: 150px;
- position: absolute;
- display: inline-block;
- }
-
- </style>
- <script type='text/javascript'>
-
- // This is the contents of the images left of directories.
- var downArrow = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QYHFioBcCRLNAAAAJhJREFUGNOFzrEKwjAURuHTJHUspekDZGmhdlawCEqoUDK19O1cnX0dFxcnQXyIOAhKSsUzXr4Lf3Q8nf3leuNXy8IgBmeRYh5IAYOziDxLsdv1LNo3K/IsRQAcdhu0TgKgdUJnG4A3ipVk7NoAjV2LkvKLAKrSUBcGgLowVKX5PASTe2eJF4re2XCcn3R/PKcnH3nvPX96AbbuOGLOrLT1AAAAAElFTkSuQmCC';
- var rightArrow = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QYHFiojpUQK0AAAAKZJREFUGNNjmL1k/f+379//xweYlXXMGo6dvcDw/x8jg7y0OAMzMzMDOmBiYGBg+PP7P8OO/ccYOqctZLh2+x52RTDw9t0nhtlLNjDMWbqB4d2HD9gVwcDVW/cYumcsZXj56i0DAwMDAws2RdqqCgwBHo4MIiKCmIqEBPgYgrycGbTVFVE0sTAwMDCwMjMyONqYMbjYWjCwsmL6jmH24rX/37zBH04AHAxpneY+98AAAAAASUVORK5CYII=';
-
- function getHeatBackgroundColor(hits, maxHits)
- {
- if (hits === -1)
- return 'white'; // Non-code lines are white.
- else if (hits === 0)
- return 'orange'; // Unexecuted lines are orange.
- else {
- // Executed lines are between red and green.
- var relativeHeat = Math.floor(hits / maxHits * 255);
- return 'rgb(' + relativeHeat + ',' + (255 - relativeHeat) + ', 0)';
- }
- }
-
- function getCoverageBackgroundColor(coverage)
- {
- var value = Math.floor(coverage * 255);
- return 'rgb(' + (255 - value) + ',' + value + ', 0)';
- }
-
- function expandClicked(event)
- {
- var children = this.parentNode.lastChild;
- if (children.style.display === '') {
- children.style.display = 'none';
- this.src = rightArrow;
- } else {
- children.style.display = '';
- this.src = downArrow;
- }
- }
-
- function processFile(fileData, contents)
- {
- var lines = contents.split('\n');
- var hits = new Array();
- var branchesNumerator = new Array();
- var branchesDenominator = new Array();
-
- for (var i = 0; i < lines.length; i++) {
- hits[i] = -1;
- branchesNumerator[i] = -1;
- branchesDenominator[i] = -1;
- }
-
- for (var i = 0; i < fileData.hitLines.length; i++)
- hits[fileData.hitLines[i] - 1] = fileData.hits[i];
-
- for (var i = 0; i < fileData.branchLines.length; i++) {
- branchesNumerator[fileData.branchLines[i] - 1] = fileData.branchesTaken[i];
- branchesDenominator[fileData.branchLines[i] - 1] = fileData.branchesPossible[i];
- }
-
- var table = document.createElement('table');
-
- for (var i = 0; i < lines.length; i++) {
- var row = document.createElement('tr');
-
- var branchesColumn = document.createElement('td');
- if (branchesNumerator[i] != -1)
- branchesColumn.appendChild(document.createTextNode('(' + branchesNumerator[i] + '/' + branchesDenominator[i] + ')'));
-
- var hitsColumn = document.createElement('td');
- if (hits[i] != -1)
- hitsColumn.appendChild(document.createTextNode(hits[i]));
-
- var textColumn = document.createElement('td');
- textColumn.style.background = getHeatBackgroundColor(hits[i], fileData.maxHeat);
- textColumn.style.className = 'textColumn';
- textColumn.appendChild(document.createTextNode(lines[i]));
-
- row.appendChild(branchesColumn);
- row.appendChild(hitsColumn);
- row.appendChild(textColumn);
- table.appendChild(row);
- }
-
- return table;
- }
-
- function fileClicked(event)
- {
- var xhr = new XMLHttpRequest();
- xhr.onreadystatechange = function()
- {
- if (xhr.readyState === XMLHttpRequest.DONE) {
- var codeviewer = document.getElementById('codeviewer');
- codeviewer.replaceChild(processFile(xhr.fileData, xhr.responseText), codeviewer.firstChild);
- }
- }
- xhr.fileData = event.target.fileData;
- xhr.open('GET', '../../' + event.target.fileData.filename.substring(1), true);
- xhr.send();
- event.stopPropagation();
- }
-
- function makeGraphs(dirOrFile)
- {
- var codeCoverage = document.createElement('div');
- codeCoverage.className = 'codeCoverage';
- var codeCoveragePercent = dirOrFile.totalLines ? Math.floor(dirOrFile.totalHitLines / dirOrFile.totalLines * 100) + '%' : '-';
- var codeCoverageText = codeCoveragePercent + ' (' + dirOrFile.totalHitLines + '/' + dirOrFile.totalLines + ')';
- codeCoverage.appendChild(document.createTextNode(codeCoverageText));
- codeCoverage.style.backgroundColor = getCoverageBackgroundColor(dirOrFile.coverage);
-
- var branchCoverage = document.createElement('div');
- branchCoverage.className = 'branchCoverage';
- var branchCoveragePercent = dirOrFile.totalBranchesPossible ? Math.floor(dirOrFile.totalBranchesTaken / dirOrFile.totalBranchesPossible * 100) + '%' : '-';
- branchCoverage.appendChild(document.createTextNode(branchCoveragePercent + ' (' + dirOrFile.totalBranchesTaken + '/' + dirOrFile.totalBranchesPossible + ')'));
- branchCoverage.style.backgroundColor = getCoverageBackgroundColor(dirOrFile.branchCoverage);
-
- var graphsContainer = document.createElement('div');
- graphsContainer.className = 'graphsContainer';
- graphsContainer.appendChild(codeCoverage);
- graphsContainer.appendChild(branchCoverage);
- return graphsContainer;
- }
-
- function makeFileListItem(fileData, filename)
- {
- var li = document.createElement('li');
- li.className = 'file';
- var a = document.createElement('a');
- a.appendChild(document.createTextNode(filename));
- a.href = '#';
- a.addEventListener('click', fileClicked.bind(a));
- a.fileData = fileData;
- li.appendChild(a);
- li.appendChild(makeGraphs(fileData));
- return li;
- }
-
- function makeDirectoryListItem(dir, dirName)
- {
- var li = document.createElement('li');
- var children = document.createElement('ul');
-
- // Recursively add all sorted subdirectories and files.
- var fileNames = dir.files ? Object.keys(dir.files).sort() : [];
- var subdirNames = dir.subdirs ? Object.keys(dir.subdirs).sort() : [];
- for (var i = 0; i < subdirNames.length; i++) {
- var subdir = subdirNames[i];
- children.appendChild(makeDirectoryListItem(dir.subdirs[subdir], subdir));
- }
- for (var i = 0; i < fileNames.length; i++) {
- var file = fileNames[i];
- children.appendChild(makeFileListItem(dir.files[file], file, dir.maxHeat, dir.totalHeat));
- }
-
- var img = document.createElement('img');
- img.addEventListener('click', expandClicked.bind(img));
-
- // These four directories are expanded by default.
- if (dirName === '' || dirName === 'Source' || dirName === 'Tools' || dirName === 'WebKitBuild') {
- img.src = downArrow;
- children.style.display = '';
- } else {
- img.src = rightArrow;
- children.style.display = 'none';
- }
-
- li.appendChild(img);
- li.appendChild(document.createTextNode(dirName));
- li.appendChild(makeGraphs(dir));
- li.appendChild(children);
- return li;
- }
-
- // Collect total coverage for a directory and its subdirectories.
- function collectDirectoryTotals(directory)
- {
- directory.totalBranchesPossible = 0;
- directory.totalBranchesTaken = 0;
- directory.totalHitLines = 0;
- directory.totalLines = 0;
- directory.totalHeat = 0;
- directory.maxHeat = 0;
- if (directory.subdirs) {
- for (var subdirName in directory.subdirs) {
- var subdir = directory.subdirs[subdirName];
-
- collectDirectoryTotals(subdir);
-
- directory.totalBranchesPossible += subdir.totalBranchesPossible;
- directory.totalBranchesTaken += subdir.totalBranchesTaken;
- directory.totalHitLines += subdir.totalHitLines;
- directory.totalLines += subdir.totalLines;
- directory.totalHeat += subdir.totalHeat;
- directory.maxHeat = Math.max(directory.maxHeat, subdir.maxHeat);
- }
- }
- if (directory.files) {
- for (var fileName in directory.files) {
- var file = directory.files[fileName];
-
- file.totalBranchesPossible = 0;
- file.totalBranchesTaken = 0;
- file.totalHitLines = 0;
- file.totalLines = file.hitLines.length;
- file.totalHeat = 0;
-
- for (var i = 0; i < file.branchesPossible.length; i++) {
- file.totalBranchesPossible += file.branchesPossible[i];
- file.totalBranchesTaken += file.branchesTaken[i];
- }
- for (var i = 0; i < file.hits.length; i++) {
- file.totalHeat += file.hits[i];
- if (file.hits[i])
- file.totalHitLines++;
- }
-
- directory.totalBranchesPossible += file.totalBranchesPossible;
- directory.totalBranchesTaken += file.totalBranchesTaken;
- directory.totalHitLines += file.totalHitLines;
- directory.totalLines += file.totalLines;
- directory.totalHeat += file.totalHeat;
- directory.maxHeat = Math.max(directory.maxHeat, file.maxHeat);
- }
- }
- directory.coverage = directory.totalHitLines / directory.totalLines;
- directory.branchCoverage = directory.totalBranchesPossible ? directory.totalBranchesTaken / directory.totalBranchesPossible : 1;
- }
-
- function addFileToDirectory(filename, filedata, directory)
- {
- var slashIndex = filename.indexOf('/', 1);
- if (slashIndex === -1) {
- if (!directory.files)
- directory.files = {};
- directory.files[filename.substring(1)] = filedata;
- } else {
- if (!directory.subdirs)
- directory.subdirs = {};
- var subdirName = filename.substring(1, slashIndex);
- if (!directory.subdirs[subdirName])
- directory.subdirs[subdirName] = {};
- addFileToDirectory(filename.substring(slashIndex), filedata, directory.subdirs[subdirName]);
- }
- }
-
- function updateReport(data)
- {
- var rootDirectory = {};
- for (var i = 0; i < data.length; i++)
- addFileToDirectory(data[i].filename, data[i], rootDirectory);
-
- collectDirectoryTotals(rootDirectory);
-
- var report = document.createElement('div');
- var codeCoverageHeader = document.createElement('div');
- codeCoverageHeader.className = 'codeCoverage';
- codeCoverageHeader.appendChild(document.createTextNode('Code Coverage'));
- var branchCoverageHeader = document.createElement('div');
- branchCoverageHeader.className = 'branchCoverage';
- branchCoverageHeader.appendChild(document.createTextNode('Branch Coverage'));
- var ul = document.createElement('ul');
- ul.appendChild(makeDirectoryListItem(rootDirectory, ''));
-
- report.appendChild(codeCoverageHeader);
- report.appendChild(branchCoverageHeader);
- report.appendChild(document.createTextNode('Directories'));
- report.appendChild(ul);
-
- var directories = document.getElementById('directories');
- directories.replaceChild(report, directories.firstChild);
- }
-
- function bodyLoaded()
- {
- updateReport(JSON.parse(document.getElementById('json').textContent));
- }
-
- </script>
- </head>
- <body onload='bodyLoaded();'>
- <div id='directories'>
- loading data...
- </div>
- <div id='codeviewer'>
- </div>
- <script id='json' type='application/json'>%CoverageDataJSON%</script>
- </body>
-</html>