All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.is24.deadcode4j.DeadCodeComputer Maven / Gradle / Ivy

There is a newer version: 2.1.0
Show newest version
package de.is24.deadcode4j;

import javax.annotation.Nonnull;
import java.util.Collection;
import java.util.List;
import java.util.Set;

import static com.google.common.collect.Lists.newArrayList;
import static com.google.common.collect.Sets.newHashSet;

/**
 * The DeadCodeComputer computes the {@link DeadCode} based on {@link AnalyzedCode}.
 *
 * @since 2.0.0
 */
public class DeadCodeComputer {

    @Nonnull
    public DeadCode computeDeadCode(@Nonnull AnalyzedCode analyzedCode) {
        Collection deadClasses = determineDeadClasses(analyzedCode);
        return new DeadCode(analyzedCode.getStagesWithExceptions(), analyzedCode.getAnalyzedClasses(), deadClasses);
    }

    @Nonnull
    private Collection determineDeadClasses(@Nonnull AnalyzedCode analyzedCode) {
        Set classesInUse = newHashSet();
        for (Iterable usedClasses : analyzedCode.getCodeDependencies().values()) {
            for (String clazz : usedClasses) {
                classesInUse.add(clazz);
            }
        }

        List deadClasses = newArrayList(analyzedCode.getAnalyzedClasses());
        deadClasses.removeAll(classesInUse);
        return deadClasses;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy