MCPcopy Create free account
hub / github.com/Persper/code-analytics / _second_phase

Method _second_phase

persper/graphs/call_commit_graph.py:238–281  ·  view source on GitHub ↗
(self, diff, commit, old_fname=None, new_fname=None)

Source from the content-addressed store, hash-verified

236 return 0
237
238 def _second_phase(self, diff, commit, old_fname=None, new_fname=None):
239
240 if ((old_fname and self.fname_filter(old_fname)) or
241 (new_fname and self.fname_filter(new_fname))):
242
243 adds, dels = self.parse_patch(diff.diff)
244 if adds is None or dels is None:
245 return -1
246 modified_func, inv_modified_func = {}, {}
247
248 if old_fname is not None:
249 old_root = self._get_xml_root(commit.parents[0], old_fname)
250 if old_root is None:
251 return -1
252
253 if self.lang == 'c':
254 modified_func = get_changed_functions(
255 *get_func_ranges_c(old_root), adds, dels)
256 elif self.lang == 'java':
257 modified_func = get_changed_functions(
258 *get_func_ranges_java(old_root), adds, dels)
259
260 if new_fname is not None:
261 inv_adds, inv_dels = _inverse_diff_result(adds, dels)
262 new_root = self._get_xml_root(commit, new_fname)
263 if new_root is None:
264 return -1
265
266 if self.lang == 'c':
267 inv_modified_func = get_changed_functions(
268 *get_func_ranges_c(new_root), inv_adds, inv_dels)
269 elif self.lang == 'java':
270 inv_modified_func = get_changed_functions(
271 *get_func_ranges_java(new_root), inv_adds, inv_dels)
272
273 for func_name in modified_func:
274 if func_name in self.G:
275 self.history[commit.hexsha][func_name] = \
276 modified_func[func_name]
277
278 for func_name in inv_modified_func:
279 if func_name in self.G and func_name not in modified_func:
280 self.history[commit.hexsha][func_name] = \
281 inv_modified_func[func_name]
282
283 def parse_patch(self, patch):
284 additions, deletions = None, None

Callers 4

on_add2Method · 0.95
on_delete2Method · 0.95
on_rename2Method · 0.95
on_modify2Method · 0.95

Calls 7

fname_filterMethod · 0.95
parse_patchMethod · 0.95
_get_xml_rootMethod · 0.95
get_changed_functionsFunction · 0.90
get_func_ranges_cFunction · 0.90
get_func_ranges_javaFunction · 0.90
_inverse_diff_resultFunction · 0.85

Tested by

no test coverage detected