Skip to content

Instantly share code, notes, and snippets.

@bartekpacia
Created September 26, 2025 17:43
Show Gist options
  • Select an option

  • Save bartekpacia/d0d3cb9391251d96ea4dbf2570c3a73a to your computer and use it in GitHub Desktop.

Select an option

Save bartekpacia/d0d3cb9391251d96ea4dbf2570c3a73a to your computer and use it in GitHub Desktop.
adsad
@bartekpacia
Copy link
Author

Find all modules in a project:

ModuleManager.getInstance(getProject()).getModules()

@bartekpacia
Copy link
Author

Find the first module:

ModuleRootManager.getInstance(ModuleManager.getInstance(getElement().getProject()).getModules()[0]).getModule()

@bartekpacia
Copy link
Author

bartekpacia commented Sep 26, 2025

Print all OrderEntries in all modules in a project:

Arrays.stream(ModuleManager.getInstance(element.getProject()).getModules()).forEach(module -> {
  System.out.println(module);
  for (var orderEntry : ModuleRootManager.getInstance(module).getOrderEntries()) {
    System.out.println("  -> OrderEntry: " + orderEntry);
  }
});
Output
Module: 'cucumber_app'
  -> OrderEntry: InheritedSdkOrderEntry: < 24 >
  -> OrderEntry: ModuleSourceOrderEntry: <Module source>
Module: 'cucumber_app.test'
  -> OrderEntry: InheritedSdkOrderEntry: < 24 >
  -> OrderEntry: ModuleSourceOrderEntry: <Module source>
  -> OrderEntry: ModuleOrderEntry: cucumber_app.main
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: lib.jar
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: org.junit.jupiter:junit-jupiter:5.10.0
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:cucumber-junit:7.22.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: junit:junit:4.13.2
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:cucumber-java:7.22.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: org.junit.jupiter:junit-jupiter-params:5.10.0
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: org.junit.jupiter:junit-jupiter-api:5.10.0
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:cucumber-core:7.22.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: org.apiguardian:apiguardian-api:1.1.2
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: org.hamcrest:hamcrest-core:1.3
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: org.junit.platform:junit-platform-commons:1.10.0
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: org.opentest4j:opentest4j:1.3.0
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:cucumber-expressions:18.0.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:datatable:7.22.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:cucumber-gherkin-messages:7.22.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:cucumber-gherkin:7.22.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:cucumber-plugin:7.22.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:docstring:7.22.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:testng-xml-formatter:0.3.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:html-formatter:21.10.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:junit-xml-formatter:0.7.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:messages:27.2.0
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:tag-expressions:6.1.2
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:ci-environment:10.0.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:gherkin:32.1.1
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: io.cucumber:query:13.6.0
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: org.junit.jupiter:junit-jupiter-engine:5.10.0, scope=runtime
  -> OrderEntry: LibraryOrderEntry: cucumber_app.test -> Gradle: org.junit.platform:junit-platform-engine:1.10.0, scope=runtime
Module: 'cucumber_app.main'
  -> OrderEntry: InheritedSdkOrderEntry: < 24 >
  -> OrderEntry: ModuleSourceOrderEntry: <Module source>

@bartekpacia
Copy link
Author

Find specific class:

JavaPsiFacade.getInstance(getProject()).findClass("java.util.stream.Collectors", GlobalSearchScope.allScope(getProject()))

@bartekpacia
Copy link
Author

Find language level:

LanguageLevelProjectExtension.getInstance(getProject()).getLanguageLevel()

@bartekpacia
Copy link
Author

Find current module for PSI element:

ModuleUtilCore.findModuleForPsiElement(typeCast)

@bartekpacia
Copy link
Author

Find modules in a project:

ModuleManager.getInstance(getProject()).getModules()

@bartekpacia
Copy link
Author

Find current JDK used, by the PSI element:

ModuleRootManager.getInstance(ModuleUtilCore.findModuleForPsiElement(typeCast)).getSdk()

@bartekpacia
Copy link
Author

FileBasedIndex index = FileBasedIndex.getInstance();
Collection<VirtualFile> allFiles = new HashSet<>();

index.processAllKeys(FileTypeIndex.NAME, fileType -> {
  Collection<VirtualFile> files = FileTypeIndex.getFiles(fileType, element.getResolveScope());
  for (var file : files) {
    if (file.getPath().contains("openjdk.jdk")) continue;
    if (file.getPath().contains(".gradle/caches")) continue;
    allFiles.add(file);
  }
  return true;
}, element.getProject());

return allFiles;

@bartekpacia
Copy link
Author

bartekpacia commented Sep 26, 2025

List all files in GlobalSearchScope of some library:

FileTypeIndex.getFiles(JavaClassFileType.INSTANCE, LibraryScopeCache.getInstance(element.getProject()).myLibrariesOnlyScope).stream()
  .map(vf -> vf.getPath())
  .filter(name -> name.contains("demo_cucumber"))
  .toList()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment