|
8 | 8 | import framevpm.learning.approaches.codeMetrics.CodeMetricsApproach;
|
9 | 9 | import framevpm.learning.approaches.ifc.FunctionCallsApproach;
|
10 | 10 | import framevpm.learning.approaches.ifc.IncludesApproach;
|
| 11 | +import framevpm.learning.approaches.naturalness.NaturalnessAndCM; |
11 | 12 | import framevpm.learning.approaches.naturalness.PureNaturalness;
|
12 | 13 | import framevpm.learning.approaches.textmining.BagOfWordsApproach;
|
13 | 14 | import framevpm.learning.model.ApproachResult;
|
|
28 | 29 | public class Application {
|
29 | 30 |
|
30 | 31 | public static void main(String[] args) throws IOException, ClassNotFoundException {
|
31 |
| - ResourcesPathExtended pathExtended = new ResourcesPathExtended("/Users/matthieu/Desktop/data7/"); |
32 |
| - ExporterExtended exporterExtended = new ExporterExtended(pathExtended); |
33 |
| - CSVExporter csvExporter = new CSVExporter(pathExtended); |
34 |
| - Project[] projects = new Project[]{ |
35 |
| - CProjects.OPEN_SSL, |
36 |
| - CProjects.WIRESHARK |
37 |
| - //, CProjects.LINUX_KERNEL |
38 |
| - }; |
| 32 | + //"/Users/matthieu/Desktop/data7/" |
| 33 | + if (args.length == 1) { |
| 34 | + ResourcesPathExtended pathExtended = new ResourcesPathExtended(args[0]); |
| 35 | + ExporterExtended exporterExtended = new ExporterExtended(pathExtended); |
| 36 | + CSVExporter csvExporter = new CSVExporter(pathExtended); |
| 37 | + Project[] projects = new Project[]{ |
| 38 | + CProjects.OPEN_SSL, |
| 39 | + CProjects.WIRESHARK, |
| 40 | + CProjects.LINUX_KERNEL |
| 41 | + }; |
39 | 42 |
|
40 |
| - ClassModel[] classModels = new ClassModel[]{ |
41 |
| - new VulNotVul(), |
42 |
| - new BugVul(), |
43 |
| - new VulBugClear() |
44 |
| - }; |
| 43 | + ClassModel[] classModels = new ClassModel[]{ |
| 44 | + new VulNotVul(), |
| 45 | + new BugVul(), |
| 46 | + new VulBugClear() |
| 47 | + }; |
45 | 48 |
|
46 |
| - for (Project project : projects) { |
| 49 | + for (Project project : projects) { |
47 | 50 |
|
48 |
| - for (ClassModel model : classModels) { |
49 |
| - ExperimentSplitter[] experimentSplitters = {new GeneralSplit(pathExtended, project.getName()), new ThreeLastSplit(pathExtended, project.getName())}; |
| 51 | + for (ClassModel model : classModels) { |
| 52 | + ExperimentSplitter[] experimentSplitters = {new GeneralSplit(pathExtended, project.getName()), new ThreeLastSplit(pathExtended, project.getName())}; |
50 | 53 |
|
51 | 54 |
|
52 |
| - for (ExperimentSplitter experimentSplitter : experimentSplitters) { |
53 |
| - List<Experiment> experimentList = new ExporterExtended(pathExtended).loadExperiments(project.getName(), experimentSplitter.getName()); |
54 |
| - if (experimentList == null) { |
55 |
| - experimentList = experimentSplitter.generateExperiment(); |
56 |
| - } |
57 |
| - Approach[] approaches = { |
58 |
| - new PureNaturalness(experimentList, model), |
59 |
| - new CodeMetricsApproach(experimentList, model), |
60 |
| - new IncludesApproach(experimentList, model), |
61 |
| - new FunctionCallsApproach(experimentList, model), |
62 |
| - new BagOfWordsApproach(experimentList, model) |
63 |
| - }; |
| 55 | + for (ExperimentSplitter experimentSplitter : experimentSplitters) { |
| 56 | + List<Experiment> experimentList = new ExporterExtended(pathExtended).loadExperiments(project.getName(), experimentSplitter.getName()); |
| 57 | + if (experimentList == null) { |
| 58 | + experimentList = experimentSplitter.generateExperiment(); |
| 59 | + } |
| 60 | + Approach[] approaches = { |
| 61 | + new NaturalnessAndCM(experimentList, model), |
| 62 | + new PureNaturalness(experimentList, model), |
| 63 | + new CodeMetricsApproach(experimentList, model), |
| 64 | + new IncludesApproach(experimentList, model), |
| 65 | + new FunctionCallsApproach(experimentList, model), |
| 66 | + new BagOfWordsApproach(experimentList, model) |
| 67 | + }; |
64 | 68 |
|
65 |
| - for (Approach approach : approaches) { |
66 |
| - for (String classifier : getClassifiers()) { |
67 |
| - approach.prepareInstances(); |
68 |
| - runwithSmote(exporterExtended, csvExporter, project, model, experimentSplitter, approach, classifier, true); |
69 |
| - runwithSmote(exporterExtended, csvExporter, project, model, experimentSplitter, approach, classifier, false); |
| 69 | + for (Approach approach : approaches) { |
| 70 | + for (String classifier : getClassifiers()) { |
| 71 | + approach.prepareInstances(); |
| 72 | + runwithSmote(exporterExtended, csvExporter, project, model, experimentSplitter, approach, classifier, true); |
| 73 | + runwithSmote(exporterExtended, csvExporter, project, model, experimentSplitter, approach, classifier, false); |
| 74 | + } |
70 | 75 | }
|
71 | 76 | }
|
72 | 77 | }
|
73 | 78 | }
|
| 79 | + } else { |
| 80 | + throw new RuntimeException("Not enough arguments"); |
74 | 81 | }
|
75 | 82 |
|
76 | 83 | }
|
|
0 commit comments