-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathRunner.py
77 lines (63 loc) · 2.91 KB
/
Runner.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# coding:utf-8
from Main.ProjectSimCounter import ProjectSimCounter
from Main.DescriptionSimCounter import DescriptionSimCounter
from Main.DescriptionSimCounter2 import DescriptionSimCounter2
from Main.DescriptionCluster import DescriptionCluster
from Main.NoDescription import NoDescription
from Main.ContextAwareRecommendation import ContextAwareRecommendation
from Main.ContextAwareRecommendation2 import ContextAwareRecommendation2
from Main.BaselineBuilder import BaselineBuilder
# from APIUsagePatternSearcher import APIUsagePatternSearcher
from Main.Evaluation import Evaluation
import time
class Runner:
def __init__(self, OPTIONS, custom_args):
self.OPTIONS = OPTIONS
self.custom_args = custom_args
def start(self):
# start_time = time.clock()
# print("[+] Starting ... ")
# # (1)
descriptionSimCounter = DescriptionSimCounter(self.OPTIONS, self.custom_args, 0)
descriptionSimCounter.start()
print("[+] Description Similarity done.")
# (2)
# noDescription = NoDescription(self.OPTIONS, self.custom_args)
# noDescription.start()
# Compute similarity between projects
projectSimCounter = ProjectSimCounter(self.OPTIONS, self.custom_args)
projectSimCounter.computeProjectSimilarity()
print("[+] SimilarityCalculator done.")
# Consider 10 closest projects, 6 top-closet method declarations,
# The training projects contain at least 6 declarations
# note here ------------------
contextAwareRecommendation = ContextAwareRecommendation2(self.OPTIONS, self.custom_args, 10, 6, 6, 1, 0)
contextAwareRecommendation.recommendation()
print("[+] Recommendation engine done.")
# note here ------------------
#
# end = time.clock()
# running_time = end - start_time
# with open("runtime.txt", "a+") as fw:
# fw.write(str(running_time) + "\n")
#
# baselinebuilder = BaselineBuilder(self.OPTIONS, self.custom_args)
# baselinebuilder.start()
# # Match the API usage pattern
# apiUsagePatternSearcher = APIUsagePatternSearcher(self.OPTIONS, self.custom_args, 20)
# apiUsagePatternSearcher.searchAPIUsagePatterns()
# print("[+] Match API usage pattern done.")
# note here ------------------
print("[+] Start evaluation.")
evaluation = Evaluation(self.OPTIONS, self.custom_args, 1)
evaluation.start()
evaluation = Evaluation(self.OPTIONS, self.custom_args, 5)
evaluation.start()
evaluation = Evaluation(self.OPTIONS, self.custom_args, 10)
evaluation.start()
evaluation = Evaluation(self.OPTIONS, self.custom_args, 15)
evaluation.start()
evaluation = Evaluation(self.OPTIONS, self.custom_args, 20)
evaluation.start()
print("[+] Evaluation done.")
# note here ------------------