mirror of
https://github.com/ysoftdevs/DependencyCheck.git
synced 2026-03-28 20:02:16 +01:00
Issue #730: Remove redundant method from Settings
Pull file loading from loadSuppressionData() to make it easier to read Add test assertion to happy case Ant task test
This commit is contained in:
@@ -127,6 +127,8 @@ public class DependencyCheckTaskTest {
|
|||||||
buildFileRule.executeTarget(antTaskName);
|
buildFileRule.executeTarget(antTaskName);
|
||||||
|
|
||||||
// THEN the ant task executed without error
|
// THEN the ant task executed without error
|
||||||
|
final File report = new File("target/dependency-check-report.html");
|
||||||
|
assertTrue("Expected the DependencyCheck report to be generated", report.exists());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -99,13 +99,12 @@ public abstract class AbstractSuppressionAnalyzer extends AbstractAnalyzer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the suppression rules file.
|
* Loads all the suppression rules files configured in the {@link Settings} singleton.
|
||||||
*
|
*
|
||||||
* @throws SuppressionParseException thrown if the XML cannot be parsed.
|
* @throws SuppressionParseException thrown if the XML cannot be parsed.
|
||||||
*/
|
*/
|
||||||
private void loadSuppressionData() throws SuppressionParseException {
|
private void loadSuppressionData() throws SuppressionParseException {
|
||||||
final SuppressionParser parser = new SuppressionParser();
|
final SuppressionParser parser = new SuppressionParser();
|
||||||
File file = null;
|
|
||||||
try {
|
try {
|
||||||
final InputStream in = this.getClass().getClassLoader().getResourceAsStream("dependencycheck-base-suppression.xml");
|
final InputStream in = this.getClass().getClassLoader().getResourceAsStream("dependencycheck-base-suppression.xml");
|
||||||
rules = parser.parseSuppressionRules(in);
|
rules = parser.parseSuppressionRules(in);
|
||||||
@@ -117,67 +116,80 @@ public abstract class AbstractSuppressionAnalyzer extends AbstractAnalyzer {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load all the suppression file paths
|
||||||
for (final String suppressionFilePath : suppressionFilePaths) {
|
for (final String suppressionFilePath : suppressionFilePaths) {
|
||||||
LOGGER.debug("Loading suppression rules from '{}'", suppressionFilePath);
|
loadSuppressionFile(parser, suppressionFilePath);
|
||||||
|
}
|
||||||
|
LOGGER.debug("{} suppression rules were loaded.", rules.size());
|
||||||
|
}
|
||||||
|
|
||||||
boolean deleteTempFile = false;
|
/**
|
||||||
try {
|
* Load a single suppression rules file from the path provided using the parser provided.
|
||||||
final Pattern uriRx = Pattern.compile("^(https?|file)\\:.*", Pattern.CASE_INSENSITIVE);
|
*
|
||||||
if (uriRx.matcher(suppressionFilePath).matches()) {
|
* @param parser the parser to use for loading the file.
|
||||||
deleteTempFile = true;
|
* @param suppressionFilePath the path to load.
|
||||||
file = FileUtils.getTempFile("suppression", "xml");
|
* @throws SuppressionParseException thrown if the suppression file cannot be loaded and parsed.
|
||||||
final URL url = new URL(suppressionFilePath);
|
*/
|
||||||
try {
|
private void loadSuppressionFile(final SuppressionParser parser, final String suppressionFilePath) throws SuppressionParseException {
|
||||||
Downloader.fetchFile(url, file, false);
|
LOGGER.debug("Loading suppression rules from '{}'", suppressionFilePath);
|
||||||
} catch (DownloadFailedException ex) {
|
|
||||||
Downloader.fetchFile(url, file, true);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
file = new File(suppressionFilePath);
|
|
||||||
|
|
||||||
if (!file.exists()) {
|
File file = null;
|
||||||
try (InputStream suppressionsFromClasspath = this.getClass().getClassLoader().getResourceAsStream(suppressionFilePath)) {
|
boolean deleteTempFile = false;
|
||||||
if (suppressionsFromClasspath != null) {
|
try {
|
||||||
deleteTempFile = true;
|
final Pattern uriRx = Pattern.compile("^(https?|file)\\:.*", Pattern.CASE_INSENSITIVE);
|
||||||
file = FileUtils.getTempFile("suppression", "xml");
|
if (uriRx.matcher(suppressionFilePath).matches()) {
|
||||||
try {
|
deleteTempFile = true;
|
||||||
org.apache.commons.io.FileUtils.copyInputStreamToFile(suppressionsFromClasspath, file);
|
file = FileUtils.getTempFile("suppression", "xml");
|
||||||
} catch (IOException ex) {
|
final URL url = new URL(suppressionFilePath);
|
||||||
throwSuppressionParseException("Unable to locate suppressions file in classpath", ex);
|
try {
|
||||||
}
|
Downloader.fetchFile(url, file, false);
|
||||||
|
} catch (DownloadFailedException ex) {
|
||||||
|
Downloader.fetchFile(url, file, true);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
file = new File(suppressionFilePath);
|
||||||
|
|
||||||
|
if (!file.exists()) {
|
||||||
|
try (InputStream suppressionsFromClasspath = this.getClass().getClassLoader().getResourceAsStream(suppressionFilePath)) {
|
||||||
|
if (suppressionsFromClasspath != null) {
|
||||||
|
deleteTempFile = true;
|
||||||
|
file = FileUtils.getTempFile("suppression", "xml");
|
||||||
|
try {
|
||||||
|
org.apache.commons.io.FileUtils.copyInputStreamToFile(suppressionsFromClasspath, file);
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throwSuppressionParseException("Unable to locate suppressions file in classpath", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (file != null) {
|
}
|
||||||
if (!file.exists()) {
|
if (file != null) {
|
||||||
final String msg = String.format("Suppression file '%s' does not exists", file.getPath());
|
if (!file.exists()) {
|
||||||
LOGGER.warn(msg);
|
final String msg = String.format("Suppression file '%s' does not exists", file.getPath());
|
||||||
throw new SuppressionParseException(msg);
|
LOGGER.warn(msg);
|
||||||
}
|
throw new SuppressionParseException(msg);
|
||||||
try {
|
|
||||||
rules.addAll(parser.parseSuppressionRules(file));
|
|
||||||
} catch (SuppressionParseException ex) {
|
|
||||||
LOGGER.warn("Unable to parse suppression xml file '{}'", file.getPath());
|
|
||||||
LOGGER.warn(ex.getMessage());
|
|
||||||
throw ex;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (DownloadFailedException ex) {
|
try {
|
||||||
throwSuppressionParseException("Unable to fetch the configured suppression file", ex);
|
rules.addAll(parser.parseSuppressionRules(file));
|
||||||
} catch (MalformedURLException ex) {
|
} catch (SuppressionParseException ex) {
|
||||||
throwSuppressionParseException("Configured suppression file has an invalid URL", ex);
|
LOGGER.warn("Unable to parse suppression xml file '{}'", file.getPath());
|
||||||
} catch (SuppressionParseException ex) {
|
LOGGER.warn(ex.getMessage());
|
||||||
throw ex;
|
throw ex;
|
||||||
} catch (IOException ex) {
|
|
||||||
throwSuppressionParseException("Unable to create temp file for suppressions", ex);
|
|
||||||
} finally {
|
|
||||||
if (deleteTempFile && file != null) {
|
|
||||||
FileUtils.delete(file);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (DownloadFailedException ex) {
|
||||||
|
throwSuppressionParseException("Unable to fetch the configured suppression file", ex);
|
||||||
|
} catch (MalformedURLException ex) {
|
||||||
|
throwSuppressionParseException("Configured suppression file has an invalid URL", ex);
|
||||||
|
} catch (SuppressionParseException ex) {
|
||||||
|
throw ex;
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throwSuppressionParseException("Unable to create temp file for suppressions", ex);
|
||||||
|
} finally {
|
||||||
|
if (deleteTempFile && file != null) {
|
||||||
|
FileUtils.delete(file);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
LOGGER.debug("{} suppression rules were loaded.", rules.size());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -564,18 +564,6 @@ public final class Settings {
|
|||||||
LOGGER.debug("Setting: {}='{}'", key, value);
|
LOGGER.debug("Setting: {}='{}'", key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets a property value from an array.
|
|
||||||
* <p>
|
|
||||||
* Note: each value of the array will be joined by the delimiter {@link Settings#ARRAY_SEP}.
|
|
||||||
*
|
|
||||||
* @param key the key for the property
|
|
||||||
* @param value the value for the property
|
|
||||||
*/
|
|
||||||
static void setArray(String key, String[] value) {
|
|
||||||
setString(key, StringUtils.join(value, ARRAY_SEP));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a property value only if the value is not null.
|
* Sets a property value only if the value is not null.
|
||||||
*
|
*
|
||||||
@@ -608,7 +596,7 @@ public final class Settings {
|
|||||||
*/
|
*/
|
||||||
public static void setArrayIfNotEmpty(String key, String[] value) {
|
public static void setArrayIfNotEmpty(String key, String[] value) {
|
||||||
if (null != value && value.length > 0) {
|
if (null != value && value.length > 0) {
|
||||||
setArray(key, value);
|
setString(key, StringUtils.join(value, ARRAY_SEP));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -336,19 +336,4 @@ public class SettingsTest extends BaseTest {
|
|||||||
assertThat("Expected the property to be set", Settings.getString("key"), is("value1"));
|
assertThat("Expected the property to be set", Settings.getString("key"), is("value1"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Assert {@link Settings#setArray(String, String[])} with multiple values sets a delimited string.
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testSetArraySetsADelimitedString() {
|
|
||||||
// GIVEN an array with values
|
|
||||||
final String[] array = { "value1", "value2" };
|
|
||||||
|
|
||||||
// WHEN setting the array
|
|
||||||
Settings.setArray("key", array);
|
|
||||||
|
|
||||||
// THEN the property is set
|
|
||||||
assertThat("Expected the property to be set", Settings.getString("key"), is("value1,value2"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user