GCC Code Coverage Report


Directory: ../
File: src/visualizer/DependencyGraphVisualizer.cpp
Date: 2025-03-05 01:50:32
Exec Total Coverage
Lines: 17 17 100.0%
Functions: 2 2 100.0%
Branches: 30 56 53.6%

Line Branch Exec Source
1 // Copyright (c) 2021-2025 ChilliBits. All rights reserved.
2
3 #include "DependencyGraphVisualizer.h"
4
5 #include <cassert>
6
7 #include <SourceFile.h>
8
9 namespace spice::compiler {
10
11 228 void DependencyGraphVisualizer::getDependencyGraph(std::stringstream& output) {
12
1/2
✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→4) taken 228 times.
228 assert(sourceFile->isMainFile);
13 228 printedFiles.clear();
14 228 getDependencyGraphNode(output, sourceFile);
15 228 }
16
17 1302 void DependencyGraphVisualizer::getDependencyGraphNode(std::stringstream& output, const SourceFile *currentSourceFile) {
18 // Skip if already printed
19
3/4
✓ Branch 0 (2→3) taken 1302 times.
✗ Branch 1 (2→72) not taken.
✓ Branch 2 (3→4) taken 480 times.
✓ Branch 3 (3→5) taken 822 times.
1302 if (printedFiles.contains(currentSourceFile))
20 480 return;
21
22 // Append code for this source file
23
3/6
✓ Branch 0 (5→6) taken 822 times.
✗ Branch 1 (5→49) not taken.
✓ Branch 2 (6→7) taken 822 times.
✗ Branch 3 (6→47) not taken.
✓ Branch 4 (7→8) taken 822 times.
✗ Branch 5 (7→45) not taken.
822 const std::filesystem::path relativePath = relative(currentSourceFile->filePath, sourceFile->filePath).generic_string();
24
6/12
✓ Branch 0 (10→11) taken 822 times.
✗ Branch 1 (10→70) not taken.
✓ Branch 2 (11→12) taken 822 times.
✗ Branch 3 (11→53) not taken.
✓ Branch 4 (12→13) taken 822 times.
✗ Branch 5 (12→51) not taken.
✓ Branch 6 (13→14) taken 822 times.
✗ Branch 7 (13→51) not taken.
✓ Branch 8 (14→15) taken 822 times.
✗ Branch 9 (14→51) not taken.
✓ Branch 10 (15→16) taken 822 times.
✗ Branch 11 (15→51) not taken.
822 output << " \"" << relativePath.string() << "\" [color=\"lightgreen\",label=\"" << currentSourceFile->fileName << "\"];\n";
25
1/2
✓ Branch 0 (17→18) taken 822 times.
✗ Branch 1 (17→70) not taken.
822 printedFiles.insert(currentSourceFile);
26
27 // Append code for dependencies
28
5/8
✓ Branch 0 (18→19) taken 822 times.
✗ Branch 1 (18→69) not taken.
✓ Branch 2 (19→20) taken 822 times.
✗ Branch 3 (19→69) not taken.
✓ Branch 4 (20→21) taken 822 times.
✗ Branch 5 (20→69) not taken.
✓ Branch 6 (41→22) taken 1074 times.
✓ Branch 7 (41→42) taken 822 times.
1896 for (const SourceFile *dependency : currentSourceFile->dependencies | std::views::values) {
29
1/2
✓ Branch 0 (23→24) taken 1074 times.
✗ Branch 1 (23→68) not taken.
1074 getDependencyGraphNode(output, dependency);
30
3/6
✓ Branch 0 (24→25) taken 1074 times.
✗ Branch 1 (24→58) not taken.
✓ Branch 2 (25→26) taken 1074 times.
✗ Branch 3 (25→56) not taken.
✓ Branch 4 (26→27) taken 1074 times.
✗ Branch 5 (26→54) not taken.
1074 const std::filesystem::path dependencyPathRelative = relative(dependency->filePath, sourceFile->filePath).generic_string();
31
7/14
✓ Branch 0 (29→30) taken 1074 times.
✗ Branch 1 (29→66) not taken.
✓ Branch 2 (30→31) taken 1074 times.
✗ Branch 3 (30→65) not taken.
✓ Branch 4 (31→32) taken 1074 times.
✗ Branch 5 (31→63) not taken.
✓ Branch 6 (32→33) taken 1074 times.
✗ Branch 7 (32→63) not taken.
✓ Branch 8 (33→34) taken 1074 times.
✗ Branch 9 (33→62) not taken.
✓ Branch 10 (34→35) taken 1074 times.
✗ Branch 11 (34→60) not taken.
✓ Branch 12 (35→36) taken 1074 times.
✗ Branch 13 (35→60) not taken.
1074 output << " \"" << relativePath.string() << "\" -> \"" << dependencyPathRelative.string() << "\";\n";
32 1074 }
33 822 }
34
35 } // namespace spice::compiler
36