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