| 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 |