'OpenCV(Test)?Case',\r
'OpenCV(Test)?Runner',\r
'CvException',\r
- 'CvType'\r
)\r
\r
funcs_ignore_list = (\r
'\w+--HashCode',\r
'Mat--MatLong',\r
+ '\w+--Equals',\r
+ 'Core--MinMaxLocResult',\r
)\r
\r
class JavaParser:\r
def clear(self):\r
self.mdict = {}\r
self.tdict = {}\r
+ self.mwhere = {}\r
+ self.twhere = {}\r
self.empty_stubs_cnt = 0\r
self.r1 = re.compile("\s*public\s+(?:static\s+)?(\w+)\(([^)]*)\)") # c-tor\r
self.r2 = re.compile("\s*(?:(?:public|static|final)\s+){1,3}\S+\s+(\w+)\(([^)]*)\)")\r
def get_not_tested(self):\r
mset = self.dict2set(self.mdict)\r
tset = self.dict2set(self.tdict)\r
- return mset - tset\r
+ nottested = mset - tset\r
+ out = set()\r
+\r
+ for name in nottested:\r
+ out.add(name + " " + self.mwhere[name])\r
+\r
+ return out\r
\r
\r
def parse(self, path):\r
if ".svn" in path:\r
return\r
if os.path.isfile(path):\r
- parser.parse_file(path)\r
+ if path.endswith("FeatureDetector.java"):\r
+ for prefix1 in ("", "Grid", "Pyramid", "Dynamic"):\r
+ for prefix2 in ("FAST", "STAR", "MSER", "ORB", "SIFT", "SURF", "GFTT", "HARRIS"):\r
+ parser.parse_file(path,prefix1+prefix2)\r
+ elif path.endswith("DescriptorExtractor.java"):\r
+ for prefix1 in ("", "Opponent"):\r
+ for prefix2 in ("BRIEF", "ORB", "SIFT", "SURF"):\r
+ parser.parse_file(path,prefix1+prefix2)\r
+ elif path.endswith("GenericDescriptorMatcher.java"):\r
+ for prefix in ("OneWay", "Fern"):\r
+ parser.parse_file(path,prefix)\r
+ elif path.endswith("DescriptorMatcher.java"):\r
+ for prefix in ("BruteForce", "BruteForceHamming", "BruteForceHammingLUT", "BruteForceL1", "FlannBased"):\r
+ parser.parse_file(path,prefix)\r
+ else:\r
+ parser.parse_file(path)\r
elif os.path.isdir(path):\r
for x in os.listdir(path):\r
self.parse(path + "/" + x)\r
return\r
\r
\r
- def parse_file(self, fname):\r
+ def parse_file(self, fname, prefix = ""):\r
+ istest = fname.endswith("Test.java")\r
clsname = os.path.basename(fname).replace("Test", "").replace(".java", "")\r
- clsname = clsname[0].upper() + clsname[1:]\r
+ clsname = prefix + clsname[0].upper() + clsname[1:]\r
for cls in classes_ignore_list:\r
if re.match(cls, clsname):\r
return\r
f = open(fname, "rt")\r
+ linenum = 0\r
for line in f:\r
+ linenum += 1\r
m1 = self.r1.match(line)\r
m2 = self.r2.match(line)\r
m3 = self.r3.match(line)\r
#if "public" in line:\r
#print "UNRECOGNIZED: " + line\r
continue\r
- d = (self.mdict, self.tdict)["test" in func]\r
+ d = (self.mdict, self.tdict)[istest]\r
+ w = (self.mwhere, self.twhere)[istest]\r
func = re.sub(r"^test", "", func)\r
func = clsname + "--" + func[0].upper() + func[1:]\r
args_str = args_str.replace("[]", "Array").replace("...", "Array ")\r
args_str = re.sub(r"List<(\w+)>", "ListOf\g<1>", args_str)\r
+ args_str = re.sub(r"List<(\w+)>", "ListOf\g<1>", args_str)\r
args = [a.split()[0] for a in args_str.split(",") if a]\r
func_ex = func + "".join([a[0].upper() + a[1:] for a in args])\r
+ func_loc = fname + " (line: " + str(linenum) + ")"\r
skip = False\r
for fi in funcs_ignore_list:\r
if re.match(fi, func_ex):\r
d[func].append(func_ex)\r
else:\r
d[func] = [func_ex]\r
+ w[func_ex] = func_loc\r
+ w[func] = func_loc\r
+\r
f.close()\r
return\r
\r