void (ProjectStructureProblemsHolder problemsHolder) { final Project project = myContext.getProject(); ProjectStructureConfigurable projectStructureConfigurable = myContext.getModulesConfigurator().getProjectStructureConfigurable(); if (containsModuleWithInheritedSdk()) { ProjectSdksModel model = projectStructureConfigurable.getProjectJdksModel(); Sdk sdk = model.getProjectSdk(); if (sdk == null) { PlaceInProjectStructureBase place = new PlaceInProjectStructureBase(project, projectStructureConfigurable .createProjectConfigurablePlace(), this); problemsHolder.registerProblem(JavaUiBundle.message("project.roots.project.jdk.problem.message"), null, ProjectStructureProblemType.error("project-sdk-not-defined"), place, null); } } List<Chunk<ModuleSourceSet>> sourceSetCycles = ModuleCompilerUtil.computeSourceSetCycles(myContext.getModulesConfigurator()); List<@Nls String> cycles = new ArrayList<>(); for (Chunk<ModuleSourceSet> chunk : sourceSetCycles) { final Set<ModuleSourceSet> sourceSets = chunk.getNodes(); List<@Nls String> names = new ArrayList<>(); for (ModuleSourceSet sourceSet : sourceSets) { String name = sourceSet.getDisplayName(); names.add(names.isEmpty() ? name : StringUtil.decapitalize(name)); } cycles.add(StringUtil.join(names, ", ")); } if (!cycles.isEmpty()) { final PlaceInProjectStructureBase place = new PlaceInProjectStructureBase(project, projectStructureConfigurable.createModulesPlace(), this); final String message; final HtmlChunk description; if (cycles.size() > 1) { message = JavaUiBundle.message("circular.dependencies.message"); final String header = JavaUiBundle.message("module.circular.dependency.warning.description"); final HtmlChunk[] liTags = cycles.stream() .map(c -> HtmlChunk.tag("li").addText(c)) .toArray(HtmlChunk[]::new); final HtmlChunk.Element ol = HtmlChunk.tag("ol").style("padding-left: 30pt;") .children(liTags); description = new HtmlBuilder() .append(HtmlChunk.tag("b").addText(header)) .append(ol) .toFragment() ; } else { message = JavaUiBundle.message("module.circular.dependency.warning.short", StringUtil.decapitalize(cycles.get(0))); description = HtmlChunk.empty(); } problemsHolder.registerProblem(new ProjectStructureProblemDescription(message, description, place, ProjectStructureProblemType .warning("module-circular-dependency"), Collections.emptyList())); } }