package hudson.plugins.emma;
import hudson.ExtensionPoint;
import hudson.model.Build;
import hudson.model.TaskListener;
import java.io.Serializable;
/**
* Rule object encapsulates the logic to mark {@link CoverageObject}s as "failed".
* Such logic is used to mark builds as unstable when certain condition is met.
*
* <p>
* For example, one can define a rule where "line coverage must be better than 50%
* for any class", and if this rule is violated, the build will be marked as
* unstable.
*
* <p>
* The rule instances are persisted as a part of {@link Build}, so make sure
* to make your class serializable. This is so that we can consistently mark
* coverage results even if the job configuration changes.
*
* @author Kohsuke Kawaguchi
*/
public abstract class Rule implements Serializable, ExtensionPoint {
public abstract void enforce(CoverageReport report, TaskListener listener);
private static final long serialVersionUID = 1L;
}