Skip to content

Commit c73a721

Browse files
committed
Add configuration for output filename
1 parent 4f61d93 commit c73a721

File tree

7 files changed

+61
-33
lines changed

7 files changed

+61
-33
lines changed

swan_assist/src/main/resources/config.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
log_suffix = _swanassist_log.txt
22
output_dir_name = swan-assist
3-
output_json_suffix = output.json
3+
output_json_suffix = swan_results.json
44
input_json_suffix = config_input.json
55
train_config_file = trainingmethods.json
66
swan_default_param_value = internal
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
output_train_arff_data = false
1+
output_train_arff_data = false
2+
output_file_name = swan_results

swan_core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<groupId>de.upb.cs.swt</groupId>
77
<artifactId>swan_core</artifactId>
88
<packaging>jar</packaging>
9-
<version>1.3.0</version>
9+
<version>1.4.0</version>
1010

1111
<name>SWAN Weakness Detector</name>
1212
<description>SWAN is a machine-learning approach for detection of methods of interest for security in Java libraries.</description>

swan_core/src/main/java/de/fraunhofer/iem/swan/Learner.java

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import de.fraunhofer.iem.swan.data.Category;
1818
import de.fraunhofer.iem.swan.data.Method;
19+
import de.fraunhofer.iem.swan.util.SwanConfig;
1920
import weka.classifiers.Evaluation;
2021
import weka.classifiers.bayes.BayesNet;
2122
import weka.classifiers.bayes.NaiveBayes;
@@ -214,22 +215,8 @@ else if (WEKA_LEARNER_ALL.equals("Logistic"))
214215
throw new Exception("Wrong WEKA learner!");
215216
// System.out.println("Classifier created: " + WEKA_LEARNER_ALL);
216217

217-
Properties config = new Properties();
218-
InputStream input = getClass().getClassLoader().getResourceAsStream("swan_core_config.properties");;
219-
220-
try {
221-
config.load(input);
222-
} catch (IOException e) {
223-
e.printStackTrace();
224-
} finally {
225-
if (input != null) {
226-
try {
227-
input.close();
228-
} catch (IOException e) {
229-
e.printStackTrace();
230-
}
231-
}
232-
}
218+
SwanConfig swanConfig = new SwanConfig();
219+
Properties config = swanConfig.getConfig();
233220

234221
if (Boolean.parseBoolean(config.getProperty("output_train_arff_data"))) {
235222
// Save arff data.
@@ -242,7 +229,6 @@ else if (WEKA_LEARNER_ALL.equals("Logistic"))
242229
fileName = fileName.replace(", ", "_");
243230
saver.setFile(new File("Train_" + fileName + ".arff"));
244231
saver.writeBatch();
245-
246232
}
247233

248234
//System.out.println( "Arff data saved at: " + saver.retrieveFile().getCanonicalPath());

swan_core/src/main/java/de/fraunhofer/iem/swan/Main.java

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
package de.fraunhofer.iem.swan;
22

3+
import de.fraunhofer.iem.swan.data.Category;
4+
import de.fraunhofer.iem.swan.util.SwanConfig;
5+
36
import java.io.File;
47
import java.io.IOException;
5-
import java.util.Arrays;
6-
import java.util.Collections;
7-
import java.util.HashSet;
8-
import java.util.Set;
9-
10-
import de.fraunhofer.iem.swan.data.Category;
8+
import java.util.*;
119

1210
/**
1311
* Runner for SWAN
@@ -215,18 +213,21 @@ private void internalRun(String sourceDir, String trainSourceCode, String trainJ
215213
}
216214
// System.out.println("***** F Measure is " + averageF/iter);
217215

216+
SwanConfig swanConfig = new SwanConfig();
217+
Properties config = swanConfig.getConfig();
218+
String fileName = config.getProperty("output_file_name");
219+
218220
// System.out.println("***** Writing final results");
219221
// Set<String> tmpFiles = Util.getFiles(outputDir);
220222
writer.printResultsTXT(loader.methods(),
221-
outputDir + File.separator + "txt" + File.separator + "output.txt");
223+
outputDir + File.separator + "txt" + File.separator + fileName + ".txt");
222224
writer.writeResultsQWEL(loader.methods(),
223-
outputDir + File.separator + "qwel" + File.separator + "output.qwel");
225+
outputDir + File.separator + "qwel" + File.separator + fileName + ".qwel");
224226
writer.writeResultsSoot(loader.methods(),
225-
outputDir + File.separator + "soot-qwel" + File.separator + "output.sqwel");
226-
writer.printResultsJSON(loader.methods(), outputDir + File.separator + "output.json");
227-
writer.writeResultsQwelXML(loader.methods(), outputDir + File.separator + "xml" + File.separator + "output.xml");
227+
outputDir + File.separator + "soot-qwel" + File.separator + fileName + ".sqwel");
228+
writer.printResultsJSON(loader.methods(), outputDir + File.separator + fileName + ".json");
229+
writer.writeResultsQwelXML(loader.methods(), outputDir + File.separator + fileName + ".xml");
228230
}
229-
230231
}
231232

232233
private double runClassifier(HashSet<Category> categories, boolean cweMode)
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package de.fraunhofer.iem.swan.util;
2+
3+
import java.io.IOException;
4+
import java.io.InputStream;
5+
import java.util.Properties;
6+
7+
/**
8+
* @author Oshando Johnson on 2019-10-11
9+
*/
10+
public class SwanConfig {
11+
12+
private Properties config;
13+
14+
15+
public SwanConfig(){
16+
17+
config = new Properties();
18+
InputStream input = getClass().getClassLoader().getResourceAsStream("swan_core_config.properties");
19+
20+
21+
try {
22+
config.load(input);
23+
} catch (IOException e) {
24+
e.printStackTrace();
25+
} finally {
26+
if (input != null) {
27+
try {
28+
input.close();
29+
} catch (IOException e) {
30+
e.printStackTrace();
31+
}
32+
}
33+
}
34+
}
35+
36+
public Properties getConfig() {
37+
return config;
38+
}
39+
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
output_train_arff_data = false
1+
output_train_arff_data = false
2+
output_file_name = swan_results

0 commit comments

Comments
 (0)