]>
git.proxmox.com Git - rustc.git/blob - src/llvm/tools/llvm-cov/CoverageSummary.cpp
1 //===- CoverageSummary.cpp - Code coverage summary ------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This class implements data management and rendering for the code coverage
11 // summaries of all files and functions.
13 //===----------------------------------------------------------------------===//
15 #include "CoverageSummary.h"
16 #include "llvm/Support/FileSystem.h"
17 #include "llvm/Support/Format.h"
21 unsigned CoverageSummary::getFileID(StringRef Filename
) {
22 for (unsigned I
= 0, E
= Filenames
.size(); I
< E
; ++I
) {
23 if (sys::fs::equivalent(Filenames
[I
], Filename
))
26 Filenames
.push_back(Filename
);
27 return Filenames
.size() - 1;
31 CoverageSummary::createSummaries(const coverage::CoverageMapping
&Coverage
) {
32 for (StringRef Filename
: Coverage
.getUniqueSourceFiles()) {
33 size_t PrevSize
= FunctionSummaries
.size();
34 for (const auto &F
: Coverage
.getCoveredFunctions(Filename
))
35 FunctionSummaries
.push_back(FunctionCoverageSummary::get(F
));
36 size_t Count
= FunctionSummaries
.size() - PrevSize
;
39 FileSummaries
.push_back(FileCoverageSummary::get(
40 Filename
, makeArrayRef(FunctionSummaries
.data() + PrevSize
, Count
)));
44 FileCoverageSummary
CoverageSummary::getCombinedFileSummaries() {
45 size_t NumRegions
= 0, CoveredRegions
= 0;
46 size_t NumLines
= 0, NonCodeLines
= 0, CoveredLines
= 0;
47 size_t NumFunctionsExecuted
= 0, NumFunctions
= 0;
48 for (const auto &File
: FileSummaries
) {
49 NumRegions
+= File
.RegionCoverage
.NumRegions
;
50 CoveredRegions
+= File
.RegionCoverage
.Covered
;
52 NumLines
+= File
.LineCoverage
.NumLines
;
53 NonCodeLines
+= File
.LineCoverage
.NonCodeLines
;
54 CoveredLines
+= File
.LineCoverage
.Covered
;
56 NumFunctionsExecuted
+= File
.FunctionCoverage
.Executed
;
57 NumFunctions
+= File
.FunctionCoverage
.NumFunctions
;
59 return FileCoverageSummary(
60 "TOTAL", RegionCoverageInfo(CoveredRegions
, NumRegions
),
61 LineCoverageInfo(CoveredLines
, NonCodeLines
, NumLines
),
62 FunctionCoverageInfo(NumFunctionsExecuted
, NumFunctions
),