//This product is provided under the terms of EPL (Eclipse Public License)
//version 1.0.
//
//The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php
package org.dtangler.core.analysis.configurableanalyzer;
import org.dtangler.core.analysis.CompositeAnalyzer;
import org.dtangler.core.analysis.DependencyAnalyzer;
import org.dtangler.core.analysisresult.AnalysisResult;
import org.dtangler.core.configuration.Arguments;
import org.dtangler.core.cycleanalysis.CycleValidator;
import org.dtangler.core.dependencies.Dependencies;
import org.dtangler.core.ruleanalysis.ForbiddenDependencyFinder;
import org.dtangler.core.ruleanalysis.RuleCreator;
public class ConfigurableDependencyAnalyzer {
private DependencyAnalyzer analyzer;
public ConfigurableDependencyAnalyzer(Arguments arguments) {
analyzer = buildAnalyzer(arguments);
}
private DependencyAnalyzer buildAnalyzer(Arguments args) {
CompositeAnalyzer analyzer = new CompositeAnalyzer();
analyzer.add(new CycleValidator(args.getCyclesAllowed()));
analyzer.add(new ForbiddenDependencyFinder(new RuleCreator(args
.getForbiddenDependencies(), args.getAllowedDependencies(),
args.getGroups()).createRules()));
return analyzer;
}
public AnalysisResult analyze(Dependencies dependencies) {
analyzer.analyze(dependencies);
AnalysisResult analysisResult = new AnalysisResult(analyzer
.getViolations(), analyzer.getChildViolations(), analyzer
.isValidResult());
return analysisResult;
}
}