private static ParseResult parseMavenOutput()

in tools/ci/paimon-ci-tools/src/main/java/org/apache/paimon/tools/ci/suffixcheck/ScalaSuffixChecker.java [92:132]


    private static ParseResult parseMavenOutput(final Path path) throws IOException {
        final Set<String> cleanModules = new HashSet<>();
        final Set<String> infectedModules = new HashSet<>();

        final Map<String, DependencyTree> dependenciesByModule =
                DependencyParser.parseDependencyTreeOutput(path);

        for (String module : dependenciesByModule.keySet()) {
            final String moduleName = stripScalaSuffix(module);
            if (isExcluded(moduleName)) {
                continue;
            }
            LOG.trace("Processing module '{}'.", moduleName);

            final List<Dependency> dependencies =
                    dependenciesByModule.get(module).flatten().collect(Collectors.toList());

            boolean infected = false;
            for (Dependency dependency : dependencies) {
                final boolean dependsOnScala = dependsOnScala(dependency);
                final boolean isTestDependency = dependency.getScope().get().equals("test");
                final boolean isExcluded = isExcluded(dependency.getArtifactId());
                LOG.trace("\tdependency:{}", dependency);
                LOG.trace("\t\tdepends-on-scala:{}", dependsOnScala);
                LOG.trace("\t\tis-test-dependency:{}", isTestDependency);
                LOG.trace("\t\tis-excluded:{}", isExcluded);
                if (dependsOnScala && !isTestDependency && !isExcluded) {
                    LOG.trace("\t\tOutbreak detected at {}!", moduleName);
                    infected = true;
                }
            }

            if (infected) {
                infectedModules.add(moduleName);
            } else {
                cleanModules.add(moduleName);
            }
        }

        return new ParseResult(cleanModules, infectedModules);
    }