package jdepend.knowledge.domainanalysis.impl; import java.util.Collections; import java.util.Iterator; import java.util.List; import jdepend.framework.util.BundleUtil; import jdepend.knowledge.domainanalysis.AbstractDomainAnalysis; import jdepend.knowledge.domainanalysis.AdviseInfo; import jdepend.knowledge.domainanalysis.StructureCategory; import jdepend.model.Component; import jdepend.model.MetricsMgr; import jdepend.model.result.AnalysisResult; import jdepend.model.util.JDependUnitByMetricsComparator; public final class EncapsulationDomainAnalysis extends AbstractDomainAnalysis { /** * */ private static final long serialVersionUID = 2481706787982830019L; public EncapsulationDomainAnalysis() { super("封装性分析器", "用于识别封装性最差的组件"); } @Override protected AdviseInfo doAdvise(String name, AnalysisResult result) { List<Component> components = result.getComponents(); Collections.sort(components, new JDependUnitByMetricsComparator(MetricsMgr.Encapsulation)); Iterator<Component> it = components.iterator(); Component component = null; while (it.hasNext()) { component = it.next(); if (component.isInner() && component.getClassCount() > 1) { AdviseInfo info = new AdviseInfo(); info.setDesc(BundleUtil.getString(BundleUtil.Advise_Encapsulation_Small)); info.addComponentName(component.getName()); return info; } } return null; } @Override public StructureCategory getStructureCategory() { return StructureCategory.EncapsulationDomainAnalysis; } }