Skip to content

Commit 733f5c3

Browse files
authored
Fix incorrect current source root in RepoIndexSourcePathResolver (#5545)
1 parent fa85ce9 commit 733f5c3

File tree

2 files changed

+7
-12
lines changed

2 files changed

+7
-12
lines changed

dd-java-agent/agent-ci-visibility/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ excludedClassesCoverage += [
4747
"datadog.trace.civisibility.ipc.SignalType",
4848
"datadog.trace.civisibility.ipc.SignalClient",
4949
"datadog.trace.civisibility.source.MethodLinesResolver.MethodLines",
50+
"datadog.trace.civisibility.source.RepoIndexSourcePathResolver.RepoIndexingFileVisitor",
5051
"datadog.trace.civisibility.utils.ShellCommandExecutor",
5152
"datadog.trace.civisibility.utils.ShellCommandExecutor.OutputParser",
5253
]

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/source/RepoIndexSourcePathResolver.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.security.ProtectionDomain;
2222
import java.util.ArrayList;
2323
import java.util.EnumSet;
24+
import java.util.LinkedHashSet;
2425
import java.util.List;
2526
import javax.annotation.Nonnull;
2627
import javax.annotation.Nullable;
@@ -235,17 +236,15 @@ private static final class RepoIndexingFileVisitor implements FileVisitor<Path>
235236

236237
private final SourceRootResolver sourceRootResolver;
237238
private final ClassNameTrie.Builder trieBuilder;
238-
private final List<String> sourceRoots;
239+
private final LinkedHashSet<String> sourceRoots;
239240
private final RepoIndexingStats indexingStats;
240241
private final Path repoRoot;
241242

242-
private Path currentSourceRoot;
243-
244243
private RepoIndexingFileVisitor(SourceRootResolver sourceRootResolver, Path repoRoot) {
245244
this.sourceRootResolver = sourceRootResolver;
246245
this.repoRoot = repoRoot;
247246
trieBuilder = new ClassNameTrie.Builder();
248-
sourceRoots = new ArrayList<>();
247+
sourceRoots = new LinkedHashSet<>();
249248
indexingStats = new RepoIndexingStats();
250249
}
251250

@@ -264,10 +263,8 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
264263
if (sourceType != null) {
265264
indexingStats.sourceFilesVisited++;
266265

267-
if (currentSourceRoot == null) {
268-
currentSourceRoot = sourceRootResolver.getSourceRoot(file);
269-
sourceRoots.add(repoRoot.relativize(currentSourceRoot).toString());
270-
}
266+
Path currentSourceRoot = sourceRootResolver.getSourceRoot(file);
267+
sourceRoots.add(repoRoot.relativize(currentSourceRoot).toString());
271268

272269
Path relativePath = currentSourceRoot.relativize(file);
273270
String classNameWithExtension = relativePath.toString().replace(File.separatorChar, '.');
@@ -294,14 +291,11 @@ public FileVisitResult postVisitDirectory(Path dir, IOException exc) {
294291
if (exc != null) {
295292
log.error("Failed to visit directory: {}", dir, exc);
296293
}
297-
if (dir.equals(currentSourceRoot)) {
298-
currentSourceRoot = null;
299-
}
300294
return FileVisitResult.CONTINUE;
301295
}
302296

303297
public RepoIndex getIndex() {
304-
return new RepoIndex(trieBuilder.buildTrie(), sourceRoots);
298+
return new RepoIndex(trieBuilder.buildTrie(), new ArrayList<>(sourceRoots));
305299
}
306300
}
307301

0 commit comments

Comments
 (0)