155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann/******************************************************************************* 2b9d1b54e300318b470d9fedccc69d75187016444Evgeny Mandrikov * Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors 355fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * All rights reserved. This program and the accompanying materials 455fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * are made available under the terms of the Eclipse Public License v1.0 555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * which accompanies this distribution, and is available at 655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * http://www.eclipse.org/legal/epl-v10.html 755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * 855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * Contributors: 955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * Evgeny Mandrikov - initial API and implementation 1055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * Kyle Lieber - implementation of CheckMojo 1155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * Marc Hoffmann - redesign using report APIs 1255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * 1355fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann *******************************************************************************/ 1455fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannpackage org.jacoco.maven; 1555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann 1655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannimport java.util.List; 1755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann 1855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannimport org.codehaus.plexus.util.StringUtils; 1955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannimport org.jacoco.core.analysis.ICoverageNode.ElementType; 2055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannimport org.jacoco.report.check.Limit; 2155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannimport org.jacoco.report.check.Rule; 2255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann 2355fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann/** 2455fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * Wrapper for {@link Rule} objects to allow Maven style includes/excludes lists 2555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * 2655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann */ 2755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannpublic class RuleConfiguration { 2855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann 2955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann final Rule rule; 3055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann 3155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann /** 3255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * Create a new configuration instance. 3355fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann */ 3455fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann public RuleConfiguration() { 3555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann rule = new Rule(); 3655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann } 3755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann 3855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann /** 3955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * @param element 4055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * element type this rule applies to 41b46b0dc55acdd743c6c4ed0e2ba25b7f68493006Mirko Friedenhagen * TODO: use ElementType directly once Maven 3 is required. 4255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann */ 430dbd9687afce808c115bd843ae596d3c10db9ac5Mirko Friedenhagen public void setElement(final String element) { 440dbd9687afce808c115bd843ae596d3c10db9ac5Mirko Friedenhagen rule.setElement(ElementType.valueOf(element)); 4555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann } 4655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann 4755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann /** 4855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * @param includes 4955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * includes patterns 5055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann */ 5155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann public void setIncludes(final List<String> includes) { 5255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann rule.setIncludes(StringUtils.join(includes.iterator(), ":")); 5355fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann } 5455fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann 5555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann /** 5655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * 5755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * @param excludes 5855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * excludes patterns 5955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann */ 6055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann public void setExcludes(final List<String> excludes) { 6155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann rule.setExcludes(StringUtils.join(excludes.iterator(), ":")); 6255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann } 6355fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann 6455fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann /** 6555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * @param limits 6655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * list of {@link Limit}s configured for this rule 6755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann */ 6855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann public void setLimits(final List<Limit> limits) { 6955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann rule.setLimits(limits); 7055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann } 7155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann 7255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann} 73