package jdepend.knowledge.domainanalysis.impl;
import jdepend.framework.util.MetricsFormat;
import jdepend.knowledge.domainanalysis.AbstractDomainAnalysis;
import jdepend.knowledge.domainanalysis.AdviseInfo;
import jdepend.knowledge.domainanalysis.StructureCategory;
import jdepend.model.result.AnalysisResult;
public final class SummaryDomainAnalysis extends AbstractDomainAnalysis {
/**
*
*/
private static final long serialVersionUID = 4360237506670726504L;
public SummaryDomainAnalysis() {
super("整体分数小结", "用于对分数进行建议");
}
@Override
protected AdviseInfo doAdvise(String name, AnalysisResult result) {
StringBuilder content = new StringBuilder();
Float score = result.getScore();
if (score != null) {
if (score < 50F) {
content.append("整体得分(" + score + ")偏低");
} else if (score < 70F) {
content.append("整体得分(" + score + ")中等偏低");
} else if (score < 80F) {
content.append("整体得分(" + score + ")中等偏高");
} else {
content.append("整体得分(" + score + ")较高");
}
}
Float relationRationality = result.getRelationRationality();
if (relationRationality != null) {
if (relationRationality < 10F) {
content.append(",存在问题的关系较多(比例为" + MetricsFormat.toFormattedPercent(result.getAttentionRelationScale())
+ ")");
} else if (relationRationality == 40F) {
content.append(",组件间关系合理,恰当");
} else if (relationRationality > 30F) {
content.append(",组件间关系设计得较好(存在问题的关系比例为"
+ MetricsFormat.toFormattedPercent(result.getAttentionRelationScale()) + ")");
}
}
Float balance = result.getBalance();
if (balance != null) {
if (balance < 10F) {
content.append(",内聚性方面做得欠佳");
} else if (balance >= 18F) {
content.append(",内聚性方面做得不错");
}
}
Float distance = result.getDistance();
if (distance != null) {
if (distance < 10F) {
content.append(",抽象程度设计上表现不好");
} else if (distance >= 18F) {
content.append(",抽象程度设计上表现良好");
}
}
Float encapsulation = result.getEncapsulation();
if (encapsulation != null) {
if (encapsulation < 10F) {
content.append(",封装性方面做得欠佳");
} else if (balance >= 18F) {
content.append(",封装性方面做得不错");
}
}
return new AdviseInfo(content.toString());
}
@Override
public StructureCategory getStructureCategory() {
return StructureCategory.Summary;
}
}