mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
circular dependencies warnings: don't show cycles which were reduced to single element after excluding dummy nodes
This commit is contained in:
+12
-5
@@ -21,6 +21,7 @@ import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectBundle;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.roots.ContentEntry;
|
||||
import com.intellij.openapi.roots.ModuleRootModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext;
|
||||
@@ -72,9 +73,9 @@ public class GeneralProjectSettingsElement extends ProjectStructureElement {
|
||||
|
||||
|
||||
Graph<ModuleSourceSet> graph = ModuleCompilerUtil.createModuleSourceDependenciesGraph(myContext.getModulesConfigurator());
|
||||
Collection<Chunk<ModuleSourceSet>> allSourceSetCycles = extractCycles(
|
||||
GraphAlgorithms.getInstance().computeStronglyConnectedComponents(graph));
|
||||
List<Chunk<ModuleSourceSet>> sourceSetCycles = removeDummyNodes(filterDuplicates(allSourceSetCycles));
|
||||
Collection<Chunk<ModuleSourceSet>> chunks = GraphAlgorithms.getInstance().computeStronglyConnectedComponents(graph);
|
||||
List<Chunk<ModuleSourceSet>> sourceSetCycles =
|
||||
removeSingleElementChunks(removeDummyNodes(filterDuplicates(removeSingleElementChunks(chunks))));
|
||||
|
||||
List<String> cycles = new ArrayList<String>();
|
||||
|
||||
@@ -128,7 +129,13 @@ public class GeneralProjectSettingsElement extends ProjectStructureElement {
|
||||
|
||||
private boolean isDummy(ModuleSourceSet set) {
|
||||
JavaSourceRootType type = set.getType() == ModuleSourceSet.Type.PRODUCTION ? JavaSourceRootType.SOURCE : JavaSourceRootType.TEST_SOURCE;
|
||||
return myContext.getModulesConfigurator().getRootModel(set.getModule()).getSourceRoots(type).isEmpty();
|
||||
ModuleRootModel rootModel = myContext.getModulesConfigurator().getRootModel(set.getModule());
|
||||
for (ContentEntry entry : rootModel.getContentEntries()) {
|
||||
if (!entry.getSourceFolders(type).isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean containsModuleWithInheritedSdk() {
|
||||
@@ -141,7 +148,7 @@ public class GeneralProjectSettingsElement extends ProjectStructureElement {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static Collection<Chunk<ModuleSourceSet>> extractCycles(Collection<Chunk<ModuleSourceSet>> chunks) {
|
||||
private static List<Chunk<ModuleSourceSet>> removeSingleElementChunks(Collection<Chunk<ModuleSourceSet>> chunks) {
|
||||
return ContainerUtil.filter(chunks, new Condition<Chunk<ModuleSourceSet>>() {
|
||||
@Override
|
||||
public boolean value(Chunk<ModuleSourceSet> chunk) {
|
||||
|
||||
Reference in New Issue
Block a user