再帰メソッド内で VirtualFile.getChildren() が使用されていることを報告します。

このような使用方法は、循環シンボリックリンクを反復処理する場合に無限ループを引き起こす可能性があります。 VfsUtilCore.visitChildrenRecursively() を代わりに使用してください。


void processDirectory(VirtualFile dir) {
  for (VirtualFile file : dir.getChildren()) { // 不適切
    if (!file.isDirectory()) {
      processFile(file);
    } else {
      processDirectory(file); // 再帰呼び出し
    }
  }
}


void processDirectory(VirtualFile dir) {
  VfsUtilCore.visitChildrenRecursively(dir, new VirtualFileVisitor<Void>() { // 良い
    @Override
    public boolean visitFile(@NotNull VirtualFile file) {
      if (!file.isDirectory()) {
        processFile(file);
      }
      return true;
    }
  });
}