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;
    }
  });
}