Inspectopedia Help

Unsafe VFS recursion

Reports usage of VirtualFile.getChildren() inside recursive methods.

This may cause endless loops when iterating over cyclic symlinks. Use VfsUtilCore.visitChildrenRecursively() instead.

void processDirectory(VirtualFile dir) { for (VirtualFile file : dir.getChildren()) { // bad if (!file.isDirectory()) { processFile(file); } else { processDirectory(file); // recursive call } } }
void processDirectory(VirtualFile dir) { VfsUtilCore.visitChildrenRecursively(dir, new VirtualFileVisitor<Void>() { // good @Override public boolean visitFile(@NotNull VirtualFile file) { if (!file.isDirectory()) { processFile(file); } return true; } }); }

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Plugin DevKit, 233.SNAPSHOT

Last modified: 13 July 2023