GCC Code Coverage Report


Directory: ../
File: src/visualizer/DependencyGraphVisualizer.cpp
Date: 2025-10-26 21:29:31
Coverage Exec Excl Total
Lines: 100.0% 17 0 17
Functions: 100.0% 2 0 2
Branches: 53.6% 30 0 56

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