diff options
author | Alan Phipps <a-phipps@ti.com> | 2023-09-18 15:49:56 -0500 |
---|---|---|
committer | Alan Phipps <a-phipps@ti.com> | 2023-09-20 15:30:47 -0500 |
commit | 618a22144db5e45da8c95dc22064103e1b5e5b71 (patch) | |
tree | 3d354382909b78f7293bbce1e6e00351b6ff59c6 /llvm/tools/llvm-cov/SourceCoverageViewText.cpp | |
parent | 33dfd90700a11fb39802d0b1ab500f3a8efd7e78 (diff) | |
download | llvm-618a22144db5e45da8c95dc22064103e1b5e5b71.zip llvm-618a22144db5e45da8c95dc22064103e1b5e5b71.tar.gz llvm-618a22144db5e45da8c95dc22064103e1b5e5b71.tar.bz2 |
[Coverage][llvm-cov] Enable MC/DC Support in LLVM Source-based Code Coverage (2/3)
Part 2 of 3. This includes the Visualization and Evaluation components.
Differential Revision: https://reviews.llvm.org/D138847
Diffstat (limited to 'llvm/tools/llvm-cov/SourceCoverageViewText.cpp')
-rw-r--r-- | llvm/tools/llvm-cov/SourceCoverageViewText.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/llvm/tools/llvm-cov/SourceCoverageViewText.cpp b/llvm/tools/llvm-cov/SourceCoverageViewText.cpp index 44694a0..73b7ffe 100644 --- a/llvm/tools/llvm-cov/SourceCoverageViewText.cpp +++ b/llvm/tools/llvm-cov/SourceCoverageViewText.cpp @@ -337,6 +337,57 @@ void SourceCoverageViewText::renderBranchView(raw_ostream &OS, BranchView &BRV, } } +void SourceCoverageViewText::renderMCDCView(raw_ostream &OS, MCDCView &MRV, + unsigned ViewDepth) { + for (auto &Record : MRV.Records) { + renderLinePrefix(OS, ViewDepth); + OS << "---> MC/DC Decision Region ("; + // Display Line + Column information. + const CounterMappingRegion &DecisionRegion = Record.getDecisionRegion(); + OS << DecisionRegion.LineStart << ":"; + OS << DecisionRegion.ColumnStart << ") to ("; + OS << DecisionRegion.LineEnd << ":"; + OS << DecisionRegion.ColumnEnd << ")\n"; + renderLinePrefix(OS, ViewDepth); + OS << "\n"; + + // Display MC/DC Information. + renderLinePrefix(OS, ViewDepth); + OS << " Number of Conditions: " << Record.getNumConditions() << "\n"; + for (unsigned i = 0; i < Record.getNumConditions(); i++) { + renderLinePrefix(OS, ViewDepth); + OS << " " << Record.getConditionHeaderString(i); + } + renderLinePrefix(OS, ViewDepth); + OS << "\n"; + renderLinePrefix(OS, ViewDepth); + OS << " Executed MC/DC Test Vectors:\n"; + renderLinePrefix(OS, ViewDepth); + OS << "\n"; + renderLinePrefix(OS, ViewDepth); + OS << " "; + OS << Record.getTestVectorHeaderString(); + for (unsigned i = 0; i < Record.getNumTestVectors(); i++) { + renderLinePrefix(OS, ViewDepth); + OS << Record.getTestVectorString(i); + } + renderLinePrefix(OS, ViewDepth); + OS << "\n"; + for (unsigned i = 0; i < Record.getNumConditions(); i++) { + renderLinePrefix(OS, ViewDepth); + OS << Record.getConditionCoverageString(i); + } + renderLinePrefix(OS, ViewDepth); + OS << " MC/DC Coverage for Decision: "; + colored_ostream(OS, raw_ostream::RED, + getOptions().Colors && Record.getPercentCovered() < 100.0, + /*Bold=*/false, /*BG=*/true) + << format("%0.2f", Record.getPercentCovered()) << "%\n"; + renderLinePrefix(OS, ViewDepth); + OS << "\n"; + } +} + void SourceCoverageViewText::renderInstantiationView(raw_ostream &OS, InstantiationView &ISV, unsigned ViewDepth) { |