package hudson.plugins.emma.rules; import hudson.model.TaskListener; import hudson.plugins.emma.Rule; import hudson.plugins.emma.CoverageReport; import hudson.plugins.emma.PackageReport; import hudson.plugins.emma.SourceFileReport; /** * Flags a failure if the line coverage of a source file * goes below a certain threashold. */ public class LineCoveragePerSourceFileRule extends Rule { private static final long serialVersionUID = -2869893039051762047L; private final float minPercentage; public LineCoveragePerSourceFileRule(float minPercentage) { this.minPercentage = minPercentage; } public void enforce(CoverageReport report, TaskListener listener) { for (PackageReport pack : report.getChildren().values()) { for (SourceFileReport sfReport : pack.getChildren().values()) { float percentage = sfReport.getLineCoverage().getPercentageFloat(); if (percentage < minPercentage) { listener.getLogger().println("Emma: " + sfReport.getDisplayName() + " failed (below " + minPercentage + "%)."); sfReport.setFailed(); } } } } }